哪种嵌入式数据库具有最大的 SQL 合规性和并发支持?
我的应用程序目前使用 Microsoft Access,但现在可能托管在 Linux 机器上。此外,当从多台计算机访问时,其中一台计算机可能会更新记录(当其他用户读取该记录时)。
我还要求嵌入式数据库应该支持复杂的 SQL 查询 - 例如内部 SQL、联接等。
我尝试了 SQLite< /a>,但是许多现有查询失败,或者需要修复(就像在使用内连接的简单查询中,FROM 后面的括号对于 SQLite 来说是不可接受的,必须删除)。也不支持右连接。
我开始了解 Apache Derby 和 H2,但首先希望您提出宝贵意见。
编辑:
我忘了提及我的应用程序完全是用 Java 编写的。
编辑:
默认情况下,我使用在网络驱动器上共享的 Microsoft Access mdb,从远程计算机建立无 DSN 的连接。
更新
我用 Firebird 进行了试验,它看起来确实非常好,零管理,并且兼容 SQL。它速度很快,而且我在尝试使用它进行的任何典型查询中都没有遇到任何问题。我对它非常满意,并希望将其用于我提出这个问题的项目。
希望 Advantage Server 也很好,但没有时间审查它。在审查/使用 Firebird 后,我觉得没有必要尝试其他任何东西。
My application at present uses Microsoft Access, but now may be hosted on Linux boxes. Additionally while being accessed from multiple computers, one of these may update the records (when its being read by other users).
I also require that the embedded database should support complex SQL queries - like inner SQL, Joins, etc.
I tried SQLite, but many of the existing queries fail, or need to be fixed (like in a simple query using inner join the brackets after FROM was not acceptable to SQLite, and had to be removed). Right join too is not supported.
I came to know about Apache Derby and H2, but would first prefer your valuable opinion.
Edit:
I forgot to mention that my application is entirely written in Java.
Edit:
At preset I use Microsoft Access mdb, shared on network drive, making DSN-less connection from remote computers.
Update
I did trials with Firebird, and it really does seem very good, zero admin, and SQL compliant. It is fast, and I had no problems in any of the typical queries I could try on it. I am very satisfied with it, and hopefully will use it for the project for which I raised this question.
Hopefully Advantage Server too will be good, but could not get time to review it. After reviewing/using Firebird do not feel any need to try anything else.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我认为它是Firebird。
Firebird 2.1 甚至还支持 Cte!
Firebird 适用于 Windows、Linux、Mac OS...
Jaybird Java 驱动程序。
有一些很好的从 Access 到 Firebird 的迁移工具:
I think it's Firebird.
Even Cte's are supported in Firebird 2.1 !
Firebird works on Windows, Linux, Mac OS...
Jaybird driver for Java.
There are some good migration tools from Access to Firebird:
我会看一下 Advantage 数据库服务器 (sybase.com)。它可以在 Windows、Linux 和 NetWare 上运行。我们有一个针对建筑行业的商业会计/项目管理应用程序,并在六七年前切换到 Advantage。我们对性能和支持非常满意。顾客也非常高兴。
I would take a look at the Advantage Database Server (sybase.com). It runs on Windows, Linux, and NetWare. We have a commercial accounting / project management application for the construction industry and switched to Advantage 6 or 7 years ago. We have been extremly pleased with the performance and support. Customers are very happy too.
您可以在此处找到有关 Derby SQL 标准合规性的相当详细的描述:http://wiki.apache。 org/db-derby/SQLvsDerbyFeatures
You can find a fairly detailed description of Derby's SQL Standards compliance here: http://wiki.apache.org/db-derby/SQLvsDerbyFeatures
我们公司也在使用 Advantage。我们来自 XBase 背景,但后来接受了它的 SQL 本质。它可以在许多平台(Windows、Linux、NetWare)上运行,并具有大量驱动程序(PHP、ADO、JDBC、ODBC、Crystal),因此它几乎可以在您可能进行编程的任何环境中运行。
Our company is using Advantage as well. We came at it from an XBase background, but have since embraced its SQL nature. It runs on a lot of platforms (Windows, Linux, NetWare) and has a bunch of drivers (PHP, ADO, JDBC, ODBC, Crystal) so that it works in just about any environment in which you might program.
这可能对您的研究有所帮助:关系数据库管理系统的比较。
我个人建议认真看看 Firebird。它是跨平台的,有一个原生 .NET 提供程序并支持您提到的联接。
This might be helpful in your research: Comparison of relational database management systems.
I personally would suggest taking a serious look at Firebird. It is cross-platform, has a native .NET provider and supports the joins you mention.
Firebird 是最“兼容 SQL”的嵌入式数据库。嵌入式版本的引擎与服务器版本相同。
请注意,使用嵌入的 Firebird 一次只能有一个客户端连接到数据库,因此您可以从同一进程跨越多个连接,但不能从不同进程进行连接。此问题在 Firebird 2.5 及更高版本中已修复。
Firebird is the most "comptible to SQL" embedded database. The engine of the embedded version is the same as the server edition.
Pay attention that with Firebird embedded only one client at a time can connect to the database, so you can span multiple connection from the same process but not connect from different processes. This issue is fixed in Firebird 2.5 and above.