문제

나는 우리가 새로운 소프트웨어 릴리스가 나오는 상황에 있으며,이 소프트웨어가 구식과 별도의 데이터베이스 (스키마의 중요한 변경)를 사용하려는 상황에 처해 있습니다. 기존 시스템과 기존 시스템이 모두 생산 될 수있는 상당한 기간이있을 것이며 두 데이터베이스 사이에 고유 한 ID가 생성되도록해야합니다 (데이터베이스 A에서 행을 원하지 않습니다. 데이터베이스 b에서 행과 동일한 ID를 갖기 위해. 데이터베이스는 Sybase입니다.

내가 생각해 낸 가능한 솔루션 :

  1. 실제로 많은 숫자를 지원하고 각각 범위를 할당하는 데이터 유형을 사용하십시오.
  2. 한 데이터베이스에 음수 값을 사용하고 양수 값을 사용하십시오.
  3. 데이터베이스를 식별하고 해당 ID와 현재 ID의 조합을 사용하여 키 역할을하는 추가 열을 추가합니다.
  4. 울다.

또 무엇을 할 수 있습니까? 두 개의 데이터베이스가 함께 작동 할 수있는 더 우아한 솔루션이 있습니까? 두 데이터베이스가 같은 서버에있을 것이라고 생각합니다.

도움이 되었습니까?

해결책

나는 이것이 몇 번 일어나는 것을 보았다. 내가 관여 한 사람들에 대해, 우리는 단순히 오래된 공간을 위해 충분히 큰 ID 공간을 할당했습니다 (한동안 작동 중이었기 때문에 얼마나 많은 키를 사용했는지 알았으므로 더 많은 키를 계산할 수있었습니다. '지정된'수명 '이 필요함)는 그 위의 새 데이터베이스의 "ID 시퀀스"를 시작했습니다.

다른 트릭에 대해 추천합니다. 모두 '레거시'앱을 변경해야하기 때문입니다.

다른 팁

이런 종류의 경우 안내 또는 전 세계적으로 고유 한 ID는 편리한 기본 키 일 수 있습니다. 나는 Sybase가 그들을 지원한다고 믿는다.

편집 : 전체 데이터베이스가 이미 정수 기본 키를 기반으로하는 경우 Guids로 전환하는 것은 그다지 실용적이지 않을 수 있습니다.이 경우 GWLLOSA 및 다른 사람들이 제안한 것처럼 데이터베이스 사이의 정수 공간을 분할합니다.

귀하의 경우 EquireIntifier (Guids)를 데이터 유형으로 사용하는 것을 고려할 것입니다. 그들은 당신이 그들을 사용하여 만들 때 독특한 것으로 간주됩니다. 시스템 기능 newid().

CREATE TABLE customer (
   cust_key UNIQUEIDENTIFIER NOT NULL
            DEFAULT NEWID( ),
   rep_key VARCHAR(5),
   PRIMARY KEY(cust_key))

이전 데이터베이스를 합병하기 전에 이전 데이터베이스가 도달 할 수있는 것보다 큰 #을 사용하여 새 데이터베이스를 사전 확인하십시오.

나는 과거에 이것을했고 레코드의 양은 합리적으로 낮아서 초기 레코드 번호로 200,000으로 새 데이터베이스를 시작했습니다. 그런 다음 시간이 왔을 때, 나는 모든 오래된 레코드를 새 시스템으로 마이그레이션했습니다.

완벽하게 운동했습니다!

이 상황을 위해 안내서가 설계되었습니다.

각 데이터베이스에서 비슷한 수의 새 항목을 만들면 시도 할 수 있습니다. ID조차도 하나의 데이터베이스에서 홀수 ID 다른 쪽에서.

고유 한 식별자 데이터 유형을 사용하십시오. MS SQL Server에서 작동하며 인터넷 검색에서 볼 수있는 한 Sybase가 지원합니다.

http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbrfen9/00000099.htm

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top