4

SQLiteDISQLite之间有什么区别,为什么我要选择一个而不是另一个?

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

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

如果你想推荐另一个数据库工具,请告诉我为什么它比这两个更适合我的应用程序,尤其是在速度前沿。

4

5 回答 5

4

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。

于 2010-01-11T08:43:45.773 回答
2

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

于 2010-01-11T08:40:46.260 回答
1

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

这两个数据库都能够处理以 GB 为单位的数据。SQLite 在预编译的二进制文件中可用,即 DLL,它可以随您的应用程序分发。然而,有了可用的源代码,您也可以在您的应用程序中编译它并使用它,而无需 DLL。

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

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

于 2010-01-11T09:04:06.437 回答
1

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

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

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

于 2010-01-12T00:00:39.970 回答
1

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

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

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

于 2011-07-15T16:36:12.233 回答