选择正确的数据库:MySQL与其他一切

选择正确的数据库:MySQL与其他一切,sql,mysql,oracle,postgresql,database,Sql,Mysql,Oracle,Postgresql,Database,这几天似乎每个人都在使用MySQL,因为每个人都在使用MySQL。我正在开发一个web应用程序,它将处理大量传入的数据,我想知道我是否应该“只使用MySQL”,还是应该看看其他开源数据库,甚至是商业数据库 编辑:应该提到的是,我正在寻找最佳性能,与Debian 5上运行的Ruby + Rails集成,钱很紧,但如果从长远来看,它会节省资金,我会考虑投资一些更贵的东西。它更像甲骨文 Mysql很棒,mssql也很棒。我没用过别的东西。我想说,如果你完全站在篱笆上,那就使用你最强大的技术。我有大量的

这几天似乎每个人都在使用MySQL,因为每个人都在使用MySQL。我正在开发一个web应用程序,它将处理大量传入的数据,我想知道我是否应该“只使用MySQL”,还是应该看看其他开源数据库,甚至是商业数据库


编辑:应该提到的是,我正在寻找最佳性能,与Debian 5上运行的Ruby + Rails集成,钱很紧,但如果从长远来看,它会节省资金,我会考虑投资一些更贵的东西。它更像甲骨文

Mysql很棒,mssql也很棒。我没用过别的东西。我想说,如果你完全站在篱笆上,那就使用你最强大的技术。我有大量的c#、asp.net和其他Microsoft堆栈经验,因此我很自然地专门研究mssql。如果您更熟悉*nix、php等,那么您可能更习惯于使用开源堆栈。你当然可以将这两个堆栈混合搭配,但坚持一个世界或另一个世界可以为你避免一些痛苦。

“现在似乎每个人都使用MySQL,因为每个人都使用MySQL。”如果MySQL是人们唯一使用的东西,那么为什么Oracle和MSSQL仍然存在

关于选择哪个数据库引擎的争论可以一直讨论到奶牛回家。我个人在选择数据库引擎时总是发现一个常量。一般来说,你买得起的就是你想要的


如果你能证明在数据库上花费XXX是合理的,那么你可能已经知道选择它的原因了。

好吧,世界上的RDBMS之间可能存在差异。 看看

以此为指导,你应该能够缩小你的选择范围

需要记住的几件事:

SQLServer2005Express的文件大小限制为4GB,但在.NET和Java语言中有极好的支持

MySQL将同时在Windows和Linux上运行,许多语言(包括.NET和Java)通过外部库支持MySQL


SQLite有效地得到了每个操作系统的支持,并且可以作为应用程序的集成部分分发。

就我个人而言,我尽量避免使用MySQL,原因如下:

  • 默认存储引擎MyISAM缺少支持。但是,由于明显的原因,它不支持MyISAM表的外键
  • 如果我试图插入无效数据,MySQL会很乐意为我更改它。
  • 非法的日期时间、日期或时间戳值被转换为“零”:
  • Varchar和Char类型列:
  • 数字数据类型取决于SQL严格模式:
  • 这些东西对某些人来说可能并不重要,但在数据质量方面,我更愿意使用其他东西。

    Borland的Interbase的开源和分支版本非常好,它可以在大多数(所有?)风格的Linux上运行,而且性能非常好。我不是一个RoR的家伙,所以我不知道细节,但我在新西兰有一个朋友,他在所有的RoR项目中都使用Firebird,它肯定与RoR一起工作,并且工作得很好


    编辑:
    找到了Firebird Rails适配器的链接

    如duffymo,我也推荐PostgreSQL。从开发人员的角度来看,这非常好:
    在许多平台(基于unix和Windows)上工作,与我工作过的任何语言/环境(Windows、Linux、Delphi、Java、Perl、Python)都有不同的稳定接口。存储过程语言:PLPGSQL也简单而强大。用户支持(新闻组、列表等)很好,也很有帮助。

    请对那些可能有困难的人提出的理想主义观点保持警惕。MySQL对于许多问题来说都是一个功能强大、可扩展的解决方案,但这通常不是开箱即用的,因为它的默认设置非常保守。与任何数据库产品一样,您需要花时间调整其安装以获得所需的性能。您还需要花一些时间来适应它的局限性,这对于您选择的任何数据库都是如此


    MySQL的流行部分是自创的:很多主机提供商都提供了MySQL,所以很多人都使用它。

    我之前已经发布过这篇文章,但我没有理由改变这条建议:

    MySQL更容易开始使用

    更好的UI工具。如果不使用酸,速度会更快。对无效数据的容忍度更高。自动增量列与键入自动增量一样简单。权限与文件系统和操作系统用户没有那么紧密的联系。在编写存储过程时,设置分隔符比使用PG的“美元符号引号”更容易。在MySQL中,您可以连接到所有数据库,而不是一次只连接一个数据库

    Postgres(PG)更符合标准,但它更丑陋、更复杂,特别是从UI的角度来看。它过去需要手动吸尘,实际上强制执行引用完整性(这是一件很好的事情,可能会让人感到痛苦)。Autoincrement更灵活,但需要序列(可以使用串行屏蔽),等等,OID是什么

    因此,如果您不太了解或关心数据库、数据有效性、ACID法规遵从性等,但确实关心易用性和速度,那么您倾向于使用MySQL

    太多(不是全部,但很多)“web程序员”知道很多关于“Web2.0”或PHP或Java的知识,但对数据库理论或实践知之甚少(“索引?那是什么?”)。他们倾向于将数据库视为一个奇特的哈希表或数据包,实际上,它并不像哈希表那样具有动态可更改性或可原谅性

    对于这些人来说,MySQL——因为在5.0之前它还不是真正的RDBMS,而且在很多方面仍然不是——是天赐之物。它比竞争对手“更快”,而且不会在“深奥”数据上“浪费时间”