Ich beabsichtige, eine kleine (Java) Anwendung zur Verwaltung meiner Finanzen zu entwickeln. Ich glaube, ich muss eine eingebettete Datenbank verwenden, habe aber keine Erfahrung mit diesem Problem. Ich habe versucht, mir einige der verfügbaren Produkte anzusehen , kann mich aber nicht entscheiden, welches für mich besser geeignet ist. H2 , HSQLDB , Derby und Berkeley DB scheinen gute Kandidaten zu sein, aber ich sehe immer noch nicht, wie sie miteinander verglichen werden. Ich freue mich über Ihre Hilfe beim Vergleich und bei der Entscheidung, welche ich verwenden soll.
Ich beabsichtige, Hibernate für meine Anwendung zu verwenden (es sei denn, Sie würden die Verwendung der von DBMS bereitgestellten API empfehlen), möchte aber auch die Möglichkeit haben, die Datenbank einfach mit einem SQL-Browsing-Tool zu bearbeiten (Schema ändern und Daten ändern).
Danke dir.
quelle
Antworten:
Entweder
oder
Welche Sie verwenden, hängt von Ihnen ab, je nachdem, wie viel Leistung und wie viel Stabilität Sie benötigen.
Der Entwickler von H2 hat eine schöne Leistungsbewertung erstellt:
http://www.h2database.com/html/performance.html
quelle
Ich verwende Apache Derby für so ziemlich alle meine Anforderungen an eingebettete Datenbanken. Sie können auch die Java-Datenbank von Sun verwenden, die auf Derby basiert, aber die neueste Version von Derby ist viel neuer. Es unterstützt viele Optionen, die von kommerziellen nativen Datenbanken unterstützt werden, ist jedoch viel kleiner und einfacher einzubetten. Ich hatte einige Datenbanktabellen mit mehr als einer Million Datensätzen ohne Probleme.
Ich habe vor ungefähr 3 Jahren HSQLDB und Hypersonic verwendet. Es hat zu der Zeit einige große Leistungsprobleme und ich wechsle aufgrund dieser Probleme von dort zu Derby. Derby war solide, selbst als es im Inkubator bei Apache war.
quelle
Ich musste in einem meiner Projekte eine eingebettete Java-Datenbank verwenden und habe viel recherchiert, um die Vor- und Nachteile jeder Datenbank zu verstehen. Ich habe einen Blog geschrieben, in dem die Vor- und Nachteile beliebter eingebetteter Java-Datenbanken (H2, HSQLDB, Derby, ObjectDB, Neo4j, OrientDB) aufgelistet sind. Sie können sich das ansehen. Ich habe mich für H2 entschieden, da ich dachte, dass es meinen Anforderungen am besten entspricht. Link zum Blog: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html Hoffe, es hilft!
quelle
Ich würde mit H2 gehen, die Leistung ist viel besser als Derby. Weitere Informationen finden Sie unter http://www.h2database.com/html/performance.html .
quelle
HSQLDB ist ein guter Kandidat (die Tatsache, dass es in OpenOffice verwendet wird, mag einige von Ihnen überzeugen), aber warum sollte man für eine so kleine persönliche Anwendung nicht eine Objektdatenbank (anstelle einer klassischen Beziehungsdatenbank) verwenden?
Ich habe DB4O verwendet in einem meiner Projekte verwendet und bin sehr zufrieden damit. Da Sie objektorientiert sind, benötigen Sie nicht die gesamte Ebene für den Ruhezustand und können Objekte direkt einfügen / aktualisieren / löschen / abfragen! Außerdem müssen Sie sich keine Gedanken über das Schema machen, Sie arbeiten direkt mit den Objekten und DB4O erledigt den Rest!
Ich bin damit einverstanden, dass es einige Zeit dauern kann, bis Sie sich an diesen neuen Datenbanktyp gewöhnt haben , aber lesen Sie das DB40-Lernprogramm , wie einfach die Arbeit mit der !
BEARBEITEN: Wie in den Kommentaren erwähnt, behandelt DB4O automatisch die neueren Versionen der Klassen. Darüber hinaus steht hier ein Tool zum Durchsuchen und Aktualisieren der Datenbank außerhalb der Anwendung zur Verfügung: http://code.google.com/p/db4o-om/
quelle
Java DB (Sun Verteilung von Apache Derby) jetzt Schiffe in JDK 6 ausgeliefert!
Ich wollte so etwas wie Jason Cohen machen und habe gedacht, dass dies der einfachste Weg ist, in der JDK-Distribution zu sein (was von letzter Woche jetzt eine Voraussetzung für meine App ist). Oder vielleicht bin ich nur so faul.
quelle
Wir verwenden HSQLDB in der Produktion als Option ohne Konfiguration für unsere Anwendung. Es ermöglicht Benutzern das Testen ohne den Aufwand, eine echte Datenbank einzurichten.
Wir unterstützen es jedoch nicht für den normalen Gebrauch. Die Gründe sind mehrere:
Für mindestens (2) und (3) gibt es Wege, aber es ist schwierig; Es ist viel einfacher, zB MySQL zu installieren.
quelle
neo4j ist:
Ich hatte noch keine Gelegenheit, es zu versuchen - aber es sieht sehr vielversprechend aus. Beachten Sie, dass dies keine SQL-Datenbank ist. Ihr Objektdiagramm bleibt für Sie erhalten. Daher ist es möglicherweise nicht für Ihre vorhandene App geeignet.
quelle
Ein gutes Vergleichstool finden Sie hier: http://www.jpab.org/All/All/All.html
Beachten Sie auch die direkten DBMS / JPA-Vergleiche
quelle
Die meisten Dinge wurden bereits gesagt, aber ich kann nur hinzufügen, dass ich HSQL, Derby und Berkely DB in einigen meiner Lieblingsprojekte verwendet habe und sie alle gut funktioniert haben. Um ehrlich zu sein, denke ich nicht, dass es wirklich wichtig ist. Eine erwähnenswerte Sache ist, dass HSQL sich selbst als Textdatei mit SQL-Anweisungen speichert, was ziemlich gut ist. Erleichtert das Entwickeln von Tests und das schnelle Einrichten von Daten. Kann bei Bedarf auch schnell bearbeitet werden. Vermutlich können Sie all das problemlos in jede Datenbank übertragen, falls Sie dies jemals ändern müssen :)
quelle
HSQLDB kann bei großen Anwendungen Probleme verursachen, es ist nicht ganz so stabil.
Das Beste, was ich gehört habe (jedoch keine Erfahrung aus erster Hand), ist berkleyDB. Wenn Sie es nicht öffnen, kostet die Verwendung aufgrund der Lizenzierung einen Arm und ein Bein ... siehe http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html für Details.
ps. berkleyDB ist keine relationale Datenbank, falls Sie es nicht wussten.
quelle
Ich bin ein großer Fan von DB4O für .Net und Java .
Die Leistung ist seit den frühen Veröffentlichungen viel besser geworden. Das Lizenzmodell ist auch nicht schlecht. Mir gefallen besonders die Optionen zum Abfragen Ihrer Objekte. Abfragen anhand von Beispielen sind sehr leistungsfähig und leicht zu gewöhnen.
quelle
Nach welchen Kriterien bewerten Sie diese? Wenn Sie es noch nicht wissen, müssen Sie sich jetzt nicht entscheiden. Versuchen Sie, Ihre Anwendung so datenbankimplementierungsunabhängig wie möglich zu gestalten - stellen Sie die entsprechenden Wrapper, Datenzugriffsobjekte usw. bereit und treffen Sie diese Entscheidung, wenn Sie alle Fakten zur Hand haben und sich entscheiden müssen.
Wenn Sie relationale Datenbanken und SQL verwenden, sollte das oben Genannte nicht zu schwierig sein (mit JDBC usw.). Stellen Sie sicher, dass Sie über zahlreiche Umgebungstests verfügen, damit Sie beim Wechseln zwischen Datenbanken feststellen können, dass die Funktionalität Ihrer Anwendung gleich bleibt.
Ich bin vor einiger Zeit auf dasselbe Problem gestoßen. Ich wusste nicht, für welche Datenbank ich mich entscheiden sollte, daher verwendete meine erste Lösung Derby (oder HSQLDB?), Und ich konnte später zu HSQLDB (oder Derby? Kann mich nicht erinnern, welche Lösung funktionierte) wechseln, nachdem ich festgestellt hatte, wo Ich hatte Probleme (in Bezug auf die Leistung) und welche Lösung für mich wirklich funktionieren würde.
quelle
Ich habe Derby verwendet und ich hasse es wirklich, dass es Datentypkonvertierungsfunktionen gibt, insbesondere Datums- / Zeitfunktionen. (Zahlentyp) <--> Varchar-Konvertierung ist ein Schmerz.
Wenn Sie also planen, Datentypkonvertierungen in Ihren DB-Anweisungen zu verwenden, sollten Sie die Verwendung der eingebetteten DB in Betracht ziehen. Ich lerne dies zu spät.
Neueste Datentypkonvertierungen der Derby-Version
quelle
Ich persönlich bevorzuge HSQLDB, aber hauptsächlich, weil es das erste Mal war, dass ich es versuchte.
H2 soll schneller sein und ein besseres GUI-Frontend bieten (das generisch ist und übrigens mit jedem JDBC-Treiber funktioniert).
Zumindest HSQLDB, H2 und Derby bieten Servermodi, die sich hervorragend für die Entwicklung eignen, da Sie mit Ihrer Anwendung und einem Tool gleichzeitig auf die Datenbank zugreifen können (was im eingebetteten Modus normalerweise nicht möglich ist).
quelle
Ich denke, ich bin etwas spät dran (viel spät ;-)), aber ich möchte Prest hinzufügen, eine Open Source, objektorientierte eingebettete Datenbank für Java & .NET. für Ihre Überlegung. Prest ist eine eingebettete Open Source / Dual License-Datenbank für Java. Die Distribution ist mit der Android-Plattform von Google kompatibel und enthält auch Prest Lite für Java ME. Wir haben sogar einen Android-Benchmark erstellt und ein Whitepaper zu diesem Thema erstellt. Sie können hier einen Blick darauf werfen: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133
Alles Gute, Chris
quelle
Wenn ich richtig liege, stammt H2 von denselben Leuten, die HSQLDB geschrieben haben. Es ist viel besser, wenn Sie den Benchmarks auf ihrer Website vertrauen. Es gibt auch eine Vorstellung, dass die Sonnengemeinschaft zu schnell in Derby gesprungen ist.
quelle
Mir ist klar, dass Sie SQL-Browsing erwähnt haben, aber alles andere in Ihrer Frage lässt mich vorschlagen, dass Sie auch DB4O in Betracht ziehen , eine großartige, einfache Objekt-DB .
quelle