포럼
DB 레코드의 시리얼번호의 통합시퀀스에 대해서
2013.02.06 01:44
Xe의 DB레코드의 시리얼번호 통합시퀀스에 대해서
Xe의 DB구조에서 특이한 점은 각 테이블의 시리얼 번호부여를 통합시퀀스에 의해 부여됩니다.
Xe는 각 테이블간 연관성은 아이디 기준으로 매칭되는게 아니라..
통합시퀀스에 의해 부여된 각 테이블의 시리얼번호 기준입니다.
통합시퀀스에 의해 각 테이블의 시리얼번호 생성과정 현상
1) 싸이트에 여려종류들의 모듈들이 설치되어 1,000개의 DB테이블이 생성되었고,
각 테이블들은 각각 10만개씩 레코드가 생성되었다고 가정한다면
전체 레코드의 시리얼번호는 1억개의 레코드 시리얼번호가 생성됩니다.
즉, 통합시퀀스에 의해 생성된 1억개의 레코드 시리얼번호는
각기 테이블이 달라도 서로 중복되지 않는 유일성의 번호를 갖게됩니다.
2) 쪽지테이블과 회원테이블을 추가로 예를 들면
회원수가 100,000명이고 100,000번째 회원의 멤버시리얼번호가 700,000만번 이라고 가정하에
회원100,000명이 각각 100명씩 친구들에게 쪽지보내기를 하면 통합시퀀스 시리얼은 10,000,000번이 생성되고
바로 뒤에 가입한 회원의 멤버시리얼번호는 10,700,001번째가 됩니다.
앞뒤 회원의 멤버시리얼번호 갭은 10,000,000번 차이가 발생합니다.
이렇게 앞뒤 회원간의 멤버시리얼 번호의 갭이 엉청난 차이로 벌어지게 되는데 리스크 측면에서 궁금합니다.
여기서 DB레코드 시리얼번호를 통합시퀀스 체계로 관리하는 것에 대해서
1. 왜 통합번호로 관리할려고 하는지 그 이유가 궁금하고,.
2. 이것이 싸이트 운영에서 어떤 특장점이 있는지 궁금하고.
3. 싸이트가 네이버 많큼은 아니더라도 중대형으로 커졌을때 어떤 점이 좋고 안좋은지 궁금한데요.
통합시퀀스 체계가 개발측면에서 어떤 관점이 있는지요?
댓글 5
-
푸시아
2013.02.06 02:04
-
고이풀
2013.02.06 14:37
쪽지보내기 10만개 발생했을때 쪽지테이블의 레코드 시리얼이번호가 10만개 증가하면서
통합시퀀스의 다음 순번이 기존 번호에 10만번 더한 값이 다음번호로 대기하다가
어느 테이블에서 레코드가 새로 생성될때 최종시퀀스에 담아둔 번호가 해당 테이블의 레코드 시리얼번호로 부여됩니다.
만일 여기서 쪽지10만개를 삭제하게 되면 10만개가 공백이 되지만
어느 테이블에서 레코드가 생성될때 새로 부여되는 번호는 공백의 번호로 차고 들어가는 것이 아니라 통합시퀀스 번호에 담아둔 번호를 부여받게 됩니다.
그래서 각 테이블의 레코드 시리얼번호를 보면 널뛰기로 엉청 큰 갭차이로 부여되게 되는 것이죠.
회원테이블의 멤버시리얼 번호도 이와 같이 통합시퀀스에 의해 부여되기 때문에
10만개의 쪽지 보내기 전과 후의 멤버시리얼 번호 갭은 10만번의 갭 차이로 부여되게 됩니다.
그래서 DB작업 할때 시퀀스 테이블은 가급적 안만지는게 좋겠죠.
시퀀스테이블이 초기화 되면 새로 부여되는 멤버시리얼 번호가 중간의 공백의 번호로
차고 들어가 다른 게시글등의 테이블의 데이타와 매칭이 어긋나는 경우가 발생할 수 있습니다. 이럴경우 다른 사람이 쓴 글이 내가 쓴글로 올라오는 경우가 발생될수도 있죠. -
푸시아
2013.02.06 15:44
그게 아니라 모듈을 제작할때 getnextsequence() 인가 함수를 호출해서 다음 시퀀스 넘버를 부여받을 수 있는데요.
content의 경우는 카테고리도 있고, 다큐멘트도 있고 글 하나 올릴때 여러가지 시퀀스넘버가 부여되는곳이 많아요.
시퀀스는 정확히 1씩 증가합니다. 널뛰기 하지 않아요.
저는 고이풀님 글에서 어짜피 srl을 부여하면서 쓸데 없이 시퀀스 테이블을 이중으로 크게 만드는거 아니냐로 해석했네요.
그래서 테이블이 10000개 단위로 삭제되지 않는지 했던거구요.
하지만 확인되지 않은것이라 좀 그렇기는 하네요.
-
criuce
2013.02.06 10:10
같은 인덱스를 쓰더라도 ai와 단순 인덱싱은 성능차이가 생기는데여 통합시퀀스는 이점에서 단점이 있습니다.
하지만 개발면에서는 장점이 있는데요, 하나의 고유숫자키만을 가지고도 이 키가 어느 스키마에 쓰이는지를 구별할수 있고 무조건 키값이 하나이니 데이터 변환과 같은 부분에서도 장점이 있죠.
사이트가 네이버 만큼 커지면 xe는 쓸수가 없습니다. 사실 동접자수 만명 넘어가면 기존 솔루션이 아닌 자체 솔루션을 구축해야 하는게 맞는거구요. -
고이풀
2013.02.06 14:49
개발적 측면에서 고유숫자키만을 가지고도 이 키가 어느 스키마에 쓰이는지를 구별할수 있고 무조건 키값이 하나이니 데이터 변환과 같은 부분에서도 장점이 있다고 하셨는데요. 그럼 개발팀에서 이것 때문에 통합시퀀스 체계로 한것인지 궁금해요..더 궁금한것은 그 장점이 구체적으로 어떤때 유용한것인지 이해를 못하겠어요.
오히려 Xe사용하다가 중대형으로 커졌을때 자체솔루션으로 옮길려면 데이타마이징을 해야하는데, 옮기는 것 까지는 문제가 아닌데, 옮긴후에도, 계속해서 통합시퀀스를 사용하지 않을경우 대 혼란이 발생할수 있잖아요. 왜냐면 신규회원가입시 중간의 갭안의 번호를 부여받거나 삭제된 번호를 부여받게 되면 다른 테이블의 게시글 등의 데이타와 매칭이 엇나기 때문이죠. 그래서 중대형 싸이트로 커질때는 DB설계에서 통합시퀀스 체계는 좋다고 볼수 없는것 같아요.
시퀀스가 10000개 단위로 테이블에서 삭제되지 않나요?
번호가 1억개까지 넘어갔다고 1번부터 1억까지 다 남아있는게 아닐꺼에요 아마도 ;;;