这些天来,似乎每个人都会 Select MySQL,因为这正是每个人都会 Select 的.我正在开发一个Web应用程序,它将处理大量传入数据,我想知道我是应该"只使用MySQL",还是应该考虑一下其他开源数据库,甚至是商业数据库?
编辑:应该提到的,我正在寻找最佳性能,与Debian 5上运行的Ruby + Rails集成,钱是紧的,但如果从长远来看,这将节省资金,我会考虑投资到更昂贵的东西.
这些天来,似乎每个人都会 Select MySQL,因为这正是每个人都会 Select 的.我正在开发一个Web应用程序,它将处理大量传入数据,我想知道我是应该"只使用MySQL",还是应该考虑一下其他开源数据库,甚至是商业数据库?
编辑:应该提到的,我正在寻找最佳性能,与Debian 5上运行的Ruby + Rails集成,钱是紧的,但如果从长远来看,这将节省资金,我会考虑投资到更昂贵的东西.
我以前发布过这个,但我没有理由改变这个建议:
MySQL更容易开始使用.
更好的UI工具.更快,如果你不用酸的话.对无效数据的容忍度更高.自动增量列与键入自动增量一样简单.权限不同于文件系统和操作系统用户.在编写存储过程时,设置分隔符比使用PG的"美元符号引号"更容易.在MySQL中,您可以连接到所有数据库,而不是一次只连接一个数据库.
Postgres(PG)更符合标准,但它更丑陋、更复杂,尤其是从用户界面的Angular 来看.它过go 需要手动吸尘,实际上加强了引用完整性(这是一件很好的事情,可能会让人感到痛苦).Autoincrement更灵活,但需要序列(可以用串行方式屏蔽),等等,什么是OID?
因此,如果您不太了解或不太关心数据库、数据有效性、ACID遵从性等,但是您确实关心易用性和速度,那么您倾向于使用MySQL.
太多(不是全部,但很多)"Web程序员"对"Web2.0"、PHP或Java了解很多,但对数据库理论或实践("索引?那是什么?")知之甚少.他们往往认为数据库只是一个花哨的哈希表或一包数据,实际上,它在任何地方都不像哈希表那样具有动态可变性或容错性.
对于这些人来说,MySQL是天赐之物,因为在5.0之前,它还不是一个真正的RDBMS,在很多方面仍然不是.它比竞争对手"更快",而且不会在"深奥"的数据库上"浪费时间",而这些东西是Web程序员不想要、不理解或看不到的价值.
另一方面,对于有数据库背景的人来说,MySQL是一个雷区:应该工作的东西(复杂的视图、分组、分组中的排序)可能会工作,或者如果幸运的话,可能会导致服务器崩溃,或者如果不幸运的话,只给出错误数据的结果.
我已经花了几天的时间来处理其中的一些事情,无可否认,这些事情并不是特别复杂的视图和分组方式,这是很复杂的.
而且MySQL并不是真的更快.如果您使用InnoDb表进行ACID(或者仅仅因为超过3000万行,MyISAM表往往会变得很糟糕),是的,直接的单表SELECT可能比pg更快.但是加上连接,PG突然变得更快了.(MySQL特别不擅长外连接.)
总而言之:如果数据库对您来说是一个袋子,如果您从未打算进行数据挖掘或报告,如果您最感兴趣的是提供几乎没有关系或更新的大块文本--也就是说,如果您正在使用数据库为博客提供支持,那么MySQL是一个很好的 Select .
但是如果你真的在管理数据,如果你明白数据比前端程序和中间层业务规则生命周期 更长,对企业更有价值,如果你需要真正数据库的功能,请使用PG.
一个"Web程序员"决定他所有的表 struct 都可以由Hibernate(或其他ORM)自动生成,他看着这一点说,"太复杂了","我打赌复杂意味着更高的成本和更慢的速度",于是他 Select 了MySQL.
正如我所说的,PG要优越得多,我讨厌在MySQL的奇怪错误上捣乱,我认为对于任何稍微复杂的查询,PG的整体性能都可能比MySQL更好.
但是MySQL让事情看起来(看起来)很简单,所以很多并不真正了解数据库设计的人认为MySQL是一个很好的 Select .
使用PG.它是一致的、可靠的、符合标准的、处理(即使是中等程度的)复杂查询的速度更快,不会因为奇怪的错误而完全打乱您的日程安排.