2009-06-02 2 views
1

이전 버전과의 호환성을 위해 이전 키를 유지하면서 시퀀스 기반 정수 기본 키에서 GUID 기본 키로 최대 절전 클래스를 마이그레이션하는 데 좋은 전략은 무엇입니까?이전 버전과의 호환성을 위해 이전 키를 유지하면서 시퀀스 기반 정수 기본 키에서 GUID 기본 키로 hibernate 클래스를 마이그레이션 하시겠습니까?

기본 클래스에 DB의 시퀀스에서 생성 된 Long 기본 키가있는 광범위한 클래스 계층 구조 (조인 된 하위 클래스 모델 사용)가 있습니다.

우리는 GUID 기본 키로 전환하려고하지만 레거시 응용 프로그램에 대한 이전 기본 키 (이전 및 새로 만든 콘텐츠 모두)를 유지하려고합니다. 구현은 매우 간단합니다 (기본 키를 GUID로 변경하고 새로운 콘텐츠의 콘텐츠 ID를 채우기위한 인터셉터 추가).주의해야 할 함정이 있습니까? "우리가 길이가 항상 많은입니다 그래서 PK가 GUID 것을 알고있다"와 같은

답변

0

나는 꽤 솔루션 생각할 수는 없지만, GUID를 보유하고 현재 존재하는 모든 레코드에 대한 ID를 자동으로 생성하고 거기에서부터 이동하십시오. 그것은 약간 냄새가 나지만 당신이 나에게 묻는다면 같은 분야에 호환되지 않는 타입을 저장하는 것보다 낫습니다.

0

바보 버그 ... 나는 다른 필드를 만들 것

1

정말 하시겠습니까?

나는 GUID를 원하지만 데이터베이스 PK가되기를 정말로 원하십니까? 내가 수행 한 비공식적 인 테스트에서 조인/검색에 대해 GUID PK를 사용하는 경우 정수 PK와 비교하여 약 10-15 %의 히트가 있음을 보여줍니다. 현재 인구에서 GUID를 사용하여 몇 가지 테스트를 시도하고 성능에 미치는 영향을 확인하는 것이 좋습니다. 테이블에 고유하게 인덱싱 된 GUID 열을 추가하고 PK를 그대로 두는 것이 좋습니다.

+0

더 많은 연구에 따르면 varchar로 GUID와 UUID로 GUID간에 성능 차이가있을 수 있습니다. 대부분의 dbs는 내부적으로 숫자가 아닌 문자열로 표시된 UUID 데이터 유형을 지원합니다. uuid 데이터 유형을 사용할 수있을 때 사용하는 것이 좋습니다. – AngerClown

관련 문제