묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
XE에서는 왜 모든 테이블의 pk 를 xe_sequence 로 관리하나요?
2015.08.19 01:43
xe로 모 서비스를 마이그레이션 중입니다.
기존 서비스에서 사용하던 category 를 xe로 그대로 옮기려다보니
기존 서비스의 category pk를 pk 문제로 인해 xe의 category에 그대로 가지고 오는데 문제가 좀 있네요..
왜 xe에서는 모든 테이블의 pk 를 xe_sequence 로 관리하는지,
xe_member 과 xe_document 의 pk 가 중복되어도 문제가 생기지는 않는지
문의드립니다 ㅠ
시퀀스를 사용하도록 한 것은 XE를 처음 개발할 당시 (2007년경) 여러 DBMS를 지원하면서 일관성을 유지할 필요 때문이었던 것으로 기억합니다. DBMS마다 auto_increment를 지원하는 방식이 다르고, 큐브리드 초기버전은 아예 지원조차 하지 않았고, 인서트 도중 오류가 발생하거나 서버를 재시작했을 때 auto_increment 값을 처리하는 방식도 제각각이었기 때문에 그냥 별도로 구현해버린 거지요.
사이트 내의 어떤 정보라도 유니크한 시퀀스 번호로 관리할 수 있도록 하는 야심찬 계획도 있었는지는 모르겠지만, 실제로는 거의 체크하지도 않습니다. 따라서 회원번호 123인 회원과 문서번호 123인 문서가 동시에 존재한다고 특별히 문제가 생기지는 않을 듯 합니다. 불가피한 경우라면 그렇게 사용하셔도 됩니다.
데이터를 정리하면서 xe_sequence를 자동으로 생성하려면 이 팁을 활용하셔도 됩니다.