2009-04-29 5 views
3

기본 키에 대한 의견을 좀 나누고 싶습니다. 신원/시퀀스 번호를 사용하거나 HiLo 전략을 사용하는 것이 더 좋습니까 (높은 가치를 묻는 질문과 앱 자체에서 낮은 가치를 높이는 질문)?HiLo 또는 신원?

답변

2

응용 프로그램이 하나의 데이터베이스 만 사용하려는 경우 ID/시퀀스를 사용합니다. 당신은 사람들이 동시에 작업 할 수있는 응용 프로그램의 두 개의 분리 인스턴스를 가질 수 있고 당신이 어떤 점

의 차이를 조정해야 할 때 내가 본 것을 힐로 갈

유일한 정말 매력적인 이유는 Ex. 사용자가 서로 다른 위치에있는 두 개의 서로 다른 서버에서 작업 할 수있는 콘텐츠 관리 시스템에서 작업하고 있지만 어느 시점에서 두 서버를 동기화해야합니다.

+13

HiLo를 사용해야하는 또 다른 이유가 있습니다. 그 중 하나가 성능입니다. 여기에 설명되어 있습니다. http://nhforge.org/blogs/nhibernate/archive/2009/03/20/nhibernate-poid-generators-revealed.aspx –

+3

+1 @DoronYaacoby. 나는 테스트를 위해 100.000 번 for 루프에서 session.save를 호출하려고했다. 신분 -> 77000 밀리 초. hilo -> 1900 miliseconds. – kommradHomer

+0

HiLo 또는 Guid.Comb은 모든 삽입 후에 데이터베이스로 왕복 할 필요가 없으므로 ID보다 빠릅니다. – hyde

6

큰 테이블과 함께 SQL Server 2005/2008을 사용하는 경우 (1 백만 행 이상) this에 연결되는 this을 고려할 수 있습니다. 특정 상황에서 scope_identity() 및 @@ identity에 문제가 있습니다.

물론 현재 구현 문제에 대한 설계가 항상 현명한 결정이되는 것은 아닙니다.

+0

Yikes ... 그게 문제가 될 것입니다 ... –