문제

현재 우리 시스템의 기본 키 길이는 10자리로, 이는 Java 정수 제한을 약간 초과합니다.나는 이러한 키의 숫자 오버플로로 인해 발생하는 유지 관리 문제를 피하고 싶지만 동시에 결코 필요하지 않을 무한히 큰 숫자를 저장하기 위해 많은 시스템 성능을 희생하고 싶지 않습니다.

기본 키의 크기 관리를 어떻게 처리합니까?더 큰 Long에 비해 성능상의 이점을 얻기 위해 Java 정수를 사용하고 필요할 때 크기를 늘리는 것이 더 낫습니까? 아니면 총알을 물고 대부분의 PK에 대해 Java Long을 사용하고 오버플로에 대해 걱정할 필요가 없습니다. 시퀀스 크기?

도움이 되었습니까?

해결책

나는 항상 긴 키 (데이터베이스의 숫자 (18,0))와 함께 갔다. 왜냐하면 그들은 거의 모든 상황에서 발생할 가능성을 단순히 제거하기 때문이다 (극단적 인 데이터 비장 스타일 애플리케이션을 제외하고). 키에 대한 모든 테이블에서 동일한 데이터 유형을 갖추면 부모 클래스의 모든 모델 객체에서 해당 필드를 공유 할 수있을뿐만 아니라 SQL Getters 등을 일관된 코드를 가질 수 있습니다.

다른 팁

대답은 데이터로 Java 정수를 넘칠 가능성에 달려있는 것 같습니다. 그리고 데이터가 무엇인지에 대한 아이디어 없이는 알 수있는 방법이 없습니다.

성능 혜택은 무시할 수 있으므로 제 조언은 긴 열쇠를 사용하는 것입니다. 길을 따라 다루어야한다는 것은 큰 번거 로움 일 것입니다.

32 비트 정수를 넘어갈 가능성과 긴 정수를 저장하고 사용하는 비용 사이의 균형입니다.

서명되지 않은 32 비트 정수는 40 억 달러가 넘는 상점을 고려하십시오. 앞으로 136 년 동안이 테이블에서 매 초마다 평균 1 개 이상의 새로운 행을 평균화 할 것이라고 생각한다면, 당신은 오래 사용해야합니다.

Java의 32비트 정수는 부호 있는 정수이므로 20억 개에 불과합니다.어떤 이유로 SEQUENCE가 계속해서 점프한다면 PK 사이에 약간의 간격이 있을 것입니다.

(일부 COBOL 개발자가 날짜에 일부 바이트를 절약할 것이라고 생각했기 때문에 Y2K 문제가 발생했다는 것을 기억하십시오 ??) :-)

그래서 저는 항상 Long을 사용합니다.

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