Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 对于一个大型的简单数据库,SQLite和DISQLite如何比较?_Delphi_Sqlite_Embedded Database - Fatal编程技术网

Delphi 对于一个大型的简单数据库,SQLite和DISQLite如何比较?

Delphi 对于一个大型的简单数据库,SQLite和DISQLite如何比较?,delphi,sqlite,embedded-database,Delphi,Sqlite,Embedded Database,和之间的区别是什么?为什么我要选择一个而不是另一个 我的背景是,我正在处理一个大型数据库(可能高达10GB),其关键部分是在一个非常简单的表中,其中有一个索引字段和一个大小不超过几KB的文本字段。我的开发工具是Delphi2009,数据库将嵌入My.exe中 我的主要标准是速度。这将适用于在典型的Windows计算机上运行的软件应用程序,比如Windows7和4GB的RAM 如果您想推荐另一种数据库工具,请告诉我为什么它比这两种工具更适合我的应用程序,尤其是在速度前沿。我可以建议您编写自己的实现

和之间的区别是什么?为什么我要选择一个而不是另一个

我的背景是,我正在处理一个大型数据库(可能高达10GB),其关键部分是在一个非常简单的表中,其中有一个索引字段和一个大小不超过几KB的文本字段。我的开发工具是Delphi2009,数据库将嵌入My.exe中

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


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

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

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

DISQLite还有一个特性,您不必分发Sqlite DLL

DISQLite支持最大2TB的数据库大小,因此它可以毫无问题地处理您的需求

我将考虑的另一个选项是FixBube嵌入式版本,如果你想对它进行更多的缩放,你可以不费很大力气就变成FierBiver服务器。

但我认为Sqlite和DISQLite都会比Firebird表现得更好


我使用访问Sqlite数据库,您可以使用Sqlite objs文件编译它,这样您就不会部署Sqlite dll。

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

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

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


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

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

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

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

看看我们的。这将是,而且似乎完全符合你的目的

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


对于性能POV,瓶颈将不是您正在使用的包装器,而是磁盘访问以及如何设置数据库。别忘了使用它尽可能快地检索数据。那么,对于SQLite来说,即使是10GB的数据也不会是问题,不管您使用的是什么包装器。

我已经考虑过这个想法一段时间了。请看:我同意,实际上顺序读/写的性能最快…但随机读的访问性很差。如果您需要对大型数据集进行索引访问,请使用引擎…如果数据集相对较小,或仅按写入顺序读取,请使用基于文件/流的解决方案。感谢您认为它们的性能优于Firebird。但正如Kavitesh所说,SQLite可以用源代码编译到我的应用程序中,不需要DLL。从SQLite开始:SQLite合并将所有预处理的C代码合并到一个源文件中,可以在应用程序中使用并一起编译。因为我没有在delphi上工作过,所以我不会评论它是否可以直接编译C代码,或者是否需要DLL来访问所有API。他指的是原始sqlite库的源代码,它是用C编写的,如果你阅读了我回答中的最后一段,你也可以用Audcom sqlite组件来完成,因此,您不必将Sqlite Dll与应用程序一起分发。但为什么您认为Sqlite对我更有利?我知道速度取决于外部因素,但对于运行Vista或4GB内存的Windows7的标准windows机器,这对我来说会更好(我也会把这个添加到我的问题中)。SQLite是开源的,没有任何限制。如果您查看DISqlite的比较表,您会发现大多数功能都是付费版本。另外,由于您没有查看企业级数据库,我觉得性能差异可以忽略不计。同时,现在DISQLite提供免费版本,他们可能会停止或在以后以某种价格提供。这可能是个问题。此外,SQLite正在进行积极的社区开发,使更新更容易获得。您的意思是数据库引擎(而不是数据库文件本身)将嵌入到可执行文件中,对吗?是的。数据库仍然是基于磁盘的。感谢您发布此消息。阿尔斯