MySQL与SQL Server与Oracle


78

我一直只使用MySQL而没有其他数据库系统。

今天在公司会议上提出了一个问题,我不知道让我尴尬:对于开发人员来说,MS或Oracle提供了MySQL所缺乏的令人震惊的功能,并且允许MS和Oracle为他们的系统收费吗?



4
这个问题的表述方式类似于MySQL不允许使用它收费的事情。没有什么可以MS和Oracle收费,他们只是这样做。和MySQL只是不同-开源。如果需要的话,我可以在半小时内编写一些半熟的保存-还原脚本并收取费用。我不需要任何允许我做的事情。
卢卡·拉米什维利

11
好的,但是改写他的问题;为什么一个聪明人可以在免费选择RDBMS Y时考虑为RDBMS X付费?
卡尔,

2
我认为这个问题不正确。MySQL并非免费提供给企业使用(根据此处的回复),而MS SQL Server的版本是免费的。MS产品并没有那么严格,它允许启用了大多数功能的10GB数据库。这个问题可以反过来回答:为什么当SQL Server免费且具有更多功能时才为MySQL付费。也许这是我的安装,但是我发现MySQL越野车很慢。
MikeKulls

3
这个问题似乎离题,因为它是关于比较不同DB的问题
Noel

Answers:


36

我认为其他评论员非常正确地使用与商业解决方案捆绑在一起的所有其他非核心RDBMS功能。

这是一个Oracle版本和功能的矩阵,值得您浏览以了解“额外”功能,特别是在开发和支持自己的版本时(如果可能的话)在类似MySQL的产品上:http : //www.oracle.com/us/products/database/product-editions-066501.html

例如,如果您有一个要求说:“用户应能够在更改提交后的一周内恢复他们删除/更新的任何以前版本的数据”,那么这意味着我认为一定的开发开销在没有像oracle的Flashback Query这样的内置功能的系统上,性能会更高。


+ 1,Oracle功能的良好摘要。
DCookie

有关Oracle功能的好信息
hminaya

23

Oracle和MSSQL的纯RDBMS层主要提供比MySQL和InnoDB更成熟的可编程环境。MySQL存储过程和触发器还无法匹配T-SQL和PL / SQL。

其他区别是句法上的区别和轻微的语义上的区别,这使事情变得容易或困难(例如,前500名与限制/偏移)。

但是真正的杀手是,MySQL还没有在MSSQL(报表服务,Analysis Services)和Oracle(数据仓库,RAC)的RDBMS层之上提供大量集成工具和服务。


12

MySQL不是免费的!

人们普遍认为它是免费的,但是您正在出售或分发包含MySQL的软件包,它具有相当严格的限制。在这些情况下,它仅对开源项目或非营利组织免费。如果您可以设法将数据库和驱动程序与应用程序的其余部分完全分开,并迫使客户自行下载和安装MySQL,那么您可能会没事的。

否则,“标准”版每年的费用为2,000美元,与SQL Server的许可费用大致相当。

两者都是非常好的数据库,但是SQL Server的优点包括:

  • 丰富而富有表现力的过程语言(T-SQL)
  • 更好的查询优化器,以及在写密集型环境中的更好性能
  • 一套强大的辅助工具和功能,包括编程环境,ETL工具(SSIS),尺寸模型(SSAS),报告环境(SSRS)和相当复杂的作业计划程序。
  • 存储过程和UDF的交互式调试。
  • 一种相对易于使用的基于窗口的管理工具,使您可以“单击”方式执行大多数管理任务。

从思想上讲,许多人反对使用Microsoft工具或被锁定在Windows环境中,我可以理解。但是MySQL并非免费提供给企业使用,这似乎尚未得到广泛理解。

要查看MySQL的许可政策,请在其网站上查看它:http : //www.mysql.com/about/legal/licensing/index.html


我同意-MySql不是免费的(没有免费的午餐之类的东西)。但是我认为许多Microsoft产品都不如Visual Studio那样好。Sybase似乎是一个很好的数据库恕我直言
Ed Heal 2012年

3
哈,我实际上就是这些人之一。我真的以为MySQL是免费的,无论如何都是完全免费的。只是一个简单的问题,您是否有一些统计信息/链接,在这里我可以看到“更好的查询优化器,以及在写密集型环境中更好的性能”。
约翰·克劳福德

