Oracle RDBMS 是否比 MySQL RDBMS 更稳定、安全、健壮等?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/101834/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Is Oracle RDBMS more stable, secure, robust, etc. than MySQL RDBMS?
提问by Jim Ford
I've worked on a variety of systems as a programmer, some with Oracle, some with MySQL. I keep hearing people say that Oracle is more stable, more robust, and more secure. Is this the case?
我曾作为程序员在各种系统上工作过,有些使用 Oracle,有些使用 MySQL。我一直听到人们说 Oracle 更稳定、更健壮和更安全。是这种情况吗?
If so in what ways and why?
如果是这样,以什么方式以及为什么?
For the purposes of this question, consider a small-medium sized production DB, perhaps 500,000 records or so.
出于此问题的目的,请考虑一个中小型生产数据库,可能有 500,000 条左右的记录。
回答by Matthew Watson
Yes. Oracle is enterprise grade software.
是的。Oracle 是企业级软件。
I'm not sure if its really any more stable that mysql, I haven't used mysql that much, but I dont ever remember having mysql crash on me. I've had oracle crash, but when it does, it gives me more information about why it crashed than I could possibly want, and Oracle support is always there to help ( for a fee ).
我不确定它是否真的比 mysql 更稳定,我没有使用 mysql 那么多,但我不记得有 mysql 崩溃在我身上。我遇到过 oracle 崩溃,但是当它发生时,它为我提供了比我可能想要的更多关于它崩溃的原因的信息,并且 Oracle 支持总是在那里提供帮助(收费)。
Its very very robust, Oracle DB will do virtually everything it can before breaking your data, I've had mysql servers do really weird things when they run out of disk space, Oracle will just halt all transactions, and eventually shutdown if it can't write the files it needs. I've never lost data in oracle, even when I do stupid things like forget the where clause and update every row rather than a single row, its very easy to get the database back to how it was before screwing up.
它非常强大,Oracle DB 在破坏数据之前几乎可以做所有事情,我让 mysql 服务器在磁盘空间不足时做非常奇怪的事情,Oracle 将停止所有事务,如果可以,最终会关闭' t 写它需要的文件。我从来没有在 oracle 中丢失数据,即使我做了一些愚蠢的事情,比如忘记 where 子句并更新每一行而不是单行,也很容易让数据库恢复到搞砸之前的状态。
Not sure about security, certainly Oracle gives you lots of options for how you are going to connect to the DB and authenticate. It gives lots of options regarding which users have access to what, etc. But as with most things, if you want to take security seriously, then you need an expert to do it. Oracle certainly has a lot more to lose if they don't get security right. But, as with all things there has been exploits.
不确定安全性,当然 Oracle 为您提供了许多关于如何连接到数据库并进行身份验证的选项。它提供了许多关于哪些用户可以访问哪些内容等的选项。但与大多数事情一样,如果您想认真对待安全问题,那么您需要一位专家来做这件事。如果安全性不正确,Oracle 肯定会失去更多。但是,与所有事情一样,也有漏洞。
If nothing else, just consider this... When Oracle stuffs up, they have customers who are paying $40k per CPU (if they are suckers and pay list price) license + yearly maintenance fees.. This gives them a very strong intensive to make sure the customers are happy with the product.
如果不出意外,就考虑一下……当 Oracle 搞砸时,他们的客户要为每个 CPU 支付 4 万美元(如果他们是傻瓜并支付标价)许可证 + 年度维护费..这给了他们一个非常强大的密集确保客户对产品感到满意。
For a small database, I'd seriously recommend Oracle XE well before mysql. It has the important features of mysql (Free), its dead easy to install, comes with a nice web interface and application framework (Application Express), if you DB will happy run on a single cpu, 1gb ram and 4gb data, then XE is the way to go IMHO.
对于小型数据库,我会在 mysql 之前认真推荐 Oracle XE。它具有 mysql(免费)的重要特性,易于安装,带有漂亮的 Web 界面和应用程序框架 (Application Express),如果您愿意在单个 CPU、1gb ram 和 4gb 数据上运行 DB,那么 XE是的方式去恕我直言。
Mysql has its uses, many many people have shown that you can build great things with it, but its far behind oracle (and SQL Server, and DB2) in terms of features... But then, its also free and very easy to learn, which for many people is the most important feature.
Mysql 有它的用途,很多人已经证明你可以用它构建伟大的东西,但它在功能方面远远落后于 oracle(以及 SQL Server 和 DB2)......但是,它也是免费的并且非常容易学习,这对很多人来说是最重要的特征。
回答by neu242
I've had Oracle create a corrupt database when the disk ran out of space. It's hard to debug, uses loads of resources and is difficult to work with without seriously skilled DBA's holding your hand. Oracle even replaced system binaries (e.g. gcc) in /usr/bin/ when I installed in on an occation.
当磁盘空间不足时,我让 Oracle 创建了一个损坏的数据库。如果没有熟练的 DBA 的帮助,它很难调试,使用大量资源并且很难处理。当我在某个场合安装时,Oracle 甚至替换了 /usr/bin/ 中的系统二进制文件(例如 gcc)。
Working with PostgreSQL, on the other hand, has been much more pleasant. It gives readable error messages and acts in a more understandable way if you're used to work with open source *nix systems. It's quite easy to set up replication, thus making your data fairly secure.
另一方面,与 PostgreSQL 一起工作要愉快得多。如果您习惯于使用开源 *nix 系统,它会提供可读的错误消息并以更易于理解的方式进行操作。设置复制非常容易,从而使您的数据相当安全。
回答by Andrew not the Saint
A 500K record database can probably be run on your mobile phone. Seriously, it's so small that both Oracle XE and MySQL will be more than sufficient to manage it.
一个 500K 的记录数据库可能可以在您的手机上运行。说真的,它太小了,以至于 Oracle XE 和 MySQL 都足以管理它。
回答by mfx
- for smallish DBs (a few million records), Oracle is overkill
- you need an experienced DBA to properly install and manage an Oracle system
- Oracle has a larger "base overhead", i.e. you need a beefier machine to run Oracle
- the "out of the box" experience of Oracle used to be atrocious (i haven't installed an oracle system in years; no idea how it currently behaves), while mysql is very nice
- 对于小型数据库(几百万条记录),Oracle 是矫枉过正
- 您需要有经验的 DBA 才能正确安装和管理 Oracle 系统
- Oracle 有更大的“基本开销”,即您需要一台更强大的机器来运行 Oracle
- Oracle 的“开箱即用”体验曾经很糟糕(我多年没有安装 Oracle 系统;不知道它目前的行为如何),而 mysql 非常好
回答by Osama Al-Maadeed
Oracle is a beast that really needs DBA knowledge. I concur with those who say 500k records are nothing. It's not worth the complexity of Oracle if it's simple numeric/text data.
Oracle 是一个真正需要 DBA 知识的野兽。我同意那些说 50 万条记录不算什么的人。如果它是简单的数字/文本数据,那么 Oracle 的复杂性就不值得了。
On the other hand, Oracle is extremely efficient with blobs. If each of your records was a 100MB binary file, you'd need a fortune to run it on Oracle (I'd recommend a 3-node RAC cluster with a good SAN).
另一方面,Oracle 在处理 blob 方面非常高效。如果您的每条记录都是一个 100MB 的二进制文件,那么您需要大量资金才能在 Oracle 上运行它(我建议使用具有良好 SAN 的 3 节点 RAC 集群)。
回答by Randy
I have a project that sends data (~10M rows, 1.2GB of data) to three different databases, 2 Oracle and 1 MySQL. I haven't had problems working with either system, nor have I seen any major advantages on either side. If you're in a place that already uses Oracle for other projects, adding on one new database shouldn't be too much of a problem, but if you're thinking of setting up a new database server and don't have anything in place already, MySQL will save you the money.
我有一个项目将数据(~10M 行,1.2GB 数据)发送到三个不同的数据库,2 个 Oracle 和 1 个 MySQL。我在使用任何一个系统时都没有遇到问题,也没有看到任何一方的任何主要优势。如果您所在的地方已经将 Oracle 用于其他项目,那么添加一个新数据库应该不会有太大问题,但是如果您正在考虑设置一个新数据库服务器并且没有任何内容已经到位,MySQL 将为您省钱。
回答by igelkott
Oracle Enterprise assumes that there is an Enterprise to support it, ie, a real Oracle DBA. A novice (but competent) DBA should be able to secure MySQL much more easily than Oracle, just because Oracle is inherently more complex. Of course, Oracle has the Enterprise monitoring tools beyond what MySQL currently features (as far as I've seen) but the DBA needs to be able use them to be effective.
Oracle Enterprise 假设有一个 Enterprise 来支持它,即真正的 Oracle DBA。一个新手(但有能力)的 DBA 应该能够比 Oracle 更容易地保护 MySQL,因为 Oracle 本质上更复杂。当然,Oracle 拥有超出 MySQL 当前功能的企业监控工具(就我所见),但 DBA 需要能够使用它们才能有效。
Such a small database as you describe could be handled by most anything so I can't see that Oracle would be warranted unless the infrastructure was already in place. Both have replication, transactions and warm-backups so either would serve well.
您描述的这种小型数据库几乎可以由任何东西处理,因此除非基础设施已经到位,否则我认为 Oracle 不会得到保证。两者都有复制、事务和热备份,所以两者都可以很好地服务。
回答by Seun Osewa
The answer depends entirelyon how you configure each DBMS. Both are capable of handling 500,000 records many times over.
答案完全取决于您如何配置每个 DBMS。两者都能够多次处理 500,000 条记录。
回答by Oli
Oracle is a lot beefier. Many of its features would only be looked for in a larger enterprise or high-performance setting. They're mainly features to do with scaling, replication and load balancing.
Oracle 更强大。它的许多功能只能在更大的企业或高性能环境中寻找。它们主要是与扩展、复制和负载平衡有关的功能。
For small DBs, consider SQLite. For small-medium, look at MySQL or PostgreSQL. For the largest, look at MSSQL, Oracle, DB2, etc.
对于小型数据库,请考虑 SQLite。对于中小型,请查看 MySQL 或 PostgreSQL。对于最大的,请查看 MSSQL、Oracle、DB2 等。
Edit: Having read the other answer, I'll add that if your data is really, reallycritical, you'll want a replicated setup and you'll probably want to look to one of the big DB providers for something like that.
编辑:阅读其他答案后,我会补充说,如果您的数据真的非常非常重要,您将需要一个复制设置,并且您可能希望向大型数据库提供商之一寻求类似的服务。
If you can sacrifice potential (exceedingly rare) data losses and would prefer improved performance, look at some of the lighter-weight options.
如果您可以牺牲潜在的(极其罕见的)数据丢失并希望提高性能,请查看一些更轻量级的选项。
回答by sarphus
It's true that Oracle is a beast.
确实,Oracle 是一头野兽。
It is also true that Oracle is widely considered the most secure major database.
Oracle 也被广泛认为是最安全的主要数据库。
The problem is that Oracle's devs don't appear to grasp critical security consepts. Oracle is the least secure database server on the market (According to independent security researchers)
问题是 Oracle 的开发人员似乎没有掌握关键的安全概念。Oracle 是市场上最不安全的数据库服务器(据独立安全研究人员称)
MySQL is actually fairly secure according to these researchers. I don't know much about the tools available for it. What's most amusing about this research is that the same people who would call Microsoft SQL server a toy would have their data stolen by attackers that MSSQL would thwart because they are using a beast that has a terrible security model rather than a "toy" that is secure.
根据这些研究人员的说法,MySQL 实际上相当安全。我对可用的工具知之甚少。这项研究最有趣的是,那些将 Microsoft SQL 服务器称为玩具的人,他们的数据会被 MSSQL 阻止的攻击者窃取,因为他们使用的是具有可怕安全模型的野兽,而不是“玩具”安全的。