Delphi桌面应用程序的良好数据库需要建议

时间:2009-07-27 18:43:32

标签: database delphi desktop-application delphi-2009

我正在创建一个用Delphi编写的桌面应用程序 我正在为我的应用程序寻找数据库。

我对可用选项的数量感到有些不知所措。 我非常感谢其他开发人员根据他们的经验提出的一些建议和见解。

关键因素

  • 低或无购买成本。

  • 无分发费用。

  • 轻松处理多达35,000条记录,最好不超过100k。

  • 支持多个表格(在本例中最多10个)

  • Blob支持(二进制对象,图像等)

  • 可以作为应用程序安装集的一部分进行分发。 I.E.用户没有其他人的网站下载数据库安装程序。

  • 可以通过安装集以最少的用户交互进行安装和配置。 我的目标用户群在技术上并不倾向。

  • 性能合理。

  • 支持标准SQL语句(或合理关闭的东西)

  • 支持多个索引

不太重要

  • 数据库安装的大小
  • 安装在用户系统上的数据库大小。

不重要,但如果可用则很好

  • 多用户支持
  • 加密
  • 可扩展性

18 个答案:

答案 0 :(得分:21)

Firebird是一个很好的选择。它满足您的所有要求,有可用的优秀管理工具(IBExpert,即使免费版本是我用过DB的最佳工具),您可以在Delphi中编写自己的用户定义函数以满足特殊要求你的应用可能有。雅虎集团的支持小组似乎跳过任何人提交的任何支持请求。总而言之,对于我的桌面应用程序,我认为我不能做得更好。

答案 1 :(得分:10)

一个好的选择是使用SqliteDelphi 2009有一个包装器。

它将非常,非常好地处理这个大小的DB,并且完全免费使用和分发,稳定,强大,并且几乎支持您的所有要求。

答案 2 :(得分:6)

有趣的是没有人提到这一点,但是SQL Server Express(免费)会做你想要的一切。 Express版的数据库大小限制为4GB。您可以使用Devart's SQL Server Direct Access Components(简称SDAC)在Delphi应用程序中与它进行通信。

此外,可能值得特别关注2005 edition,因为其安装要求不是很重(2008需要.NET 3.0)。

答案 3 :(得分:3)

+100 for Firebird SQL Embedded,一个5-6MB DLL中的完整RDBMS。支持所有requerimets和更多

答案 4 :(得分:3)

  

ElevateDB是一个嵌入式SQL   可以编译的数据库引擎   直接进入你的应用程序和   提供本地单用户和多用户   访问(文件共享)和   使用提供的客户端 - 服务器访问   ElevateDB遵循的一部分   SQL 2003标准(ANSI / ISO 9075)。

ElevateDB中的一些标准功能包括:

  • 占地面积小
  • 多线程
  • ANSI / Unicode的
  • 排序规则
  • 在线备份
  • 序列化交易
  • 约束
  • 触发器
  • 浏览
  • 工作

答案 5 :(得分:2)

PostgreSQL是一个很棒的数据库服务器。它占地面积很小,您可以非常轻松地自定义安装。它的重量为或等于10mb即可发货,可以通过多种不同方式进行配置,以优化性能或系统使用。

有一个delphi接口:http://dbslim.berlios.de/

PostgreSQL的一个优点是它可以非常好地扩展(从非常小的部署到大型部署。)我在一些项目中使用它,我对它非常满意。

答案 6 :(得分:2)

MySQL 始终是一个明显的选择。您可以在应用程序中embed,因此您不需要服务器(您只需要包含libmysqld.dll以获得完整的数据库功能)。

它功能强大,速度快,相当轻巧,并且在需要时,您只需切换到“普通”MySQL服务器,而无需更改代码或查询。

无需安装。

一般来说,MySQL提供了大量免费的示例,文档,工具和驱动程序,但也与Delphi结合使用。

...........

这是清单:

  • 低或无购买成本。 它有2个许可证:GPL(免费)和商业许可证

  • 无需分发费用。 据我所知,您可以自由地重新发布

  • 轻松处理多达35,000条记录,没有任何问题,最好可达100k。 我正在使用包含最多30.000.000条记录的表格,并且它可以正常运行(如果您仔细考虑您的查询)

  • 支持多个表格(在这种情况下最多10个)检查

  • Blob支持(二进制对象,图像等)检查

  • 可以作为应用程序安装集的一部分进行分发。 I.E.用户没有其他人的网站下载数据库安装程序。 只需添加libmysqld.dll,就是这样

  • 可以通过安装集以最少的用户交互进行安装和配置。我的目标用户群在技术上并不倾向。 无需安装。它嵌入您的应用

  • 性能合理。 我能告诉你的速度非常快

  • 支持标准SQL语句(或合理关闭的内容)检查

  • 支持多个索引检查

  • 数据库安装的大小 LibMySqlD.dll是几兆字节

  • 安装在用户系统上的数据库大小。 当然取决于您的数据库。它没有被压缩

  • 多用户支持据我所知,嵌入式版本中没有多用户支持

  • 加密本机不支持加密数据文件,但存在第三方解决方案

  • 可伸缩性如果您的嵌入式服务器无法处理内容,可以在不更改代码或查询的情况下切换到“正常”或外部服务器

...........

限制:

您没有复制或事件,只有一个InnoDB线程,没有身份验证或授权机制,只有您的应用程序可以访问数据库(对嵌入式数据库有意义)。

答案 7 :(得分:2)

我对ComponentAce's绝对数据库运气不错。它会编译到您的应用程序中,以便您最终得到您的程序和数据库文件。它符合SQL 92与blob的兼容性,不会过多地破坏您的代码,具有多用户选项,可从大约100欧元开始使用。源代码和多用户选项最高可达350欧元,不便宜但没有分发许可证。

答案 8 :(得分:1)

看看NexusDB。我们发现它坚固而快速,周围有一个很好的社区。

答案 9 :(得分:1)

DBISAM我有很多运气。它已被ElevateDB取代,我将用于新项目。

我也喜欢我可以安装XCopy。

答案 10 :(得分:1)

DiSqlLite(SQLLIte的另一个包装器)是一个不错的选择。有很多管理utilities可以帮助您开始工作。部署非常简单。我通过编写执行所有数据库访问的delphi n-tier服务器在多用户项目中使用它。

答案 11 :(得分:0)

同样,由于每个响应都针对不同的数据库,因此结果看起来势不可挡。

我投票给SQLite。

然而......看起来Access数据库对你来说也很好。需要零安装,只需Windows,ADO或类似,你就可以了。

以下是访问限制的链接。

http://www.databasedev.co.uk/access_specifications.html

约翰

答案 12 :(得分:0)

为什么还没人提到MS Access数据库?所需的驱动程序(ADO / Jet)预装了每个最新版本的Windows(XP,Vista ...),支持多用户,加密,Blob和SQL,速度相当快。但要注意最大的数据库大小。

编辑:我真的不明白为什么这个答案被否决了。我已经多次使用MS访问dbs与Delphi,它运行良好。它当然不适用于繁重的多用户安装,并且它不是最快的,但这不是问题的要求。

答案 13 :(得分:0)

DBISAM和Elevate很棒。

答案 14 :(得分:0)

我的另一个选择是Dbase IV,V格式,具有全多用户支持自动编辑刷新功能。 我从www.softsci.com推荐了Topaz

我将它用于多用户和桌面应用程序。数据库永远不会崩溃并轻松处理数百万条记录。

Vitisan

答案 15 :(得分:0)

使用MySQL嵌入式(libmysqld.dll)非常简单方便。

但除非你有以下情况,否则你没有权利将libmysqld.dll重新发布到你的应用中:

  1. 向全世界打开您的应用源代码(GPL许可证) 或
  2. 从MySQL(现在的SUN)购买商业许可证 - 目前尚不清楚它的成本是多少

答案 16 :(得分:0)

像史蒂夫一样,我也对一个易于使用的数据库工具感兴趣。在过去的5到6年里,我在德尔福的编程并没有那么多。我开始使用Turbo Pascal 3.0,第二天去TP5买了名为Borland的TP6并降级到TP5.5。我购买了Delphi 3 Professional,升级到Delphi 5 Enterprise,这就是我现在拥有的。我刚刚下载了Delphi 2010的试用版。

我对Delphi与之交互的易于使用且易于部署数据库的缺乏感到沮丧。我喜欢SQL,我希望我的SQL代码在存储过程中。我希望能够测试我的SQL代码并在我的应用程序内外验证我的数据。

我花了2.5小时的时间来查看 ElevateDB 并阅读 Forums 。他们回答用户问题的方式让我印象深刻。我希望这个产品能按我认为的方式运作。我刚刚报名参加试用版下载。

答案 17 :(得分:0)

如果NexusDB过于昂贵,你可以试试FlashFiler,这是一个用Delphi编写的免费开源数据库。我认为它是NexusDB的祖先。它自成为开源以来几乎没有任何维护,但它有很好的文档记录,可以满足您的所有要求。

FlashFiler是免费的,支持blob,非常大量的记录,索引和表。它可以嵌入单个可执行程序(不需要DLL),也可以作为多用户客户机 - 服务器数据库运行。它速度快,并提供SQL和记录级访问。有一些轻量级的内置加密,或者你可以添加自己的例程。

例如,我有一个程序,它嵌入为单用户数据库,可执行文件是3MB,它不需要任何DLL。这可以非常容易地访问50个总大小为15MB的表。 (我还使用FlashFiler和更大的客户端 - 服务器数据库。)