5

我在后端使用 PHP/MySQL/Solr 并在前端使用 Javascript/jQuery/Backbone 完成了大部分 Web 开发。

我已经编写了一些 Node 应用程序,但使用 MySQL 而不是许多 Node 教程/书籍使用的 Mongodb/Couchdb。你会开始使用 Mongo/Couch 而不是 MySQL,因为大多数开发 Node 的人都在使用它吗?MySQL 似乎对我来说工作得很好,我不清楚切换到 Mongo/Couch 的优势。

现在我正在启动一个站点,其中“前端”应用程序服务器是 PHP/MySQL,而数字处理服务器在 Node.js 中。我坚持使用 PHP 来服务于“前端”的原因是因为我非常喜欢在我的 PHP 框架中进行开发。

选择 Node 的原因是因为会有很多并发任务,空闲/等待时间大约为几秒。这必须是高度可扩展的。

将存储在数据库中的内容就像您将存储在 MySQL 表中的常用内容一样

4

2 回答 2

8

你需要考虑的一些事情——

  1. 扩展是我们迁移到 mongoDB 的最重要原因之一。对 MongoDB 进行分片和复制是轻而易举的事。因此,如果您的应用程序需要水平扩展,那么 mongoDB 是您的最佳选择。垂直扩展只能达到你很快就会遇到硬件限制的程度......加上 mysql 上的分片是一个真正的痛苦。
  2. 其次是数据库模式。在像我们这样的大多数初创公司中,需求和功能变化非常迅速。因此,在一段时间内,基于 mysql 模式的数据库可能更像是一种束缚,而不是“良好实践”。在这种情况下,没有人关心“良好做法”。因此,如果您需要可扩展的无模式数据库,请考虑使用 mongoDB。
  3. 所有这一切都附带一个免责声明,即 mongoDB(和其他 NoSql 解决方案)是 DB 世界中闪亮的新玩具。它们远没有 MySQL 成熟。他们中的大多数人,包括 mongo 都不能很好地处理交易。所以假设你正在构建一个金融交易系统,那么我会告诉你盲目地使用 mysql 作为其 ACID 兼容(阅读 innodb 引擎)。因此,很多这些决定再次取决于您要完成的工作......

结论:NoSQL 转述

真正要指出的是,如果你因为无法选择数据库而无法做出超级棒的东西,那你就做错了。如果你知道mysql,就用它。在您真正需要时进行优化。像 ak/v 商店一样使用它,像 rdbms 一样使用它,但是看在上帝的份上,构建你的杀手级应用!这对大多数应用程序都无关紧要。Facebook 仍然大量使用 MySQL。Wikipedia 大量使用 MySQL。FriendFeed 经常使用 MySQL。NoSQL 是一个很棒的工具,但它肯定不会成为你的竞争优势,它不会让你的应用程序变得热门,而且最重要的是,你的用户不会对这一切感到厌烦。

我将在什么基础上构建下一个应用程序?可能是Postgres。我会使用 NoSQL 吗?也许。我也可能使用 Hadoop 和 Hive。我可能会将所有内容保存在平面文件中。也许我会开始在 Maglev 上进行黑客攻击。我会使用最适合这项工作的东西。如果我需要报告,我不会使用任何 NoSQL。如果需要缓存,我可能会使用 Tokyo Tyrant。如果我需要 ACIDity,我不会使用 NoSQL。如果我需要大量的计数器,我会使用 Redis。如果我需要交易,我会使用 Postgres。如果我有大量单一类型的文档,我可能会使用 Mongo。如果我需要每天编写 10 亿个对象,我可能会使用 Voldemort。如果我需要全文搜索,我可能会使用 Solr。如果我需要对易失性数据进行全文搜索,我可能会使用 Sphinx。

太搞笑太相关了,不能再发帖了 - MongoDb 是 Web 规模

在此处输入图像描述

于 2012-12-29T05:21:03.913 回答
0

除非您对数据进行大量规范化,以至于多个表上的 IO 成为瓶颈,否则 MySQL 将正常工作。没有理由仅仅因为大多数人都在使用 mongo 和 node.js..

Mongodb/Couchdb/Orientdb 最适合存储大量“文档”对象。如果您的数据可以适合 RDBMS 模式,则您不需要创建文档。据我所见,创建对象的主要延迟来自于填充数据字段。使用 NoSQL DB,您可以一次性获取所有数据,而在规范化的 RDBMS 中,数据字段将从不同的来源填充,从而导致轻微的延迟。当然,您可以使用缓存来改进它。如果你想要 RDBMS 的可扩展性,你可以看看 NuoDB。

由于您的后端应用程序服务器需要可扩展性,因此您还可以查看 vertx。根据基准,它似乎优于节点,但它仍然是非常新的。

于 2012-12-29T10:34:11.900 回答