两者有什么区别 SQLiteDISQLite 为什么我要选择其中一个而不是另一个?

我的上下文是,我正在处理一个大型数据库(可能高达 10 GB),其中的关键部分位于一个非常简单的表中,其中包含一个索引字段和一个大小最多为几 KB 的文本字段。我的开发工具是Delphi 2009,数据库将嵌入到我的.exe中。

我的主要标准是速度。这适用于在典型 Windows 计算机(例如 Windows 7 和 4 GB RAM)上运行的软件应用程序。

如果您想推荐另一个数据库工具,请告诉我为什么它比这两个工具更适合我的应用程序,特别是在速度方面。

有帮助吗?

解决方案

AFAIR,DISQLite使用Sqlite的obj文件,并用Delphi编译它们并产生比原始文件更多的功能,并且使用相同的sqlite DB格式,因此您可以通过支持Sqlite的其他语言读取DISQLite数据库文件司机。

DISQLite 的另一项功能是您无需分发 Sqlite DLL。

DISQLite 支持高达 2TB 的数据库大小,因此它可以毫无问题地满足您的需求。

我会考虑的另一个选择是 FireBird 嵌入式版本,如果您想进一步扩展它,您可以轻松更改为完整的 FireBird 服务器。

但我认为 Sqlite 和 DISQLite 的性能都会比 Firebird 更好。

我用 Audcom Sqlite 组件 访问 Sqlite 数据库,您可以使用 Sqlite objs 文件对其进行编译,这样您就不需要部署 sqlite dll。

其他提示

我可以建议您编写自己的实现。如果不需要复杂的 SQL 查询,最简单(也可能是最快)的实现是基于文件的存储。

DISQLLite 有两个版本,免费版本仅限个人和非商业用途。因此,这可能是决定因素之一,因为 SQLite 是免费的开源实现,没有免费/付费版本。

这两个数据库都能够处理 GB 级的数据。SQLite 以预编译的二进制形式提供,即DLL 可以随您的应用程序一起分发。但是,有了可用的源代码,您还可以在应用程序中对其进行编译并使用它,而无需 DLL。

使用 DLL 模块(有时)的优点是,当某些错误得到解决时,您只需在客户端计算机上替换 DLL,而不用重新编译整个应用程序。

我觉得 SQLite 将是满足您需求的更好选择。数据库的速度并不完全取决于数据库的类型。硬盘访问速度、可用处理能力、RAM 等硬件在加速数据库方面也发挥着重要作用。

请注意,DISQLLite 个人版本有一些限制,并且我认为当任何人都可以免费实现 SQLite 包装器时,专业版本的价格(149.99 欧元,无源)是不值得的。

我使用 DISQLite 个人版作为免费软件产品,并且必须在新版本发布中实施数据库更改。个人版本不支持“ALTER”,因此我不得不购买完整版本。所以我放弃了 DISQLite,只使用了一个好的 SQLite 包装器。仅当您准备支付完整版本时才选择 DISQLite。

SQLite4Delphi 可能是一个更好的选择,或者至少为您提供了一个更具成本效益的解决方案。

看看我们的 SynBigTable单元. 。将会是 比 SQLite 快得多, ,并且似乎完全符合您的目的。

如果您需要本机 SQLite 实现,请查看我们的 SQLite3框架: :它是免费且开源的,无需任何外部 dll。并且比封闭的 DiSQLite 有更多的功能(比如用于实现 SQL 函数或虚拟表的 Delphi 原生类)。

对于性能 POV,瓶颈不是您使用的包装器,而是磁盘访问以及您如何设置数据库。不要忘记使用 索引 尽快检索您的数据。那么,无论您使用什么包装器,即使 10 GB 的数据对于 SQLite 来说也不是问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top