34
假。MySQL的社区版本已获得GNU GPL v2许可,这意味着您可以出于任何目的免费使用该软件。(如果要修改和重新分发软件,则必须在相同的GPL v2开源许可下提供修改后的产品;但是,它仅是用法,甚至是修改(只要不重新分发修改后的产品)都是免费的。任何无条件的目的。)
卡(Luca

那不是很正确。请在gnu.org上查看以下常见问题解答: gnu.org/licenses/old-licenses/…–
Curt,

9
Curt,(1)我们并不是在讨论将MySQL集成到另一个程序中,而是将它用作单独的软件(在客户端-服务器体系结构中);在您的常见问题解答中:“如果两个程序保持良好的分开,则可以将它们视为两个单独的程序”(2),即使您确实将MySQL合并到专有软件中(即,将其用作库) ,只要您不重新分发专有软件,就无需在GPL下重新许可您的专有软件。在您的常见问题解答中:“ GPL说,如果根本不发行,则该程序的任何扩展版本都必须在GPL下发布”
Luca


8

在我管理其他供应商的RDBS之前,甲骨文经常重复说:“读者不会阻止作者,作者不会阻止读者,这对我来说意义不大。作为Oracle DBA,我在8年的时间里确实不了解锁定问题。2多年的Informix和3或SQL Server,请相信我,我对锁定了解更多。

因此,我想说,除了有关支持和非RDBMS功能的注释之外,还要添加锁定行为。


在1m行表上具有相同的基本代码库,并且在同一行集合上每秒进行100次读取/更新,这将使Oracle大放异彩,并(在当时)使SQL Server自旋锁被遗忘。是的,情况已经发生了变化,但是重点是,与我对Oracle公司的厌恶一样,他们的数据库产品是一流的。
JE队列

SQL Server快照隔离解决了Microsoft SQL Server的一个非常实际的问题-在SQL Server 2008中添加
NTDLS 2012年

5

有太多功能要列出。请参阅nullptr消息中的Wikipedia参考。但是我想会议上真正提出的问题是:“对于开发人员而言,MS或Oracle提供了哪些MySQL滞后的令人震惊的功能,从而使MS和Oracle可以为其系统付费,并且可以被我们公司有效地利用?”

如果满足您的需求,那么所有优势都是真正的优势...



4

注意:我不能说任何有关Oracle的信息,所以我只回答SQL Server。

好吧,当然,数据库引擎中的细微差别,例如MERGE语句,BULK INSERT,GROUPING SETs等。

但是我认为更大的部分是诸如Integration Services,Analysis Services和Reporting Services之类的东西。这些是重要的技术,我认为绝对物有所值。


由于兼容性限制以及在当前系统中实施Oracle或MySQL的头痛,一些人被迫使用Microsoft SQL Server
JsonStatham 2013年

4

MySQL没有提供Oracle和MSSQL提供的更丰富的编程环境,尤其是在早期甚至没有存储过程的情况下。从我的角度来看,我倾向于通过DAO或ORM映射器等将大部分业务逻辑放入应用程序中。因此,下面的数据库引擎不太重要,并且理论上该应用程序是可移植的。从管理的角度来看,MSSQL提供了许多好处(许多已经列出),使拥有数据库的任务变得容易得多。微软还提供了出色的轻量级SQLExpress用于开发,我发现它易于使用,并且可以很好地集成到Visual Studio中。


2
我认为,在可运输性方面重点在于“理论上”;)似乎是这样的情况:将代码愚弄到允许可运输性的最低公分母实际上会激发运输的欲望,因为避免供应商增强通常会数据库中存在性能问题。
David Aldridge

3

受ThinkJet答案的启发,我认为另一个起作用的因素是:“我们愿意在多大程度上放弃数据库独立性,以便更快,更便宜地开发性能更高的应用程序?” 如果公司的重点是所有代码必须在数据库之间都是可移植的,那么除了最简单的RDBMS之外,使用其他任何东西都是没有意义的,而Oracle和Microsoft提供的改进和优势则毫无用处。

打破真正的数据库独立性几乎不需要花什么,我的理念是,您应该全心投入到所购买的所有功能中,例如SQL增强功能,PL / SQL等。

当然,其他人可能会有所不同。


3

我认为这个问题有一个隐含的假设,那就是允许SQL Server / Oracle进行收费的开发功能。我怀疑这更多是实施/支持。

热备份是一项值得付费的主要功能,至少对于大多数安装而言,都是如此。

对于Oracle来说,RAC的最大附加价值是RAC-多台服务器可以访问相同的数据(即相同的磁盘),而无需进行任何混乱的复制。(通常)对开发人员而言并不明显。


我有点想念它。谢谢:)
Kshitij Saxena -KJ-

1

我真正喜欢的一些Oracle功能是

  • 真实应用程序集群,一种非常强大的数据库集群方法
  • 快速刷新的物化视图,一种非常有效的方式来存储和更新查询结果
  • 允许以高效方式对查询子集的功能进行分组的分析功能(也称为窗口功能)。在大多数情况下,这可以避免自连接。

据我所知,这些都不是MySQL中可用的。并且还有许多有用的功能,尤其是在企业版及其选项中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.