簡體   English   中英

Spring Data GemFire唯一約束

[英]Spring Data GemFire unique constraint

我正在使用Spring Data GemFire並像這樣使用它:

庫:

@Region("Token")
public interface TokenRepository extends GemfireRepository<Token, String> {}

實體:

public class Token implements Serializable {

@Id
private UUID id;
private String serial;

是否可以像JPAs @Column(unique=true)一樣在serial屬性上實施唯一性? 充其量最好應該在保存時拋出Exception

快速簡單的答案是“否”。 Spring Data GemFire和Pivotal GemFire(本身)都不支持對存儲在Region中的對象實施唯一屬性的功能。

即使在使用JPA(例如Hibernate)時, @Column(unique = true)也作為RDMBS表列(唯一性)約束實現,因此JPA並沒有采取任何措施來強制唯一性。 如果此列約束是不存在的RDBMS表,然后Column(unique = true)將沒有任何效果。

這里

這意味着需要在數據存儲中實施唯一性,這對於Pivotal GemFire尤其如此,因為...

Pivotal GemFire是一個鍵/值存儲,其中的值是您的(整個)對象,並且存儲在特定區域中的對象將在整個GemFire集群中分布和復制(用於HA場景中的冗余),這不僅會使強制實施非常獨特困難,但也很昂貴(例如檢查很費時間)。

當然,還有其他方法可以處理此問題,例如為每個唯一列/屬性保留值哈希的內存數據結構。 但是,這給內存帶來壓力,您還需要保持數據結構為最新。 而且,根據所使用的哈希算法,並非始終保證它們嚴格唯一。

因此,這里確實沒有一個好的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM