Какая встроенная база данных имеет максимальное соответствие SQL и поддержка concurrency?

В моем приложении в настоящее время используется Microsoft Access, но теперь он может размещаться в ящиках Linux. Кроме того, при доступе с нескольких компьютеров один из них может обновлять записи (когда их читают другие пользователи).

Я также требую, чтобы встроенная база данных поддерживала сложные SQL-запросы - например, внутренний SQL, Joins и т.д.

Я попробовал SQLite, но многие из существующих запросов терпят неудачу или их необходимо исправлять (например, в простом запросе с использованием внутреннего соединения скобки после FROM не были приемлемыми для SQLite и должны были быть удалены). Правильное соединение тоже не поддерживается.

Я узнал о Apache Derby и H2, но сначала предпочтет ваше ценное мнение.

Edit:

Я забыл упомянуть, что мое приложение полностью написано на Java.

Edit:

В предустановленном режиме я использую Microsoft Access mdb, разделяемый на сетевом диске, создавая соединение с удаленными компьютерами без DSN.

Обновление

Я делал испытания с Firebird, и это действительно выглядит очень хорошо, нулевой администратор и SQL-совместимый. Это быстро, и у меня не было проблем ни в одном из типичных запросов, которые я мог бы попробовать. Я очень доволен этим, и, надеюсь, будет использовать его для проекта, для которого я поднял этот вопрос.

Надеюсь, сервер Advantage тоже будет хорош, но не смог успеть его просмотреть. После просмотра/использования Firebird не нужно ничего пробовать.

Ответы

Ответ 1

Я думаю, что Firebird.

Даже Cte поддерживаются в Firebird 2.1!

Firebird работает в Windows, Linux, Mac OS...

Драйвер Jaybird для Java.

Есть некоторые хорошие инструменты миграции из Access to Firebird:

  • IBDatapump
  • Конвертер базы данных Microsoft Access для Firebird (MDB2FDB)

Ответ 2

Я бы посмотрел на Advantage Database Server (sybase.com). Он работает в Windows, Linux и NetWare. У нас есть коммерческое приложение для учета/управления проектами для строительной отрасли и перешло на Advantage 6 или 7 лет назад. Мы очень довольны производительностью и поддержкой. Клиенты тоже очень довольны.

Ответ 5

Firebird является самой встроенной базой данных "compitible to SQL". Двигатель встроенной версии совпадает с версией сервера.

Обратите внимание, что при включенном Firebird только один клиент одновременно может подключаться к базе данных, поэтому вы можете использовать несколько соединений из одного и того же процесса, но не подключаться из разных процессов. Эта проблема исправлена ​​в Firebird 2.5 и выше.

Ответ 6

Наша компания также использует Advantage. Мы пришли к нему из фона XBase, но с тех пор обрели его природу SQL. Он работает на многих платформах (Windows, Linux, NetWare) и имеет множество драйверов (PHP, ADO, JDBC, ODBC, Crystal), так что он работает практически в любой среде, в которой вы могли бы программировать.