2010-03-23 8 views
16

Objektdatenbanken wie MongoDB und db4o bekommen in letzter Zeit viel Publizität. Jeder, der mit ihnen spielt, scheint es zu lieben. Ich nehme an, dass sie in ihren Beispiel-Apps etwa 640.000 Daten verarbeiten.Hat jemand eine Objektdatenbank mit einer großen Datenmenge verwendet?

Hat jemand versucht, eine Objektdatenbank mit einer großen Datenmenge (z. B. 50 GB oder mehr) zu verwenden? Können Sie weiterhin komplexe Abfragen dagegen ausführen (wie von einem Suchbildschirm aus)? Wie ist es im Vergleich zu Ihrer üblichen relationalen Datenbank der Wahl?

Ich bin nur neugierig. Ich möchte die Objektdatenbank eintauchen lassen, aber ich muss wissen, ob es an etwas mehr als nur einer Beispiel-App funktioniert.

+1

TBH mit ORMs wie Hibernate, eine solche fantastischen Job von so etwas abstrahiert nicht weg sehe ich den Punkt wirklich. –

+3

MongoDB konkurriert in den meisten Fällen nicht wirklich mit NHibernate und relationalen Datenbanken. Sehen Sie sich die Anwendungsfallliste an, mit der ich verlinkt bin. Relationale Datenbanken sind für einige Situationen wirklich schrecklich und diese alternativen Datenbanken sind bessere Lösungen. Der OP mag auch hier den Begriff Objektdatenbanken falsch verwenden. –

+8

640K sollte für jeden ausreichen. –

Antwort

4

MongoDB Kräfte Source, The New York Times und einige andere große Datenbanken ...

4

Sie sollten die MongoDB use cases lesen. Menschen, die nur mit Technologie spielen, schauen oft nur, wie das funktioniert und sind nicht an dem Punkt, wo sie die Grenzen verstehen können. Für die richtigen Arten von Datasets und Zugriffsmustern sind 50 GB nichts für MongoDB, das auf der richtigen Hardware läuft.

Diese nicht-relationalen Systeme betrachten die Kompromisse, die RDBMs gemacht haben, und änderten sie ein wenig. Konsistenz ist nicht so wichtig wie andere Dinge in manchen Situationen, so dass Sie diese Lösungen für etwas anderes tauschen können. Der Kompromiss ist in einigen Situationen immer noch relativ gering.

Es lohnt sich, über die CAP theorem zu lesen.

4

Ich habe versucht, die API zu bewegen, die ich sicher mit der Stapelüberlauf iPhone App habe Ich schrieb eine Weile zurück zu MongoDB von wo es derzeit in einer MySQL-Datenbank sitzt. In roher Form liegt der SO-CC-Dump im Multi-Gigabyte-Bereich und die Art und Weise, wie ich die Dokumente für MongoDB erstellte, resultierte in einer 10G + -Datenbank. Es ist einleuchtend, dass ich die Dokumente nicht gut konstruiert habe, aber ich wollte nicht eine Menge Zeit damit verbringen.

Eines der allerersten Dinge, denen Sie begegnen werden, wenn Sie diesen Pfad starten, ist das Fehlen von 32-Bit-Unterstützung. Natürlich bewegt sich jetzt alles auf 64 Bit, aber nur etwas, das man im Auge behalten sollte. Ich glaube nicht, dass eine der wichtigsten Dokumentendatenbanken das Paging im 32-Bit-Modus unterstützt, und das ist vom Standpunkt der Code-Komplexität aus verständlich.

Um zu testen, was ich tun wollte, habe ich eine 64-Bit-Instanz EC2-Knoten verwendet. Die zweite Sache, auf die ich gestoßen bin, ist, dass obwohl diese Maschine 7G Speicher hatte, als der physische Speicher erschöpft war, die Dinge von schnell zu nicht so schnell gingen. Ich bin mir nicht sicher, ob ich etwas falsch eingerichtet habe, weil die Nicht-Unterstützung des 32-Bit-Systems das, wofür ich es verwenden wollte, zunichte gemacht hat, aber ich wollte immer noch sehen, wie es aussah. Das Laden des gleichen Daten-Dumps in MySQL dauert etwa 2 Minuten auf einer viel weniger leistungsfähigen Box, aber das Skript, das ich verwendet habe, um die beiden Datenbanken zu laden, funktioniert anders, so dass ich keinen guten Vergleich machen kann. Das Ausführen nur einer Teilmenge der Daten in MongoDB war viel schneller, solange es zu einer Datenbank führte, die weniger als 7G war.

Ich denke, dass mein Weg davon war, dass große Datenbanken gut funktionieren werden, aber Sie müssen möglicherweise darüber nachdenken, wie die Daten mehr als bei einer traditionellen Datenbank strukturiert sind, wenn Sie die hohe Leistung beibehalten möchten.Ich sehe eine Menge Leute, die MongoDB zum Loggen benutzen, und ich kann mir vorstellen, dass viele dieser Datenbanken massiv sind, aber gleichzeitig nicht viel zufälligen Zugriff haben, so dass die Performance für traditionelle Anwendungen maskiert wird .

Eine aktuelle Ressource, die hilfreich sein könnte, ist die visual guide to nosql systems. Es gibt eine gute Auswahl außerhalb von MongoDB. Ich habe Redis auch verwendet, obwohl nicht mit einer so großen Datenbank.

+1

Sorry, du hattest so ein miserables Erlebnis. Wenn Sie noch interessiert sind, können Sie auf http://groups.google.com/group/mongodb-user/ posten, was Sie tun, und vielleicht können wir Ihnen helfen? Das Importieren sollte sehr schnell sein und die Abfragen klingen so, als hätten Sie vielleicht gerade irgendwo einen Index gebraucht. – kristina

+0

Nicht ganz miserabel. Ich füge hinzu, dass meine Absicht war, die resultierende MongoDB-Datenbank "korrekt" zu machen. Ich habe nicht versucht, den Ladevorgang mit der MySQL-Datenbank, die ich habe, zu vergleichen, sondern stattdessen ein vollständiges Dokument erstellen, das jede Frage, jede Antwort, jede Stimme und jeden Kommentar darstellt. All diese Dinge sind in der Müllkippe entnormalisiert und ich denke, ein Teil des Problems hat sie zusammengezogen. Egal, die 32-Bit-Beschränkung war mein einziges echtes Problem. Ich bin sicher, ich hätte mehr Zeit damit verbringen können, es gut zu machen, wenn ich es rechtfertigen könnte. – carson

11

Jemand ging gerade mit 12 Terabyte Daten in MongoDB in Produktion. Der größte, den ich vorher kannte, war 1 TB. Viele Leute halten wirklich große Datenmengen in Mongo.

Es ist wichtig, daran zu denken, dass Mongo viel wie eine relationale Datenbank funktioniert: Sie benötigen die richtigen Indizes, um eine gute Leistung zu erzielen. Sie können explain() auf Abfragen verwenden und kontaktieren Sie the user list für Hilfe mit diesem.

7

Als ich im Jahr 2000 begann db4o hatte ich nicht riesige Datenbanken im Hinterkopf. Das Hauptziel bestand darin, jedes komplexe Objekt sehr einfach mit einer Codezeile zu speichern und dies mit geringem Ressourcenverbrauch schnell und einfach auszuführen, sodass es eingebettete und mobile Geräte ausführen kann.

Im Laufe der Zeit hatten wir viele Benutzer, die db4o für Webapps und mit ziemlich großen Datenmengen verwendeten, die der heutigen maximalen Datenbankdateigröße von 256 GB nahekamen (mit einer konfigurierten Blockgröße von 127 Bytes). Also, um Ihre Frage zu beantworten: Ja, db4o wird mit 50GB funktionieren, aber Sie sollten nicht planen, es für Terabytes an Daten zu verwenden (es sei denn, Sie können Ihre Daten über mehrere db4o-Datenbanken verteilen, die Installationskosten für eine einzelne Datenbank sind vernachlässigbar, Sie können nur #openFile() aufrufen)

db4o von Versant im Jahr 2008 erworben wurde, weil es capabilites (embedded, geringe Ressourcenverbrauch, leicht) machen es zu einem großen kostenlosen Produkt zu Versant High-End-Objektdatenbank VOD ist. VOD skaliert für große Datenmengen und es ist so viel besser als relationale Datenbanken. Ich denke, es wird nur über 50 GB kichern.

1

Vielleicht eine Erwähnung wert.

Die Planck-Mission der Europäischen Weltraumorganisation ESA läuft auf der Versant Object Database.

Es ist ein Satellit mit 74 integrierten Sensoren, der im letzten Jahr gestartet wurde und das infarre Spektrum des Universums abbildet und die Informationen in einem Kartensegmentmodell speichert. Es hat eine Menge Hype in diesen Tagen bekommen, weil es einige der coolsten Bilder produziert, die jemals vom Universum gesehen wurden.

Wie auch immer, es hat 25T an Informationen generiert, die in Versant gespeichert und auf 3 Kontinenten repliziert wurden. Wenn die Mission im nächsten Jahr abgeschlossen ist, wird es insgesamt 50T sein

Wahrscheinlich auch erwähnenswert, Objektdatenbanken neigen dazu, viel kleiner zu sein, um die gleiche Information zu halten. Das liegt daran, dass sie wirklich normalisiert sind, keine Datenduplizierung für Joins, kein leerer ungenutzter Spaltenbereich und wenige Indizes statt 100er von ihnen. Sie können öffentliche Informationen zum Testen von ESA finden, die den Speicher im mehrspaltigen relationalen Datenbankformat -vs- berücksichtigen, indem Sie ein geeignetes Objektmodell verwenden und in der Versant-Objektdatenbank speichern. Sie konnten feststellen, dass sie mit Versant 75% Speicherplatz sparen konnten.Hier

ist die Umsetzung: http://www.planck.fr/Piodoc/PIOlib_Overview_V1.0.pdf

Hier sprechen sie über 3T -vs- 12T im Test gefunden http://newscenter.lbl.gov/feature-stories/2008/12/10/cosmic-data/

Auch ... gibt es Benchmarks, die zeigen, Versant Größenordnungen schneller auf die Analyse Seite der Mission.

CHeers, -Robert

Verwandte Themen