比较数据库平台

时间:2009-09-23 15:43:57

标签: database database-design

我的雇主有一个数据库委员会,我们一直在讨论不同的平台。到目前为止,我们已经有人在SqlLite,MySQL和PostreSql上出现。我们目前使用Microsoft堆栈,所以我们都非常熟悉Microsoft Sql Server。

作为此比较的一部分,我认为为每个数据库平台创建一个小型参考应用程序以探索使用它所涉及的细节会很有趣。

首先:这个想法有意义还是比较需要超出简单的示例应用程序的范围?

第二:我认为每个参考应用程序都有一组离散但很少的要求,可以满足我们定期遇到的许多场景。这是我到目前为止,还有什么可以添加到列表中,但仍然保持应用程序足够小,以便在非常有限的时间内构建?

  • 来自应用层的连接

  • 数据库管理工具

  • 创建架构的过程(小“s”架构,表/视图/函数其他对象)

  • 简单CRUD(创建,检索,更新,删除)

  • 交易支持

第三:有没有人经历过这个过程,你的发现是什么?

6 个答案:

答案 0 :(得分:1)

  

这个想法是否有意义或是   比较需要超越   一个简单的样本申请范围?

我认为这不是一个好主意。大多数真正会影响您的事情是长期数据库管理问题,以及您选择的数据库管理系统如何处理这些问题。

你可能会在短期内受到诱惑,例如“我在3秒内发现如何使用XYZ数据库管理系统”。现在,我并不是说支持并不重要;恰恰相反。但是在3秒内在谷歌中找到答案意味着你得到了一个简单问题的答案。如果有的话,你能多快找到一个具有挑战性的问题的答案?

要考虑的重要事项的简短列表(并非详尽无遗)是:

  • 备份和恢复 - 在逻辑级别和物理级别
  • 对函数(或存储过程),触发器,各种SQL查询结构的良好支持
  • 允许真正可扩展性的API - 这些东西可以帮助您摆脱困境,让您以创造性的方式解决问题。使用用户定义的类型和功能可以实现的目标让您感到惊讶。用户定义的类型如何与索引系统交互?
  • SQL标准支持 - 并不胜过其他所有内容,但如果缺少某些方面的支持,请真正考虑为什么缺少,解决方法是什么,以及成本是多少?那些解决方法。
  • 一个强大的执行器,提供一系列基本算法(例如散列连接,合并连接等)和索引结构(btree,hash,也许是全文选项等)。如果缺少某些算法或索引结构,请考虑数据库在回答时效率低下的问题类型。注意:我不仅仅意味着“慢”;错误的算法很容易在数量级上变差。
  • 类型系统可以合理地代表您的业务吗?如果可用的类型组合非常弱,那么你就会陷入困境。将所有内容表示为字符串有点像汇编编程(无类型),而且你会有一团糟。

一个简单的应用程序不会向您展示任何这些东西。简单的事情很容易解决。如果你有一个“数据库委员会”,那么你的公司关心它的数据,你应该认真对待这个责任。您需要确保可以使用您和开发人员期望的结果轻松地在其上开发应用程序;当你遇到问题时,你需要有一个强大的系统和质量支持,可以帮助你完成它。

答案 1 :(得分:0)

我认为你不需要测试简单的CRUD东西,很难想象一个不支持基础知识的供应商。

答案 2 :(得分:0)

首先,在我的拙见中,你超出了示例应用的范围。

其次,我会选择最适合您希望开发的工具或应用程序。例如,与存储单用户应用程序配置的数据库相关的模式和事务是什么?

第三,我使用过Access,SQL Server,SQLite,MySQL,PostgreSQL和Oracle,他们都有自己的位置。如果您在MS空间,请使用SQL Server(并且不要忘记Express)。还有ADO.NET与我列表中的其他人交谈的方式。这取决于你想要什么。

答案 3 :(得分:0)

实际上,每个RDMS的学习能力更为重要。因为它取决于应用程序。如果您需要空间数据功能PostGIS与PostgreSQL比MySQL更好。如果您需要轻松复制,高可用性功能MySQL似乎更好。还有许可证问题。比较here的链接。一切都有优点和缺点。首先获得项目或项目的要求,然后将其与列出您选择的RDMS的功能进行比较,并确定要去哪个。

答案 4 :(得分:0)

坦率地说,我怀疑任意定义的简单应用程序可能会真正突出数据库引擎之间的差异。我认为你最好阅读各种引擎的广告文献,看看他们声称自己的优点。然后考虑哪些对您来说很重要,并构建专门用于验证您关注的声明的测试。

例如,这里有我最常使用的数据库引擎的优点和缺点。我并不认为这是一份详尽的清单,但它可能会让您了解需要考虑的事项:

MySQL:注意:MySQL内部有两个主要引擎:MyISAM和InnoDB。我从未使用过InnoDB。 优点:快。根据你的使用方式免费降价。用于管理模式的非常方便且易于使用的命令。 SQL标准的一些非常有用的扩展,例如“insert ... on duplicate”。 缺点:MyISAM引擎不支持事务,即没有回滚。 MyISAM引擎不管理您的外键。 (InnoDB没有这些缺点,但正如我所说,我从未使用它,所以我不能进一步评论。)许多偏离SQL标准。

Oracle:优点:快。通常与SQL标准的一致性很好。我的兄弟为甲骨文工作,所以如果你在那里买,你将帮助支持我的家人。 (好吧,也许那对你来说不是一个重要的职业选手...) 缺点:难以安装和管理。昂贵。

Postgres:优点:与SQL标准的一致性非常高。自由。很好的“解释”计划。 缺点:相对较慢。优化程序很容易在复杂查询上混淆。修改现有表格时有些尴尬。

访问权限:优点:易于安装和管理。非常容易使用模式管理。内置的数据输入工具和查询构建器,用于快速和脏东西。廉价。 缺点:慢。多个用户不可靠。

答案 5 :(得分:0)

我认为您可以调查Firebird too

这是关于yahoogroups的Firebird-General的摘录,我发现它非常客观

  

我们的天生观众是开发者   想要包装和销售专有   应用。火鸟更容易   包装和安装比Postgres;   比SQLite更强大;并没有   收取像MySQL这样的版税。