【问题标题】:Can an open source databases like MySQL support my web site's load? [closed]像 MySQL 这样的开源数据库可以支持我的网站的负载吗? [关闭]
【发布时间】:2008-12-29 21:21:13
【问题描述】:

我即将开始开发一个产品(在 .NET 中),并且我正在评估开源数据库引擎,以避免在我的产品总成本中增加许可成本。

你知道哪些是有效的? MySQL 是一个不错的选择吗?它可以支持什么样的网站负载?

您有在实际项目中使用开源数据库的经验吗?

还是只需要使用 Oracle 或 SQL Server 来开发强大的产品?

【问题讨论】:

    标签: .net mysql database open-source


    【解决方案1】:

    MySQL 足以让 Flickr、Facebook、Wikipedia、Google 和 YouTube 使用它(Wiki 说)——我会说它们各自提供的负载比你可能达到的要多。我相信 WordPress.com - 超过 400 万个博客 (stats),包括 CNN、Time 等博客 - 也使用 MySQL。

    开发强大的产品绝对不需要 Oracle/MSSQL。

    【讨论】:

    • 这有点误导:谷歌在某些事情上使用 MySQL,但谷歌的搜索引擎不能在 MySQL 上运行
    • @Joel:但是 MySQL 的修改和增强版本。他们在此基础上构建了它。很难想象 Google 使用 Oracle 作为他们的数据库。对于他们拥有的cpu数量和他们所做的具体工作,使用其他东西是不可行的。
    • 当然对于前面提到的网站使用的架构,数据库只是其中之一。我的意思是,仅 MySQL 本身并不能支持这么多的负载。但他们这样做是因为他们的基础设施。同样,mysql 提供的每 cpu 的许可成本是大局中的关键
    • 说 Google 使用 MySQL 与说 Google 使用 Linux、Windows 或 OS X 一样有用...
    • 是的,一些大型站点使用 MySQL,但它们的实际运营成本与 SQL Server、DB2 或 Teradata 相当。这些站点有专门的 dba 人员来优化一切,开发人员可以创建自己的扩展。假设 OP 有类似的资源并不是一个好的假设。
    【解决方案2】:

    这个维基百科链接应该会有所帮助,它比较了大多数大型关系数据库。 http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems 假设您正确编写代码,Mysql 应该可以正常工作,这是 wikipedia 运行的内容,因此如果配置正确并在足够好的硬件/集群设置上运行,它应该支持几乎所有应用程序。

    【讨论】:

      【解决方案3】:

      这是一个很难回答的问题。应用程序的性质 数据库交互的性质和数量。我可以说 MySQL 和 PostgreSQL 在大多数情况下都可以像任何 DBMS 一样工作。

      【讨论】:

        【解决方案4】:

        MySQL 并不像你想象的那么便宜。

        使用 MySQL 的大型组织花费大量资源来保持它的运行,并且经常不得不开发自己的扩展。 MySQL 内部人员最近发表了几篇关于他们产品质量差的文章。我已经使用 MySQL 好几年了,在将所有权更改为 SUNW 之后,版本的质量急剧下降。

        我意识到 MySQL 可以进行优化并使其运行良好,但我不是 dba,也无法为我的所有项目配备 dba。我有几个非常复杂的查询,有时会导致系统内存不足。我目前正在将我的系统迁移到 SQL Server Express。测试查询在 SQL Server Express 上的运行速度明显快于在 MySQL 上的运行速度。如果您在数据库方面不是很强大并且需要一个健壮和快速的系统,我不会使用 MySQL。 SQL Server Express 更适合具有中等数据库知识的开发人员。他们已经自动化并调整了许多您必须在 MySQL 上手动执行的操作。

        另一方面,如果您对数据库非常熟悉,则可能需要考虑 PostgresSQL。它是开源的。它不像 MySQL 那样用户友好,但据我粗略了解,它更强大,更稳定。

        底线 - MySQL 曾经是一个不错的选择,但考虑 SQL Server Express 和 PostgresSQL 作为当前更好的选择。

        编辑:

        这里有一些参考资料。还有另外两个非常严厉的 - 但我把它们从 reddit 上删除了。

        monty-says

        was it a good move

        destroying mysql

        kick in the teeth

        criticism

        random forum post

        what's going on

        【讨论】:

        • 对于大型网站来说,没有数据库会便宜。
        • MySQL 内部人士最近发表了几篇关于他们产品质量差的文章 - 你对此有什么参考吗,​​我很感兴趣?
        • @Eineki - 链接的文章有用吗?我找不到真正严厉的人,因为有人对 MySQL 感到愤怒,因为他的生产系统被冲洗掉了……
        • 上述帖子中对质量的定义并不清楚。我同意 ceejayoz 的观点,无论是 Oracle、MySQL 还是 MSSQL,数据库都很昂贵。如果 MSON 使用 MSSQL Express 意味着他的数据低于 4Gigs,那么任何 DB 都可以使用该数据量,除非设计非常糟糕。帖子是主观的
        【解决方案5】:

        MySql 应该可以满足您的需求...

        它适用于许多企业。
        另请注意,它有很多支持,熟悉它的开发人员,仍在开发中等等。不要再看了。

        【讨论】:

          【解决方案6】:

          Wikipedia(恕我直言,有史以来最好的网络世界之一)在 MySQL 上运行,因此不会很糟糕。我很高兴能够针对适合项目需要的任何 DB 平台进行编码,虽然 MSSQL 有一些有趣的功能,我真的从中获得了很多乐趣,但 MySQL 是我所有的开源包都运行的东西,并且我不能说我对该设置有任何抱怨。如果您可以在 PostgreSQL 和 MySQL 之间进行选择,我建议您选择 PostgreSQL 路线,因为如果您深入研究存储过程和函数开发,PostgreSQL 将为您提供更强大的功能集。

          【讨论】:

            【解决方案7】:

            这完全取决于您在数据库中查找的内容。实际上,您的数据集有多大?你需要什么样的负载?您是否需要集群和/或分区?你打算有一个全职的 DBA 吗?除了从 vanilla SQL 获得的内容之外,您还需要任何扩展吗?

            该应用程序是真正的“绿地”推出,还是进入已经拥有现有基础架构/人员来支持现有数据库的环境?

            MySQL 已经达到了可以处理大多数您想要反对它的任何事情的程度,但“免费”和“可以完成工作”本身不足以做出决定。

            【讨论】:

              【解决方案8】:

              据我所知,SQL Express 是免费的。它可能缺少标准 SQL Server 的一些功能,但它允许您将其与您的产品一起分发,并且您的客户端可以在需要时向上移动。

              【讨论】:

                【解决方案9】:

                还要注意 MySQL .Net 客户端库是 GPL 版的。如果你使用它,你必须在 GPL 许可下发布你的应用程序。并且您不得将 MySQL 与您的产品一起分发。

                或者您可以购买 MySQL,但相对于 MSSQL/Oracle 的优势消失了。

                或者您可以使用 3p 客户端库直接连接到 MySQL 而无需 GPL 库。

                总而言之,这不是一个容易做出的决定。三思而后行。

                【讨论】:

                  【解决方案10】:

                  关于 MySQL 和 GPL 的注意事项:我相信如果您不分发应用程序的二进制文件(即,您的产品是一个只有您托管而不部署到您的客户端的 Web 应用程序),那么您可以使用 GPL 许可证而不需要您的应用程序也将开源。

                  【讨论】:

                    【解决方案11】:

                    当您在 .Net 中进行开发时,您可能会发现 MS SQL Server 很有用。

                    您可以编写 CLR 存储过程,这对于构建来自大量来源的数据树视图非常高效。

                    它在带有高级服务的 Express Edition 中也是免费的。

                    那个版本包含了相当不错的报告服务。

                    MySQL 作为数据库引擎也非常出色,快速且免费,但由于您已经在使用 .Net,所以我会首先考虑 MSSQL。

                    【讨论】:

                      【解决方案12】:

                      我同意ceejayoz,mysql是一个成熟的DBMS。 没有多余的装饰,没有限制,闪电般的快速,容错性和鲁棒性根据需要。
                      绝对值得拥有更多的机会。

                      不过,作为对开源上瘾的人,我必须指出 mysql 是根据 GPL 获得许可的。

                      您是否打算在与 GPL 兼容的许可下发布该项目?这是一个经常被忽视的要求。

                      编辑:
                      我的守时受到了一些批评,我必须更好地解释我的立场

                      关于将封闭源代码链接到 GPL 的 GPL 参考
                      http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#MereAggregation

                      你应该阅读常见问题解答,特别是当它说

                      ...管道、套接字和命令行参数是通常在两个独立程序之间使用的通信机制。因此,当它们用于通信时,模块通常是单独的程序。 但如果通信的语义足够亲密,交换复杂的内部数据结构,这也可以作为将两部分组合为更大程序的基础 em>

                      在 3.80 版本的 mysql 接口库从 LGPL 切换到 GPL 时,我已经被咬了。我们,我们的法律部门,与 MysqlAB 进行了讨论,如果我没记错的话,在收购 Sun 之前公司的名称,在这一点上以及他们给我们的选择是获得非 GPL 商业许可证或继续使用 3.80 版本图书馆的。

                      顺便说一下.net的连接器是GPL,下载页里写的很清楚
                      http://dev.mysql.com/downloads/connector/net/5.2.html
                      我不认为你,包括我在内的其他人,会发现通过原始 tcp 通信和可用的连接器与服务器通信是有用的。

                      mysql % php 上的另外两个字:php license 和 mysql license 互不兼容 Sun 和之前的 MysqlAB 都不得不插入一个为 php 和其他开源项目量身定制的license exception 以允许 php 支持 mysql。这是一个漫长而充满激情的辱骂,我对结果感到失望,我们显然有机会在 GPL 下发布 php。

                      【讨论】:

                      • 除非他修改 MySQL 代码或链接它,否则 MySQL 使用什么许可证并不重要。通过 TCP/IP 的连接足以解耦以将您的应用程序单独考虑,因此不受 GPL 约束(但不确定您需要用于与 MySQL 交互的库)
                      • 不需要与 GPL 兼容。这将禁止 PHP 使用它,因为 PHP 许可证不兼容 GPL。
                      • 嗨,meador,.net 连接器也是 GPL,GPL 常见问题解答清楚地表明考虑通过管道或套接字链接使用 GPL 程序。为了规避它,您应该在帖子的编辑中授予与至少两个 dbms 的兼容性、更多详细信息和参考。
                      • PHP 仅通过许可例外与 MYSQL 兼容。您可以在我刚刚编辑的帖子中找到更多信息以及指向异常文本的链接
                      • +1。我不明白为什么这被否决了。如果您需要将应用程序分发给其他人,这一点至关重要。
                      【解决方案13】:

                      我已将大型开发从 Ms SQL 迁移到 PostGreSQL(出于与您类似的原因)并且感到惊喜。

                      我发现有一些注意事项:

                      • 预计围绕存储过程(PostGreSQL 中的“函数”)会有一些学习曲线。如果您熟悉 Oracle 的 plsql,这可能没什么大不了的。
                      • npgsql .Net 连接器存在一些稳定性问题(尤其是 .Net 2.0)。然而,开发者社区是活跃的并且对查询和问题做出响应。 (有更稳定的商业连接器可用)

                      (根据我的经验以及在开发可以支持多个数据库的代码库的过程中,我发现最好从查询语言中删除大部分逻辑。有了这个方法 PostGreSQL 的表现已经足够好,学习曲线并不繁​​重)

                      【讨论】:

                        【解决方案14】:

                        Oracle 还有一个免费版本,称为 Oracle XE。

                        【讨论】:

                          【解决方案15】:

                          如果您只是担心许可费用,可以使用功能强大的免费 SQL Server 版本。这涉及到大小限制,但如果您超出了该限制,您可能还会获得足够的收入来支付付费版本。

                          【讨论】:

                            【解决方案16】:

                            略显古怪的答案(对于 mysql 和维基百科中显示的兴趣):

                            这是 Wikipedia 过去的服务器布局图的链接。

                            http://meta.wikimedia.org/wiki/Server_layout_diagrams

                            取自:

                            http://en.wikipedia.org/wiki/Wikipedia#Software_and_hardware

                            【讨论】:

                              【解决方案17】:

                              我已经断断续续地使用 MySQL 和 Postgres 五年多了,两者都很好。但请注意,MySQL 与 Postgres 是 Linux 与 Windows 等的圣战之一。

                              对于大多数日常使用来说,两者都应该没问题。请注意,集群、热备份等高级功能可能需要努力/研究才能设置。

                              Postgres 在语法和某些特性上更像“Oracle”,确实,它有时被称为“穷人的 Oracle”。 MySQL 我不确定要比较什么。

                              在这两者中,长期以来,Postgres 被认为更健壮,而 MySQL - 更快,然而,这两个优势现在都存在争议。

                              另请注意,虽然 Wikipedia 和 Flickr 确实运行 MySQL,但没有人说他们的后端需要多少实际的 MySQL 服务器。

                              与其他功能以及商业数据库相比,其中一个可能遗漏/实现了许多功能。如果您指定您的特定需求(集群、触发器、序列、ACID 合规性、良好的可扩展性?),它可能会影响您最好使用哪个数据库。

                              【讨论】:

                                【解决方案18】:

                                如果您正在开发销售产品,MYSQL 不是免费的。使用该程序发布数据库需要相当大的许可成本。看看火鸟。功能强大、免费,除了完整的数据库服务器外,还有一个占用空间小的版本。

                                【讨论】:

                                  猜你喜欢
                                  • 2021-09-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2011-02-11
                                  • 1970-01-01
                                  • 2012-11-14
                                  • 1970-01-01
                                  • 2018-04-18
                                  相关资源
                                  最近更新 更多