2010-06-09 6 views
5

Ich habe NoSQL-Datenbanken wie CouchDB, MongoDB und Cassandra getestet und beobachtete die Tendenz, sehr viel Speicherplatz im Verhältnis zu eingefügten Schlüssel/Wert-Paaren zu absorbieren. CouchDB verbraucht beim Vergleich von CouchDB- und MySQL-Schemalendaten viel mehr Speicherplatz als MySQL. Ich weiß über diese Schlüssel-Wert-DBs sind standardmäßig Versionierung und haben lange Uuid und müssen Schlüsseloptimierung - der Vergleich war zwischen etwa 15 Mio. Zeilen in MySQL und 1-5 Mio. Dokumente NoSQL DB aufgelistet.Drive Space hungrig NoSQL-Datenbanken

Meine Frage ist: Gibt es NoSQL mit guter Komprimierung/Komprimierung von Daten? So dass ich NoSQL-Datenbank mit einer Größe näher an 5 GB als 50 GB haben kann?

Antwort

1

MongoDB hat eine "Datenbank Reparatur" -Funktion, die auch eine Verdichtung durchführt. Eine solche Komprimierung wird jedoch nicht ausgeführt, während die Datenbank ausgeführt wird.

Wenn jedoch der DB-Speicherplatz ein schwerwiegendes Problem ist, versuchen Sie, ein MongoDB Master/Slave-Paar einzurichten. Da die Daten komprimiert werden müssen, führen Sie die Reparatur am Slave aus, lassen Sie ihn "aufholen" und schalten Sie ihn dann um. Sie können jetzt den Master stattdessen sicher komprimieren.

Aber ich muss echo jbellis 's Kommentar: Sie werden wahrscheinlich mehr Platz benötigen und die meisten dieser Produkte machen die Annahme, dass Speicherplatz (relativ) billig ist. Wenn der Festplattenspeicher wirklich knapp ist, werden Sie feststellen, dass MongoDB eine vernünftige Größe hat, aber es wird schwierig werden, mit den CSV-Daten in Tabellenform zu konkurrieren.

Denken Sie daran, was ist mehr Platz effizient?

  • eine CSV-Datei mit einer Million Zeilen
  • die gleichen Daten in JSON

Offensichtlich ist die JSON länger formatiert wird b sein/c Sie die Feldnamen jedes Mal sind zu wiederholen. Die einzige Ausnahme hier ist eine CSV-Datei mit 100 Spalten, von denen nur einige für jede Zeile gefüllt sind. (aber das sind wahrscheinlich nicht Ihre Daten)

+0

Das stimmt, wenn Sie lange Feldnamen verwenden, benötigen Sie mehr Speicherplatz bei der Verwendung von Mongodb. Und Mongodb reserviert Dateien von 2 Gigabyte vor. – TTT

+1

Ja, CouchDB hat eine "kompakte" Option, um nach dem Test die db-Größe mehrmals zu reduzieren (Cassandra macht es "im Hintergrund" wegen besser organisierten Massenschreibvorgängen). – jlmfao

+0

Piggy Backing auf diesem, wenn es ein Problem ist, mit 1 Knoten genug Speicherplatz, versuchen Sie etwas wie HBase oder Cassandra ist es sehr einfach, mehr Datenspeicher (und Rechenleistung!) Einfach durch Hinzufügen weiterer Knoten hinzuzufügen. Ich weiß nicht, wie MongoDB/CouchDB strukturiert sind, also weiß ich nicht, ob Sie einfach und einfach dasselbe mit ihnen machen können. – Drizzt321

1

Überprüfen Sie die "Dateilänge" oder die tatsächliche Zuordnungsgröße?

Viele Datenbanken weisen spärlich Dateistrukturen zu und ihre "Länge" ist viel größer als ihre Größe auf der Festplatte.

+0

Ich überprüfe auch, dass der Dateipuffer nicht so groß ist, ich denke nicht einmal, dass in db wie 15 Millionen Dokumente (auch wenn es einige GB sein wird). Ich denke, dass "Weltraum hungrig" Wochenheit von Shemaless db ist, aber ich bin mir nicht sicher. – jlmfao

4

Speicherplatz ist über die billigste Ressource heute, also, wenn Sie es für weniger suchen können oder weniger CPU verwendet wird, ist es ein guter Handel zu machen. Das ist es, was Cassandra tut.

+2

Magnetspeicherplatz ja, aber nicht SSD-Platz, der ist, was Sie wollen, eine Hochleistungs-DB sowieso gespeichert. Suchanfragen auf der anderen Seite sind fast kostenlos auf SSDs. Darüber hinaus bedeutet ein effizientes Packen von Daten in Seiten auf der Platte eine potentiell viel effektivere Zwischenspeicherung auf der Seitenpufferschicht innerhalb der Datenbank, ein weiterer Vorteil. – TheManWithNoName

+1

magnetisch vs ssd ist nicht one-size-fits all; wenn dein heißer Datensatz in Widder passt (sehr häufig!) dann spült ssd nur Geld in den Abfluss. Für weniger vorhersehbare Workloads wird Cassandra auf SSDs eingesetzt, wo die Vermeidung von Suchvorgängen bei Schreibvorgängen ein großer Gewinn für die (nicht) schreibende Verstärkung ist. – jbellis

1

Ich denke, das Problem ist der Schlüssel. CouchDB speichert seine Daten in einem B-Baum. UUID - Schlüssel sind die Ursache dafür, dass Sie viel Speicherplatz benötigen. B-Baum speichert Daten kompakt von Natur aus außer UUIDs. Versuchen Sie, einen Schlüssel zu finden, der für einen B-Baum komfortabler ist.