Frage

Derzeit Primärschlüssel in unserem System sind 10 Stellen longs, nur über die Grenze für Java ganze Zahlen. Ich möchte keine Wartung Probleme auf dem Weg von numerischen Überlauf in diesen Schlüsseln zu vermeiden, aber gleichzeitig will ich nicht viel Systemleistung opfern unendlich große Zahlen zu speichern, die ich nie brauchen werden.

Wie gehen Sie mit der Größe eines Primärschlüssel verwalten? Bin ich besser dran mit Java ganzen Zahlen stecken, für die Performance-Vorteil gegenüber den größeren Lange, und die Erhöhung der Größe, wenn nötig, oder sollte ich den sauren Apfel beißen, gehen Sie mit Java Lange für die meisten meiner PKs und nie überfüllt kümmern die Sequenzgröße?

War es hilfreich?

Lösung

Ich habe immer mit langen Schlüsseln (Anzahl (18,0) in der Datenbank) gegangen, weil sie einfach die Möglichkeit, diese Situation in so ziemlich alle Situationen (extreme Daten horten Stil Anwendungen beiseite) geschieht entfernen. den gleichen Datentyp in allen Tabellen für den Schlüssel bedeutet, dass Sie das Feld über all Ihre Modellobjekte in einer übergeordneten Klasse Ihres Ihre, sowie mit konsistentem SQL-Code Getter teilen können, und so weiter.

Andere Tipps

Es scheint, wie die Antwort hängt davon ab, wie wahrscheinlich sind Sie die Java ganzen Zahlen mit Ihren Daten zu überfluten. Und es gibt keine Möglichkeit zu wissen, dass ohne eine gewisse Vorstellung davon, was Ihre Daten.

Der Performance-Vorteil wäre zu vernachlässigen, so mein Rat wäre, mit dem langen Schlüssel zu gehen. Nachdem er damit umgeht die Straße hinunter wahrscheinlich ein großer Aufwand wäre.

Es ist ein ausgewogenes Verhältnis zwischen den Kosten für die Speicherung und Lang ganze Zahlen mit, im Vergleich zu der Wahrscheinlichkeit, ein 32-Bit-Integer überzuzulaufen.

Beachten Sie, dass eine nicht signierte 32-Bit-Integer speichert über 4 Milliarden Werte. Wenn Sie denken, Sie mehr als 1 neue Zeile im Durchschnitt werden jede Sekunde in dieser Tabelle für die nächsten 136 Jahre, dann müssen Sie eine lange nutzen zu können.

32 Bit-Integer in Java ganze Zahlen sind signiert, so dass nur 2 Milliarden. Wenn aus irgendeinem Grunde, hält die Sequenz springt von Zeit zu Zeit, dann wird es einige Lücken zwischen dem PKs sein.

Es tut nicht weh, eine lange haben (Denken Sie daran, dass das Y2K-Problem passiert ist, weil einige COBOL-Entwickler gedacht, dass sie einige Bytes in Daten sparen ??): -)

Deshalb verwende ich immer lange.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top