2017-11-15 1 views
0

나는이처럼 사용 봄 데이터 GemFire ​​와 협력하고있다 :봄 데이터 GemFire ​​고유 제한 조건

저장소 :

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

법인 :

public class Token implements Serializable { 

@Id 
private UUID id; 
private String serial; 

JPA @Column(unique=true)처럼 serial 속성에서 고유성을 적용 할 수 있습니까? 기껏해야 저장시 Exception을 던져야합니다.

+0

왜 시리얼을 고유하게 만드시겠습니까? 이드와 시리얼로 이드를 작곡하는 것에 대해 생각해 보셨습니까? –

+0

이것은 작은 예제 일 뿐이며 단순히 시리얼을 ID로 사용할 수 있음을 알고 있습니다. 하지만 독자적으로 고유해야하는 여러 속성을 갖게되므로 구성된 ID는 작동하지 않습니다. – Domo

답변

1

빠르고 간단한 대답은 아니오입니다. 스프링 데이터 GemFire ​​도 Pivotal GemFire ​​(자체)도 Region에 저장된 개체에 고유 한 속성을 적용하는 기능을 지원하지 않습니다.

JPA (예 : Hibernate)를 사용하는 경우에도 @Column(unique = true)은 RDMBS 테이블 열 (고유성) 제약 조건으로 구현되므로 JPA가 고유성을 적용하기 위해 수행하는 작업은 없습니다. 이 열 제한 조건이 RDBMS 테이블에 없으면 Column(unique = true)이 아니며 효과가 있습니다.

here을 참조하십시오.

이것은

중추적 인 GemFire가 값이 (전체하는 키/값 저장소입니다 ... 고유성은 이후 중추 GemFire, 특히 사실 일 것입니다 데이터 저장소에서 시행 할 필요가 있음을 의미) 객체와 특정 지역에 저장된 객체는 GemFire ​​클러스터에서 분산되어 복제됩니다 (HA 시나리오의 중복성을 위해). 이는 고유성을 적용하는 것을 매우 어렵게 만들뿐만 아니라 매우 비용이 많이 듭니다.

물론 고유 한 열/속성 각각에 대해 값 해시의 메모리 내 데이터 구조를 유지하는 것과 같은 다른 방법으로이를 처리 할 수 ​​있습니다. 그러나 이것은 메모리에 부담을 주며 데이터 구조를 최신 상태로 유지해야합니다. 또한 사용 된 해시 알고리즘에 따라 항상 고유 한 것으로 보장 할 수있는 것은 아닙니다.

그래서 여기에는 좋은 답변이 없습니다.

관련 문제