2009-09-17 14 views
15

Meine Anwendung verwendet derzeit Microsoft Access, aber jetzt möglicherweise auf Linux-Boxen gehostet. Während eines Zugriffs von mehreren Computern kann eine davon die Datensätze aktualisieren (wenn sie von anderen Benutzern gelesen werden).Welche eingebettete Datenbank bietet maximale SQL-Konformität und gleichzeitige Unterstützung?

ich auch verlangen, dass die eingebettete Datenbank komplexe SQL-Abfragen unterstützen sollte - wie innerer SQL, tritt usw.

Ich versuchte SQLite, aber viele der vorhandenen Abfragen fehlschlagen, oder muß (wie in einem festzulegenden einfache Abfrage mit inneren verbinden die Klammern nach FROM war nicht akzeptabel für SQLite und musste entfernt werden). Rechter Join wird ebenfalls nicht unterstützt.

Ich habe über Apache Derby und H2 erfahren, würde aber zuerst Ihre wertvolle Meinung bevorzugen.

Edit:

Ich vergaß zu erwähnen, dass meine Bewerbung vollständig in Java geschrieben ist.

Edit:

Bei voreingestellten ich Microsoft Access mdb verwenden, auf Netzlaufwerk gemeinsam genutzt, so dass DSN Verbindung von Remote-Computern.

aktualisieren

Ich habe Versuche mit Firebird, und es scheint wirklich sehr gut, Null admin, und SQL-konform. Es ist schnell und ich hatte keine Probleme mit den typischen Abfragen, die ich ausprobieren könnte. Ich bin sehr zufrieden damit und werde es hoffentlich für das Projekt verwenden, für das ich diese Frage gestellt habe.

Hoffentlich wird Advantage Server auch gut sein, konnte aber keine Zeit finden, es zu überprüfen. Nachdem Sie Firebird überprüft/verwendet haben, brauchen Sie nichts anderes mehr zu versuchen.

+0

Nach [HSQLDB] (http://hsqldb.org/doc/guide/sqlgeneral-chapt.html#sgc_standards), sie unterstützt die meisten SQL-Standardfunktionen unter allen Open-Source-RDBMS. – nawfal

Antwort

13

Ich denke, es ist Firebird.

In Firebird 2.1 werden sogar Cte's unterstützt!

Firebird arbeitet unter Windows, Linux, Mac OS ...

Jaybird Treiber für Java.

Es gibt einige gute Migrationstools von Zugriff auf Firebird:

+0

Danke für die Erinnerung an Firebird. Sieht gut aus. Viele Übersichten/Vergleiche erwähnen jedoch, dass die meisten Firebird-Entwicklerwerkzeuge trotz ihrer ausgereiften Datenbank kommerzielle Produkte von Drittanbietern sind. – vikramsjn

+2

- IBExpert (www.ibExpert.com) haben persönliche Ausgabe - Datenbank Workbench (www.upscene.com) haben auch persönliche Ausgabe Sie können auch FlameRobin verwenden (www.flamerobin.org) –

+0

Für die Datenbank zugegriffen/verbunden werden von mehreren Computern, und um vom gehosteten System zu aktualisieren - es scheint, dass es in nicht eingebetteten, das heißt Server-Modus eingerichtet werden muss. Wird dies eine gewisse Verwaltung erfordern? Eigentlich war ich auf der Suche nach eingebetteten Datenbanken wegen ihrer Einfachheit der Administration. – vikramsjn

1

Firebird das ist den meisten "comptible to SQL" Embedded Datenbank. Die Engine der Embedded-Version entspricht der Server Edition.

Achten Sie darauf, dass bei eingebetteten Firebird nur jeweils ein Client eine Verbindung zur Datenbank herstellen kann. Sie können also mehrere Verbindungen vom selben Prozess, aber keine Verbindung von verschiedenen Prozessen herstellen. Dieses Problem wurde in Firebird 2.5 und höher behoben.

6

Ich würde mir den Advantage Database Server (sybase.com) ansehen. Es läuft unter Windows, Linux und NetWare. Wir haben eine kommerzielle Buchhaltung/Projektmanagement-Anwendung für die Bauindustrie und sind vor 6 oder 7 Jahren auf Advantage umgestiegen. Wir waren sehr zufrieden mit der Leistung und Unterstützung. Kunden sind auch sehr glücklich.

+0

Ich würde hinzufügen, dass Advantage einen JDBC-Treiber vom Typ 4 bietet, der großartige Java-Unterstützung bietet. Auch Advantage hat großartige Abfrageoptimierungstools und das GUI-Datenbankprogramm hat einen SQL-Debugger! Weitere Treiber sind ODBC, PHP, .NET, Delphi und OLE DB. – Joshery

1

Unsere Firma benutzt Advantage. Wir kamen von einem XBase Hintergrund, aber haben seitdem seine SQL-Natur angenommen. Es läuft auf vielen Plattformen (Windows, Linux, NetWare) und hat eine Reihe von Treibern (PHP, ADO, JDBC, ODBC, Crystal), so dass es in fast jeder Umgebung funktioniert, in der Sie programmieren könnten.