Какая встроенная база данных имеет максимальное соответствие 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:
Ответ 2
Я бы посмотрел на Advantage Database Server (sybase.com). Он работает в Windows, Linux и NetWare. У нас есть коммерческое приложение для учета/управления проектами для строительной отрасли и перешло на Advantage 6 или 7 лет назад. Мы очень довольны производительностью и поддержкой. Клиенты тоже очень довольны.
Ответ 3
Вы можете найти довольно подробное описание соответствия Derby SQL Standards здесь: http://wiki.apache.org/db-derby/SQLvsDerbyFeatures
Ответ 4
Это может быть полезно в ваших исследованиях: Сравнение реляционных систем управления базами данных.
Я лично хотел бы серьезно взглянуть на Firebird. Это кросс-платформенный, имеет собственный . NET-провайдер и поддерживает ссылки, которые вы упоминаете.
Ответ 5
Firebird является самой встроенной базой данных "compitible to SQL". Двигатель встроенной версии совпадает с версией сервера.
Обратите внимание, что при включенном Firebird только один клиент одновременно может подключаться к базе данных, поэтому вы можете использовать несколько соединений из одного и того же процесса, но не подключаться из разных процессов. Эта проблема исправлена в Firebird 2.5 и выше.
Ответ 6
Наша компания также использует Advantage. Мы пришли к нему из фона XBase, но с тех пор обрели его природу SQL. Он работает на многих платформах (Windows, Linux, NetWare) и имеет множество драйверов (PHP, ADO, JDBC, ODBC, Crystal), так что он работает практически в любой среде, в которой вы могли бы программировать.