NodeJS+MySQL 而不是 PHP+MySQL。可以吗?
Posted
技术标签:
【中文标题】NodeJS+MySQL 而不是 PHP+MySQL。可以吗?【英文标题】:NodeJS+MySQL instead of PHP+MySQL. Is it ok? 【发布时间】:2011-11-24 05:00:04 【问题描述】:我读过关于 NodeJS 的文章,但找不到它的缺点/优点。我可以用 NodeJS/mysql 替换 php/MySQL 应用程序吗?这是个好主意吗?
请考虑使用 PHP CMS。 NodeJS 可以和 PHP 一样好用吗? NodeJS 是不是只适合一些轻量级的动作?
如果可以的话,哪个 MySQL 模块是最好的?
【问题讨论】:
我会推荐反对 mysql 支持 couchdb/mongodb/redis/riak/nosql/etc 【参考方案1】:在进入 Node.js 炒作之前,read the following article。
基本上,Node.js 存在问题。 它是一个服务器,但您可以通过 Node 连接到 MySQL 并将数据发送给用户。有很多陷阱,其中之一是您必须了解 JS,并且您必须通过 JS 而不是 PHP 来格式化输出。
然而,你的瓶颈几乎永远不会是 PHP,除非你做了一些 PHP 不适合做的事情(比如在一个数组中加载 100 万个条目并使用该数组进行各种搜索等等)。 你会发现你的瓶颈(在网站繁忙的情况下)是 HTTP 服务器,因为每个连接都需要一定数量的内存,你可能会超过内存,当然 - 你的数据库(很可能)我/O 绑定(硬盘绑定)。
在整个过程中,PHP 将是您最不用担心的。使用 C 或 Node 编写的程序无助于加快速度,因为您必须扩展您的数据库系统 - 这是一个完全不同的故事(另外您需要扩展您的 HTTP 服务器设置)。
基本上 - 坚持使用 PHP/MySQL,忘记 Node,至少现在是这样。
更新:既然这个答案已被接受并且技术已经赶上,那么提醒新人是件好事:Node.js 的流行超出了任何人最疯狂的梦想,我个人觉得它太棒了。我很幸运能够同时使用 node 和 php。
Node 有很棒的社区和很棒的包、包管理器和任务运行器。任何熟悉 JS 的人都可以立即使用 node。它很棒,非常有用,我认为 node 可以推动 javascript 完成 Java 最初的设计目标(这是基于轶事证据而非事实的观点)。
底线:在选择一项技术时,应该选择他们熟悉或具有表现力的技术。 PHP 和 Node.js 各有千秋,没有明确的方法可以确定哪个“更好”。
【讨论】:
+2 来自我。 PHP 已经成熟——版本 5x+ 引入了 APC,以及稳定的 PDO 实现。我只看到了用 NodeJS 重新发明的***——你可以用 PHP/MySql 做同样的废话——但是有新的问题。环顾堆栈溢出。 PHP 遇到的每一个问题都在这里,有一个可行的解决方案。除非你正在构建一个软实时应用程序,这使用 NodeJS 稍微容易一些,否则我建议不要喝 NodeJS koolaid - 即使在今天。虽然用 JS 做低级的事情很整洁,但它并没有解决糟糕的设计这个由来已久的问题,这是最大的问题。 您是否只是尝试链接每个人都已揭穿并已被删除的“Node JS is Cancer”文章? (哎呀,来晚了)【参考方案2】:你可以。速度很快。
基准测试: http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
与 MySQL 的交互非常复杂。如果你对 node.js 有扎实的背景,那应该不是问题。 但是 PHP 开发人员已经让与 MySQL 的交互变得最简单、最干净。
http://www.giantflyingsaucer.com/blog/?p=2596
http://utahjs.com/2010/09/22/nodejs-and-mysql-introduction/
对我来说,我会使用 PHP / MySQL
【讨论】:
我已经看到了,但是高度 MySQL 的交互性呢?【参考方案3】:如果你写了一些关于你的 php 应用程序的细节将会很有帮助。这个决定将取决于很多事情,比如 -
-
您的应用程序有多大?它将影响您需要将 php 应用程序移植到节点的时间。您可能还需要考虑您在 javascript 中的异步风格编程方面的专业知识。
您写道,您正处于优化阶段。 php已经存在很久了。在这个后期阶段,应用优化技术应该比在不同平台上重写所有内容更容易,当然我假设时间对你来说是一个至关重要的因素,就像在软件行业一样。
您的应用程序有多慢?它是执行缓慢还是没有随着负载的增加而扩展?语言性能几乎不是 Web 应用程序的瓶颈。您是否尝试过优化查询、向数据库添加适当的索引、尝试更好的 Web 服务器和/或缓存?环顾四周,关于如何优化 php 应用程序的资源将比如何在 node.js 中做一些事情多几倍。
您是否考虑过投资硬件?这可能是比重做所有事情更便宜的选择吗?
简而言之,node 还在探索它的可能性,如果你想学习它,现在是最好的时机。但如果这种学习涉及搞乱生产级应用程序,我的建议是否定的。 node 不会神奇地提高应用程序的性能,它不是为此目的而构建的。
回答您的另一个问题 - 大多数人更喜欢 Felixge 的 MySQL 驱动程序:https://github.com/felixge/node-mysql
这是另一种选择:https://github.com/sidorares/nodejs-mysql-native
【讨论】:
【参考方案4】:如果您有一个大型的现有 mysql 数据库,您需要与大量遗留代码进行交互,而转换为 nosql 将是一场噩梦,那么可以。
否则不,使用 couch/mongo/redis/riak/cassandra/etc.
选择一个符合您要求的可靠的 noSQL 数据库。
至于node能不能做php/mysql能做的可以。你可以用它开发网站。
node 是否具有drupal 或wordpress 的等价物,可以握住您的手并为您做所有事情?没有。
【讨论】:
我是一名 PHP 开发人员,不希望将某些东西用作快速 CMS。我正在开发一个具有高度关系数据库的 Web 应用程序。我们正在优化步骤中,我们今天需要的是性能。当我读到关于 nodejs 的内容时,它在很多情况下都很快。现在我想知道,用 NodeJS 替换 PHP 对我有帮助吗? @AHHP 如果您需要性能,请尝试优化您的 PHP 并将其编译为 C。如果这不起作用,请改用 erlang,想要提高性能,请使用 erlang 或 C。 @AHHP:优化你的数据库,PHP几乎不会成为瓶颈。【参考方案5】:您可以使用 https://github.com/masuidrive/node-mysql 或 https://github.com/sdepold/sequelize 。它是 nodejs 最好的 mysql 驱动程序之一
【讨论】:
【参考方案6】:我在 NodeJS 方面的经验并不丰富。但我的观点是,
Nodejs 是为创建实时应用程序而构建的,例如聊天、在线游戏等,因为它非常快。
NodeJS 是一个服务器。所以不能和php比较,也就是说需要去第三方模块执行一些任务,比如expressjs、node-mysql等,
用NodeJS创建应用程序真的像php-mysql一样简单
【讨论】:
以上是关于NodeJS+MySQL 而不是 PHP+MySQL。可以吗?的主要内容,如果未能解决你的问题,请参考以下文章
将React + NodeJS + Express + MySQL应用程序部署到Heroku仅部署服务器而不是React
Linux+Apache+PHP+MySQL服务器环境(CentOS篇)