2016-07-26 11 views
2

Angenommen, ich habe eine Datenbank mit mehreren Spalten. In jeder Spalte gibt es viele Werte, die oft ähnlich sind.Wie behandeln Datenbanken redundante Werte?

Zum Beispiel kann ich eine Spalte mit dem Namen "Beschreibung" haben und ein Wert könnte sein "Dies ist die Beschreibung für die Messung". Diese Beschreibung kann in dieser Spalte bis zu 1000000 Mal vorkommen.

Meine Frage ist nicht, wie ich das Design dieser Datenbank optimieren könnte, sondern wie eine Datenbank solche redundanten Werte behandelt. Sind diese redundanten Werte so effektiv gespeichert wie bei einem perfekten Design (in Bezug auf die Gesamtgröße der Datenbank)? Wenn ja, wie werden die Werte komprimiert?

Antwort

2

Die einzige richtige Antwort wäre: hängt von der Datenbank und der Konfiguration ab. Weil es keine Silberkugel für diesen gibt. Einige Datenbanken speichern nur einmal Werte jeder Spalte (einige Spaltenspeicher oder dergleichen), aber technisch gibt es keine Notwendigkeit, dies zu tun oder nicht.

In einigen Datenbanken können Sie das DBMS Optimierungen vorschlagen lassen und in diesem Fall könnte es ein ENUM-Feld vorschlagen, das nur existierende Werte enthält, wodurch die Zeichenfolge auf eine ID reduziert wird, die auf die Zeichenfolge verweist. Diese "Optimierung" hat ihren Preis, wenn Sie beispielsweise in der Feldbeschreibung einen neuen Wert hinzufügen wollen, müssen Sie das Feld ENUM anpassen.

Je nach Anwendungsfall sind diese Optimierungen nichts wert oder sind sogar ein Show-Stopper, zum Beispiel wenn sich die Daten sehr oft ändern (Inserts oder Updates). Die dbms würden mehr Zeit mit der Verwaltung von Eindeutigkeiten/Duplikaten verbringen als die eigentliche Verarbeitung von Abfragen.

Zur Frage der Komprimierung: hängt auch von der Konfiguration und dem Datenbanksystem ab, denke ich, hängt auch vom Feldtyp ab. Textdaten können komprimiert werden, und im Falle nicht indizierter Textfelder sollte es fast keinen Nachteil bei der Verwendung eines einfachen Komprimierungsalgorithmus geben. Welcher Algorithmus hängt von den dbms und der Konfiguration ab, vermute ich.

Wenn Sie nicht genauer werden, gibt es keine spezifischere Antwort, glaube ich.

+0

Vielen Dank. Das bedeutet, dass eine zusätzliche Konfiguration in meinem Fall angewendet werden muss ... – Ohumeronen