2010-12-29 9 views
7

Was ist die beste Wert Java-Objektdatenbank gibt, die hat:Was ist die beste Java-Objektdatenbank?

  • Einfache Bedienung: jedes Objekt eine Zeile Code zu speichern.
  • Effiziente Speichernutzung: d. H. Nur lädt die Dinge, die aufgerufen werden, nicht das ganze Objekt jedes Mal (d. H. "Transparent Activation").
  • Objekte automatisch ändern, wenn manipuliert (d. H. "Transparent Persistence").
  • Mutter Abfragen (keine Notwendigkeit für SQL, JDOQL etc.)
  • Freie

wo jemand Erfahrung mit folgendem hat:

  • Neodatis
  • db4o
  • JODB
  • joafip
  • MyOODB

?

+2

db4o .... es hat alles, was Sie aufgelistet haben. Plus, es wird von einer öffentlichen Gesellschaft unterstützt, so wird nicht verschwinden und es wird von vielen vielen Firmen verwendet ... Sony, Savi, CISCO, etc ... über 100.000 Community-Mitglieder. – Robert

Antwort

0

einen Blick auf Redis Nehmen:

http://redis.io/clients

Es Java-Clients hat und aus eigener Erfahrung, Objekte Java Karte besser zu Key-Wert basierten Datenbanken als relationale DBs aber YMMV auf Ihre Nutzungsmuster und Arten abhängig von Dateien.

Hinweis: Es deckt möglicherweise nicht alle Ihre oben genannten Anforderungen, aber Sie könnten wahrscheinlich solche Funktionalität ziemlich leicht hinzufügen.

Update:https://github.com/xetorthio/johm

+1

Ich glaube nicht, dass das eine Objektdatenbanksoftware ist, oder? – Navigateur

+0

Es ist nicht unbedingt eine Objekt-DB, aber mit Hash-Unterstützung und guter Client-Software kann es sich wie eine verhalten. –

+0

@Navigateur: eigentlich ist das nicht wirklich ein Problem gesehen, dass 99% der Java-Programme gibt es nicht OO-Programme;) Denken Sie darüber nach: * equals * und * hashCode * sind an der Spitze der Java OO-Hierarchie und Dennoch sind sie grundsätzlich nicht kompatibel mit der Vererbung (dies wird sehr schön in Joshua Blochs * "Effective Java" *) demonstriert. Die Sache ist: Leute benutzen Java "Objekte", aber sie machen OO nicht. Das ist der Grund, warum Sammlungen wie Maps und Sets funktionieren (sie würden nicht, wenn Vererbung beteiligt wäre, weil * equals * und * hashCode * mit der Vererbung nicht kompatibel sind) und deshalb ist key/value store ... – SyntaxT3rr0r

4

Ich kann nur für db4o beantworten. Ich habe nicht genug Erfahrung mit den anderen Datenbanken, die Sie benannt haben.

  • Benutzerfreundlichkeit: Ich denke, dass db4o in vielen Szenarien sehr einfach zu verwenden ist. Sie fügen das db4o jar zu Ihrem Projekt hinzu, öffnen Sie die Datenbank und start storing and querying objects.
  • Effiziente Speichernutzung: Ja, db4o kann das tun. Es unterstützt transparent activation. In diesem Modus lädt db4o nur Objekte, die Sie tatsächlich verwenden.
  • Objekte automatisch bei Manipulation ändern: Ist auch supported.
  • Native Abfragen: Ja db4o supports das. Native Abfragen sind großartig und leistungsstark. In der Praxis können komplexe native Abfragen jedoch oft nicht optimiert und langsam ausgeführt werden. In solchen Fällen müssen Sie auf weniger elegante SODA-Abfragen zurückgreifen.
  • Es ist kostenlos unter einer GPL-Lizenz.
  • Ein weiterer Vorteil von db4o, der eine Community hat, die helfen und Wissen teilen kann.

    Haben Sie ein bestimmtes Anwendungsfall-Szenario für die Datenbank? Ich denke, dass Sie die Datenbank auswählen sollten, die Ihrer Anwendung am besten passt.

    +0

    Vergessen Sie nicht, dass der Build-Time-Abfrageoptimierer eine großartige Rückmeldung gibt, ob ein NQ zu komplex ist, um optimiert zu werden. –

    1

    Ich habe kürzlich HyperGraphDB verwendet, die alle Ihre Anforderungen erfüllt. Ich bin ziemlich beeindruckt davon: "HyperGraphDB ist ein universeller, Open-Source-Datenspeichermechanismus, der auf einem mächtigen Wissensmanagement-Formalismus basiert, der als gerichtete Hypergraphen bekannt ist. Während ein persistentes Speichermodell hauptsächlich für Wissensmanagement-, KI- und semantische Webprojekte entwickelt wurde kann auch als eingebettete objektorientierte Datenbank für Java-Projekte aller Größen verwendet werden. Oder eine Graphdatenbank. Oder eine (nicht-SQL-) relationale Datenbank. "

    +0

    Empfehlen Sie es auch, fügen Sie einfach das Bibliotheksjar hinzu und beginnen Sie mit der Verwendung der Diagrammdatenbank, ohne dass ein separater Datenbankserverprozess ausgeführt werden muss. –

    Verwandte Themen