Frage

Ich beabsichtige, für die Verwaltung meiner Finanzen eine kleine (Java) Anwendung zu entwickeln. Ich glaube, ich brauche eine eingebettete Datenbank zu verwenden, aber ich habe keine Erfahrung in Bezug auf dieses Problem. Ich habe versucht, unter einige der zur Verfügung stehenden Produkte zu sehen, aber ich kann nicht entscheiden, die man wäre besser geeignet für mich. H2 , HSQLDB , Derby und

War es hilfreich?

Lösung

Entweder

  • HSQLDB - Wird von Open Office, getestet und stabil. Es ist einfach zu bedienen. Wenn Sie Ihre db-Daten zu bearbeiten, können Sie einfach die Datei öffnen und die Insert-Anweisungen bearbeiten.

oder

  • H2 - Sagte schneller zu sein (durch den Entwickler, der ursprünglich hsqldb entworfen, auch)

Welche Sie verwenden ist bis zu Ihnen, je nachdem, wie viel Leistung und wie viel Stabilität, die Sie brauchen.

Der Entwickler von H2 hat eine schöne Leistungsbewertung setzen:
http://www.h2database.com/html/performance.html

Andere Tipps

Ich benutze Apache Derby für so ziemlich alle meine Embedded-Datenbank benötigt. Sie können auch für Suns Java DB verwenden, die auf Derby basiert, aber die neueste Version von Derby ist viel höher. Es unterstützt eine Vielzahl von Optionen, die von kommerzieller, nativen Datenbanken unterstützen, ist aber viel kleiner und einfacher zu integrieren. Ich habe mit mehr als einer Million Datensätze ohne Probleme einige Datenbanktabellen hat.

Ich habe HSQLDB und Hypersonic vor etwa 3 Jahren zu verwenden. Es hat einige wichtige Performance-Probleme zu der Zeit und ich wechseln zu Derby von ihm wegen dieser Probleme. Derby hat sogar fest, wenn es in einem Inkubator bei Apache ist.

Ich brauchte Java eingebettete Datenbank in einem meiner Projekte zu verwenden, und ich habe viel Forschung Verständnis Vor-und Nachteile der einzelnen Datenbanken. Ich schrieb einen Blog-Vor-und Nachteile der populären Embedded-Java-Datenbanken (H2, HSQLDB, Derby, ObjectDB, Neo4j, Orientdb) die Auflistung, können Sie einen Blick auf sie haben. Ich entschied mich für H2, wie ich es meine Anforderungen am besten geeignet. Link zum Blog: http://sayrohan.blogspot.in/2012/12 /choosing-light-weight-java-database.html Hoffe, es hilft!

ich mit H2 gehen würde, ist die Leistung viel besser als Derby gemeint. Lesen Sie http://www.h2database.com/html/performance.html für weitere Informationen .

HSQLDB ein guter Kandidat ist (die Tatsache, dass es in Openoffice verwendet wird, kann einige von euch überzeugt), aber für so eine kleine personnal Anwendung, warum nicht eine Objekt-Datenbank (anstelle einer klassischen relationnal Datenbank)?

Ich benutzte DB4O in einem meiner Projekte, und ich bin sehr zufrieden mit ihm. Als objektorientierte, brauchen Sie nicht die ganze Hibernate Schicht und kann direkt insert / update / delete / Query-Objekte! Darüber hinaus müssen Sie nicht über das Schema zur Sorge, Sie direkt mit den Objekten arbeiten und DB4O erledigt den Rest!

Ich bin damit einverstanden, dass es einige Zeit dauern kann, bis diese neue Art der Datenbank zu gewöhnen, aber überprüfen Sie die DB40 Tutorial , um zu sehen, wie einfach es macht mit der DB arbeiten!

EDIT: die Wie in den Kommentaren, DB4O verwaltet automatisch die neueren Versionen der Klassen. Darüber hinaus zur Verfügung ein Werkzeug für die Suche und die Datenbank außerhalb der Anwendung zu aktualisieren ist hier: http: // code.google.com/p/db4o-om/

Java DB (Sun Verteilung von Apache Derby) jetzt Schiffe in JDK 6!

Ich will worden etwas wie Jason Cohen tun und habe darüber nachgedacht, das sieht aus wie der einfachste Weg, in der JDK-Distribution zu sein (die in der vergangenen Woche ist jetzt eine Voraussetzung für meine app). Oder vielleicht bin ich einfach nur faul auf diese Weise.

Wir verwenden HSQLDB in der Produktion als „no-Konfiguration“ Option für unsere Anwendung. Es ermöglicht Menschen vor Gericht ohne lästigen eine echte Datenbank einrichten.

Allerdings tun wir nicht es für den normalen Gebrauch unterstützen. Die Gründe dafür sind vielfältig:

  1. Verlangsamt sich proportional zur Größe der Daten.
  2. Schwierige außerhalb unserer App (zum Beispiel für benutzerdefinierte Berichte) zugreifen zu können.
  3. Transaktionen / Disk-sync ist schwierig, richtig zu machen, so ist es einfach, Daten zu verlieren.

Für mindestens (2) und (3), gibt es Möglichkeiten, um ihn herum, aber es ist schwierig; es ist viel einfacher, z.B. installieren MySQL.

Neo4j ist:

  

ein eingebettetes, Disk-basierte, vollständig transaktionale Java Persistenz-Engine, die Geschäfte in Graphen strukturierten Daten, anstatt in Tabellen

