寻找 D2009+ 的本地数据库 [关闭]

Posted

技术标签:

【中文标题】寻找 D2009+ 的本地数据库 [关闭]【英文标题】:Looking for a local database for D2009+ [closed] 【发布时间】:2009-12-02 19:15:45 【问题描述】:

我正在尝试更新一个旧版应用程序,该应用程序将其所有数据存储在 BDE Paradox 文件的黑客系统中。该程序在某些狭窄条件下运行良好,但存在严重的性能问题。

我想通过更新到更好的数据库系统来尝试和改进。我需要的是一个本地数据库,最好是一个可以将整个内容存储在一个文件中的数据库,而不是当前的“每个表一个或多个文件”系统。它必须支持外键关系和表索引,并且必须能够从具有数十万个元素的表的查询中快速返回结果。

最后一个很重要。当前系统已编入索引,但这似乎无关紧要。所有查询似乎都在 O(N) 时间内运行,其中 N 是表的总大小,当表开始变大时,它变得非常慢。我不太确定为什么,但这必须消失。

它必须在 D2009 及更高版本下工作。谁能提供一些建议?

【问题讨论】:

【参考方案1】:

这里再次为嵌入式 Firebird(以及一般的 Firebird)投票!

我刚刚获得了将 Interbase 6.0 应用程序移植到嵌入式 Firebird 1.5 的真棒体验;在阅读文档片刻之后,实际转换花费了 20 分钟,现在我的应用程序在 Vista 和 Windows 7 中运行良好。如果您不需要多用户支持,那么我会认真考虑嵌入式 Firebird(如果您确实需要多用户支持,那么为什么不看看常规的 Firebird)。

它是用于数据库的单个文件和用于引擎的几个小 DLL,并且易于部署、维护和备份。在开发过程中有许多工具可以提供帮助,并且 Delphi 社区中对 IB 和 Firebird 的技术支持是首屈一指的。

SQL 支持在约束、触发器和存储过程方面非常出色(我们还有 UDF 来帮助增强语言 - DLL 可以用 Delphi 编写并用作数据库中的内联函数等。非常快速、非常灵活)。

关于性能的最后一点 - 无论如何,Interbase 总是非常活泼,到目前为止,我对嵌入式 Firebird 的体验是它“尖叫” - 真的,真的给我留下了深刻的印象。

【讨论】:

【参考方案2】:

我在 D2009 下使用了这个 SQLite Wrapper 并取得了很好的成功。我在几分钟内就启动并运行了它。它具有索引和非常低的开销。 (这个是免费的,除了 SQLite Dll 你不需要其他任何东西)

还有来自Delphi Inspiration 的商业 SQLite 包装器,该网站表示他们也有免费的非商业和教育用途许可证。那个我没用过。

我也使用过嵌入式 Firebird,但您还需要有连接组件才能与它通信。我有 IBObjects,这就是我用于服务器和嵌入式版本的东西。我尝试了其他免费的 Firebird 数据库组件,但还没有真正找到我喜欢或有信心的任何组件。

[编辑] 由于大多数人都建议使用 Firebird,以下是我过去尝试过或听说过的一些 Firebird 连接组件:

Mercury Database Objects - 免费/开源 IBObjects - 商业(我自己买了这个)FIBPlus - 商业 Firebirds ODBC Driver - 免费/开源 @987654327 @ - 免费/开源

【讨论】:

同时使用了 SQLite 和 Firebird。发现 SQLite 是更好的选择 +1 哦,有趣的列表,谢谢。我已经将 IBX 与 Interbase 和 Firebird 一起使用,尽管那是 D7 而不是 D2009。如果 IBX 在 2009/2010 年不可用,我可能会使用 FIBPlus(我们购买了许可证,但我们从未真正使用过它)或者我会寻找一个像样的 DBXPress 驱动程序作为我所有其他的东西(SQL Server,大部分)是使用 DBXPress 完成的,总的来说,它与 IBX 的基本内容没有/那个/不同。 另一个库 - AnyDAC (anydac.net)。它具有 Firebird 和 SQLite 原生驱动程序。【参考方案3】:

this question 中提供了一些很好的信息 - SQLite3 和 Firebird Embedded 似乎是不错的选择。

【讨论】:

【参考方案4】:

并发?

我在一个(非 Delphi)项目中使用了 SQLite,对此非常满意。

否则,我认为 Delphi 选择的嵌入式单文件 DBMS 似乎是 Firebird。

【讨论】:

【参考方案5】:

试用 Sybase 提供的 Advantage Database(从 Extended Systems 购买)

http://marketing.ianywhere.com/forms/ADS91-30-Day

如果您不需要客户端/服务器或互联网功能,它是免费的。

缺点是它不是 100% VCL,所以 VCL 包含静态链接到 DLL。

如果应用需要扩展,您无需再次更改数据库。

【讨论】:

【参考方案6】:

我建议使用 Postgresql 作为数据库,我们在我们工作的所有项目中都使用它,并在一张表中使用超过 400 万条记录对其进行了测试,并且运行良好。

【讨论】:

【参考方案7】:

另一种选择是使用 ADO 和 microsoft access 数据库。唯一的缺点是用户必须安装 Jet 引擎和 MDAC……大多数机器都这样做。这样做的好处是它使升级到 MSSQL 变得容易。只需将连接字符串更改为指向 SQL Server 数据库,并进行一些小的查询更改。

【讨论】:

【参考方案8】:

我已经使用NexusDB 多年了,它是一个小型、可靠、灵活的数据库。它是用 Delphi 编写的,带有完整的源代码,可以完全编译到您的应用程序中(无需分发 DLL)或作为客户端服务器系统运行。

很难知道它是否会满足您的性能要求,但只要我索引了正确的字段,我的 SQL 查询性能就没有问题。它是每个表格产品一个文件,但不要因此阻止您查看。

这是一个商业产品,但他们提供了一个仅限 DCU 的版本,只能在单用户/嵌入式应用程序中免费使用。

【讨论】:

【参考方案9】:

我正在完成一个大型应用程序的转换,该应用程序将 BDE/Paradox 用于本地数据库,将 Oracle 8i 用于远程数据库。

我正在使用 DevArt 的 UniDAC。这允许我使用单个组件集(完全不受旧 BDE 的影响),它可以将 MSSQLServer 作为本地数据库并继续将 Oracle 作为我的远程数据库。我现在可以更轻松地切换任一端的数据库,只需更改提供程序即可。

我喜欢这种方法,而且组件似乎做得很好。

杰伊 (D2007)

【讨论】:

【参考方案10】:

Postgresql 非常好,但它是一个重型机器,它更接近于 oracle,因此您可以执行非常繁重的应用程序,但维护起来有点痛苦

Firebird 是否出色的嵌入式 对于 2009 年的连接,您可以使用 devrace.com 的 FIB plus,他们有一个试用版,它只显示一个唠叨屏幕,所以如果它不是一个商业应用程序也可以。

否则,如果它是一个商业应用程序,你可以花 300 美元购买它,我还使用了用于 interbase/firebird 的 devart 组件,它们也非常好 如果你想免费使用 zeos 但你得到了你所支付的http://sourceforge.net/projects/zeoslib/ SQL lite 不是单个文件,如果它是多用户的,那就太糟糕了

【讨论】:

以上是关于寻找 D2009+ 的本地数据库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

本地化资产管理

HTML5 本地存储后备解决方案 [关闭]

是否有本地托管的基于 JSON api 的 CMS? [关闭]

断开与引用数据库的链接

iOS“本地”推送通知[关闭]

什么是国际化和本地化的好介绍和教程? [关闭]