2009-09-17 11 views
15

Moja aplikacja obecnie używa Microsoft Access, ale teraz może być hostowana na Linux-ach. Dodatkowo podczas uzyskiwania dostępu z wielu komputerów, jeden z nich może aktualizować rekordy (gdy jest czytany przez innych użytkowników).Która wbudowana baza danych ma maksymalną zgodność z językiem SQL i obsługę współbieżności?

ja również wymagać, że wbudowana baza danych powinna wspierać złożonych zapytań SQL - jak wewnętrznej SQL, połączeń itp

Próbowałem SQLite, ale wiele z istniejących zapytań zawodzą, lub muszą być ustalone (jak w sposób prosta kwerenda używająca wewnętrznego sprzężenia z nawiasami po FROM była niedopuszczalna dla SQLite i musiała zostać usunięta). Prawostronne dołączanie też nie jest obsługiwane.

Dowiedziałem się o Apache Derby i H2, ale najpierw wolę cenną opinię.

Edit:

Zapomniałam wspomnieć, że moja aplikacja jest w całości napisany w języku Java.

Edit:

w ustawionych używam Microsoft Access MDB, dzielone na dysku sieciowym, dzięki czemu DSN-mniej połączenia z komputerów zdalnych.

Aktualizacja

robiłem próby z Firebird i naprawdę wydaje się bardzo dobry, zero Administrator i zgodny SQL. Jest szybki i nie miałem problemów z żadnymi typowymi zapytaniami, które mogłem wypróbować. Jestem z niego bardzo zadowolony i mam nadzieję, że wykorzystam go do projektu, na który podniosłem to pytanie.

Mam nadzieję, że serwer Advantage również będzie dobry, ale nie będzie miał czasu, aby go przejrzeć. Po sprawdzeniu/użyciu Firebird nie musisz próbować niczego innego.

+0

Według [hsqldb] (http://hsqldb.org/doc/guide/sqlgeneral-chapt.html#sgc_standards), to obsługuje najszerszy zakres standardowych funkcji SQL wśród wszystkich otwartych źródeł RDBMS. – nawfal

Odpowiedz

13

Myślę, że to Firebird.

Nawet Cte's są obsługiwane w Firebird 2.1!

Firebird działa na Windows, Linux, Mac OS ...

Jaybird driver for Java.

Istnieje kilka dobrych narzędzi do migracji z programu Access do Firebird:

+0

Dzięki za przypomnienie o Firebird. Wygląda dobrze. Jednak wiele recenzji/porównań wspomina, że ​​pomimo bycia dojrzałą bazą danych, większość narzędzi programistycznych firebird to produkty komercyjne firm trzecich. – vikramsjn

+2

- IBExpert (www.ibExpert.com) ma osobową edycję - Baza danych bazy danych (www.upscene.com) również posiada edycję osobistą Możesz także użyć FlameRobin (www.flamerobin.org) –

+0

Aby uzyskać dostęp do bazy danych/połączenia z wielu komputerów i do aktualizacji z systemu hostowanego - wydaje się, że będzie to wymagać instalacji w nie-osadzonym, czyli w trybie serwera. Czy będzie to wymagało dość administracji? Właściwie szukałem osadzonych baz danych ze względu na ich prostą administrację zerową. – vikramsjn

1

Firebird jest najbardziej "comptible do SQL" wbudowany Baza danych. Silnik wersji wbudowanej jest taki sam, jak wersja serwera.

Należy zwrócić uwagę, że z Firebird wbudowanym tylko jeden klient naraz może połączyć się z bazą danych, dzięki czemu można połączyć wiele połączeń z tego samego procesu, ale nie można łączyć się z innymi procesami. Ten problem został naprawiony w Firebird 2.5 i wyżej.

6

Chciałbym rzucić okiem na serwer bazy danych Advantage (sybase.com). Działa na systemach Windows, Linux i NetWare. Posiadamy komercyjną aplikację do zarządzania rachunkowością/projektami dla branży budowlanej i przełączyliśmy się na Advantage 6 lub 7 lat temu. Byliśmy wyjątkowo zadowoleni z wydajności i wsparcia. Klienci są również bardzo szczęśliwi.

+0

Dodam, że Advantage ma sterownik JDBC typu 4 zapewniający świetną obsługę Java. Również Advantage ma świetne narzędzia do optymalizacji zapytań, a narzędzie do bazy danych GUI ma debugger SQL! Inne sterowniki to ODBC, PHP, .NET, Delphi i OLE DB. – Joshery

1

Nasza firma korzysta również z Advantage. Doszliśmy do tego z tła XBase, ale od tego czasu przyjęliśmy jego charakter SQL. Działa na wielu platformach (Windows, Linux, NetWare) i posiada mnóstwo sterowników (PHP, ADO, JDBC, ODBC, Crystal), dzięki czemu działa w niemal każdym środowisku, w którym można programować.