Ich habe keine Chance, zu versuchen, es noch habe - aber es sieht sehr vielversprechend aus. Hinweis: Dies ist nicht eine SQL-Datenbank - Ihr Objektgraph ist für Sie beharrt -. So dass es nicht für die vorhandene App sinnvoll sein könnte

Good-Vergleichs-Tool kann hier gefunden werden: http://www.jpab.org/All/All/All .html

Beachten Sie auch die Head to Head DBMS / PPV Vergleiche

Ich bin ein großer Fan von DB4O für beide .Net und Java .

Performance hat sich seit den frühen Versionen viel besser geworden. Das Lizenzmodell ist nicht zu schlecht. Ich mag besonders die verfügbaren Optionen für Ihre Objekte abfragen. Abfrage durch Beispiel ist sehr leistungsfähig und einfach zu gewöhnen.

Nach welchen Kriterien werden Sie diese bewerten benutzen? Wenn Sie noch nicht kennen, dann brauchen Sie jetzt nicht zu entscheiden. Versuchen Sie, Ihre Anwendung als machen Datenbank-Implementierung unabhängig wie möglich -. Die entsprechenden Wrapper bereitgestellt, Datenzugriffsobjekte usw., und diese Entscheidung treffen, wenn Sie alle Fakten zur Hand haben und Sie müssen entscheiden,

Wenn Sie relationale Datenbanken verwenden und SQL dann sollte die oben nicht zu hart sein (unter Verwendung von JDBC usw.). Stellen Sie sicher, Sie haben genug Tests der Umgebung, so dass, wenn Sie zwischen den Datenbanken wechseln möchten, können Sie feststellen, dass Ihre Anwendung die Funktionalität bleibt gleich.

Ich lief in das gleiche Problem vor einiger Zeit. Ich wusste nicht, welche Datenbank zu gehen, so dass meine erste Lösung Derby verwendet (oder HSQLDB?), Und ich war später in der Lage zu HSQLDB wechseln (oder Derby? Kann mich nicht erinnern, welche Lösung gearbeitet), sobald ich bestimmt hatte, wo ich hatte Probleme (die Leistung) entsprechen und Lösung wäre für mich wirklich funktionieren.

Die meisten Dinge haben schon gesagt, aber ich kann nur hinzufügen, dass ich HSQL, Derby und Berkely DB in ein paar meiner Lieblingsprojekte verwendet haben, und sie alle funktionierte gut. Also ich glaube nicht wirklich, es zählt viel, ehrlich zu sein. Eine Sache, erwähnenswert ist, dass HSQL spart sich als Textdatei mit SQL-Anweisungen, die sehr gut ist. Macht es wirklich einfach, wenn Sie entwickeln sich schnell Tests und Setup-Daten zu tun. Kann auch schnelle Änderungen tun, wenn nötig. Ratet mal, Sie ganz einfach alles, was auf eine Datenbank übertragen könnten, wenn Sie jemals auch ändern müssen:)

HSQLDB kann Probleme für große Anwendungen verursachen, es ist nicht ganz so stabil.

Das Beste, was ich (nicht aus erster Hand Erfahrungen jedoch) gehört habe, ist BerkleyDB. Aber wenn Sie es Open Source, es wird Ihnen einen Arm und ein Bein kosten aufgrund zu verwenden, um die Lizenzierung ... sehen diese http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html .

ps. BerkleyDB ist nicht eine relationale Datenbank, falls Sie weiß nicht.

Ich habe Derby verwendet und ich hasse es wirklich Daytentypkonvertierung Funktionen ist, insbesondere Datum / Zeit-Funktionen. (Anzahl Type) <->. Varchar Umwandlung es ist ein Schmerz

So dass, wenn Sie Datentypkonvertierungen in Ihrer DB Aussagen betrachten die Verwendung von othe Embedded DB planen, ich lerne es zu spät.

Neueste Derby Version Datentypkonvertierungen

Ich persönlich bevor HSQLDB, sondern vor allem, weil es der erste war, habe ich versucht.

H2 wird gesagt, schneller sein und bietet ein schöneres GUI-Frontend (die generisch ist und funktioniert mit jedem JDBC-Treiber, übrigens).

Mindestens HSQLDB, H2 und Derby-Server-Modi bieten, die für die Entwicklung groß ist, weil Sie die DB mit Ihrer Anwendung und etwas Werkzeug zur gleichen Zeit zugreifen können (der Modus eingebettet in der Regel nicht erlaubt).

Ich glaube, ich bin ein wenig spät (viel zu spät ;-)) zu diesem Beitrag, aber ich möchte Prest hinzufügen möchten, eine Open-Source, objektorientierte Embedded-Datenbank für Java & .NET. für Ihre Aufmerksamkeit. Prest ist eine Open Source / Dual-Lizenz eingebettete Datenbank für Java. Die Verteilung ist kompatibel mit Googles Android-Plattform und enthält auch Prest Lite für Java ME. Wir haben sogar ein Android-Benchmark gebaut und ein White Paper zum Thema produziert ... können Sie einen Blick hier: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133

Alles Gute, Chris

Wenn ich richtig bin, ist H2 aus den gleichen Typen, die HSQLDB schrieben. Sein viel besser, wenn Sie die Benchmarks auf ihrer Website vertrauen. Außerdem gibt es einige Vorstellung, dass Sonne Gemeinschaft sprang zu schnell in Derby.

Ich weiß, Sie SQL-Browsing erwähnt, aber alles andere in Ihrer Frage macht mich vorschlagen wollen betrachten Sie auch DB4O , welche eine große, einfache Objekt DB .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top