我的应用程序目前使用 Microsoft Access,但现在可能托管在 Linux 机器上。此外,当从多台计算机访问时,其中一台计算机可能会更新记录(当其他用户读取该记录时)。
我还要求嵌入式数据库应该支持复杂的 SQL 查询 - 比如内部 SQL、Join 等。
我尝试了SQLite,但是许多现有查询失败,或者需要修复(就像在使用内连接的简单查询中,FROM 后面的括号对于 SQLite 来说是不可接受的,必须删除)。也不支持右连接。
我开始了解 Apache Derby 和 H2,但首先希望获得您的宝贵意见。
编辑:
我忘了提及我的应用程序完全是用 Java 编写的。
编辑:
默认情况下,我使用 Microsoft Access mdb,在网络驱动器上共享,从远程计算机进行无 DSN 的连接。
我会看一下 Advantage 数据库服务器 (sybase.com)。它可以在 Windows、Linux 和 NetWare 上运行。我们有一个针对建筑行业的商业会计/项目管理应用程序,并在六七年前切换到 Advantage。我们对性能和支持非常满意。顾客也很开心。
您可以在此处找到有关 Derby SQL 标准合规性的相当详细的描述:http://wiki.apache.org/db-derby/SQLvsDerbyFeatures
我们公司也在使用Advantage。 我们来自 XBase 背景,但后来接受了它的 SQL 本质。 它可以在许多平台(Windows、Linux、NetWare)上运行,并拥有大量驱动程序(PHP、ADO、JDBC、ODBC、Crystal),因此它几乎可以在您可能进行编程的任何环境中工作。
这可能对您的研究有所帮助:关系数据库管理系统的比较。
我个人建议认真看看 Firebird。它是跨平台的,具有本机 .NET 提供程序,并支持您提到的连接。
Firebird是最“兼容SQL”的嵌入式数据库。嵌入式版本的引擎与服务器版本相同。
请注意,使用 Firebird 嵌入时,一次只能有一个客户端连接到数据库,因此您可以从同一进程跨越多个连接,但不能从不同进程连接。此问题已在 Firebird 2.5 及更高版本中修复。