일련의 값이 항상 동일한 ID를 생성하고 고유해야하는 방법을 찾아야합니다.동일한 값에서 고유 ID를 생성하는 방법
이 주된 이유는 많은 조인을해야하기 전에 하나의 비교로 쿼리를 빠르게하는 것입니다. 내 도메인을 알고 슬프게도 값이 닫히지 않습니다 (즉, 무엇이든 관련 될 수 있습니다).
해시로 tryied하지만 정의상 해시 함수가 고유성을 보장하지 않습니다. 방법이 있습니까? 나는 장치의 다른 세트에서 오는 이벤트 상관 관계 시스템하고 있어요
좀 더 상황 :
편집 할 수 있습니다. 상관 관계는 이벤트의 일부를 통해 계산된다
속성 : 그것은 어디에서 온에서
- 합니다.
- 어떤 종류의 이벤트입니까?
- 다른 그룹에서 같은 종류의 이벤트가 다르면 그 값이 다릅니다.
예를 들어, 이와 같은 것을 생각해보십시오. 내 장치가 냉장고라고 상상해보십시오. 그것은 그것의 내부에있는 온도와 음식에 관한 사건을 보냅니다. 그래서, 우리는이 순서로 이벤트를 수신 상상 : 유형 temperature
의
Event1: {type: temperature, values: [{temperature: -1]}
Event2: {type: food, values: [{group: vegetable, name: brocollis, quantity: 2, weight: 0.1]}
Event3: {type: food, values: [{group: vegetable, name: lettuce, quantity: 1, weight: 0.1]}
Event4: {type: temperature, values: [{temperature: -5]}
모든 이벤트는 상관 관계가되어야하지만, 유형 food
의 상관 관계도 그 name
및 group
에서 제공됩니다. 즉, 상관 관계 식별자의 수는 다양합니다.
이 상관 관계는 그것은 내가 상관 관계를 식별하는 값을 저장 식별자 배열 내부의이
@Entity
public class EventCorrelation {
@Id @GeneratedValue
@Audit
private Long id;
@ElementCollection
@CollectionTable(
name = "evt_corr_extra_id",
joinColumns = @JoinColumn(name = "correlation_id"))
@Column(name = "extra_id")
@LazyCollection(LazyCollectionOption.TRUE)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Collection<String> identifiers;
// getters/setters
}
같은 구조에 저장됩니다. 이벤트 상관 관계를 검색하는 쿼리의 속도를 높이고 내 첫 번째 아이디어는 상관 관계 identifiers
에서 고유 한 ID를 생성하는 것이 었습니다.
특정 이벤트에서 특정 속성이 상관 식별자임을 알고있는 지식 데이터베이스가 있습니다.
팁이 있습니까?
좋은 대답을 얻으려면 좀 더 많은 컨텍스트를 제공해야한다고 생각합니다. 어떤 종류의 입력 데이터가 있고 어떤 종류의 출력이 필요합니까? 당신이 질의와 조인에 대해 언급했기 때문에 이것은 실제로 Java가 아닌 SQL 질문입니까? – Christoffer
또한 정의에 따라 해시가 고유성을 보장하지 않는다는 사실이 옳지 않습니다. 충돌이없는 해시는 '완벽한 해시'라고 불리며, 전체 입력 집합을 알고있는 경우 매우 유용합니다. – Christoffer
확인. 더 많은 맥락을 줄 것이다. 그리고 저는 알지만 완벽한 해시를 만들 수 있습니다. 하지만 슬프게도 나는 모든 입력 집합을 모르지만 그것의 일부입니다. –