Frage

Ich mache die Entscheidung für eine embededded Datenbank in einer der nächsten Java-Servlet-Anwendung. Ich bin nur noch zwei letzte Anwärter. SQLite mit SQLiteJDBC "pure Java" Treiber vs Java DB (aka Derby)

Hier ist mein Killerkriterien: Die Anwendung muss auf jedem Betriebssystem laufen, dass Java unterstützt, und zwar haben wir Solaris, CentOS, Windows-x86 und Windows x64-Hosts, die alle brauchen, um die Anwendung ausgeführt wird. Und Installation muss nichts anderes als das Kopieren der WAR-Datei auf den Zielserver des Bereitstellungsordner einbeziehen und lassen den Server den Rest (das ist nichts anderes als nur eine Zip auf den Zielserver kopiert und dann den Server entpacken lassen und führen Sie die app). Es soll nicht mit nativen Binärdateien als Teil der Installation herumschlagen, und ohne zusätzliche Setup-Logik. (Das ist eigentlich nicht meine Forderung, es ist die Gesellschaft, für alle Servlet-basierte Anwendungen, aber ich mag es).

Ich weiß, dass Derby (Java DB) die obigen Kriterien erfüllt. Ich habe es einmal getan oder zweimal. Aber ich mag wirklich einzelne Datei Architektur SQLite und die Tatsache, dass die SQLite-Gemeinschaft ist etwa 20-mal größer als die von Derby. Ich habe auch eine Angst, dass Oracle Derby einen Tag töten, wie sie jetzt so etwas wie fünf konkurrierende Datenbankprodukte unter ihrem Dach haben, und das kann nicht ewig weitergehen. Derby wird wahrscheinlich das erste Opfer sein, wenn Housekeeping beginnt.

Also, ich war auf der Suche SQLiteJDBC, die Ansprüche „pure Java“ JDBC-Treiber für SQLite haben. Nun würde ich „reine Java“ zu verstehen, versteht, dass es keine OS-Abhängigkeiten oder zusätzliche Bibliotheken, dass man den Treiber in jeder JVM auf jedem Betriebssystem laufen kann. Also, ich gehe und die JAR-Datei mit dem rein Java Treibern. Und die Neugierigen Art zu sein, sehe ich in seinem Inneren. Dann merke ich, es enthält vier Dateien im Stamm mit „Lib“ Erweiterungen wie folgt:

linux-amd64.lib
linux-x86.lib
mac-universal.lib
win-x86.lib

Ok, also, was ist oben mit dem? Sind diese wie native Bibliotheken für das genannte OS? Wenn ja, kann ich diese reinen Java-Treiber übernehmen werden nur mit einer entsprechenden Lib-Datei in dem Glas auf einer Plattform laufen? Wenn das der Fall ist, werde ich beklagens SQLite nehmen aus der Liste der Anwärter, weil winX64 und Solaris unsere beiden wichtigsten OS sind hier ist.

Oder vielleicht habe ich falsch interpretiert und der reine Java-Treiber ist wirklich reine Java und es wird in jedem JVM laufen?

Alle Antworten willkommen !!!

Vielen Dank im Voraus, John

War es hilfreich?

Lösung

Wenn ich richtig verstehe, SQLiteJDBC selbst sind ein Typ 4 JDBC-Treiber erfordert aber noch einige einheimische binäre Integration mit der Host-Betriebssystem-Plattform, da SQLite ist immer noch eine C-basierte Lösung und nicht über eine Netzwerkintegration / Protokollschicht wie SQL * Net für Oracle, soweit ich weiß. Die SQLiteJDBC Homepage erwähnt eine „NestedVM“ Implementierung für jede von GCC unterstützten Sprache, so dass es möglich erscheint Cross-Plattform bereitstellen, wo immer es GCC-Laufzeitumgebung ist. Es gab jedoch keine Erwähnung von Solaris.

Andere Tipps

http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC -. Bietet eine reine Java-Implementierung, obwohl es die LIB-Dateien zur Verfügung gestellt nicht verwendet, wo möglich, da sie schneller sind

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