NodeJS + MySQL而不是PHP + MySQL。好吗?

时间:2011-09-24 10:44:30

标签: mysql web-applications node.js

我读过NodeJS,却找不到它的优点。我可以用NodeJS / MySQL替换PHP / MySQL应用程序吗?这是个好主意吗?

请考虑使用PHP CMS。 NodeJS可以和PHP一样吗? NodeJS只适用于一些轻量级操作吗?

如果没问题,哪个MySQL模块最好?

6 个答案:

答案 0 :(得分:18)

在进入Node.js炒作之前,read the following article

基本上,Node.js有问题。 它是一个服务器,但您可以通过Node连接到MySQL并将数据发送给用户。有许多陷阱,其中之一就是你必须知道JS,你必须通过JS而不是PHP格式化你的输出。

然而,你的瓶颈几乎永远不会是PHP,除非你做了一些不是PHP设计的东西(比如在一个数组中加载100万个条目并使用该数组进行各种搜索,什么不是)。 你会发现什么是你的瓶颈(万一网站繁忙)是HTTP服务器,因为你可能会超出内存,因为每个连接需要一定的内存量,当然 - 你的数据库将是(最有可能)我/ O bound(hdd bound)。

在整个过程中,PHP将是您最不担心的问题。使用C或Node编写的程序无助于加快速度,因为您必须扩展数据库系统 - 这是一个完全不同的故事(此外,您还需要扩展HTTP服务器设置)。

基本上 - 坚持使用PHP / MySQL,至少暂时不要使用Node。

更新:由于这个答案被接受并且技术问世,所以警告新人很好:Node.js在任何人的最疯狂的梦想中变得流行,我个人认为 awesome 。我很幸运能够交替使用node和php。

Node拥有出色的社区和强大的软件包,软件包管理器和任务管理器。任何熟悉JS的人都可以立即使用节点。它非常棒,非常有用,我认为节点可以推动JavaScript完成Java最初的设计(这是基于轶事证据而不是事实的观点)。

底线:在选择技术时,应该选择他们熟悉或表达的技术。 PHP和Node.js都以自己的方式很好,没有明确的方法来确定哪一个“更好”。

答案 1 :(得分:5)

你可以。它很快。

基准测试: 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

答案 2 :(得分:5)

如果你写了一些关于你的php应用程序的详细信息会很有帮助。决定将取决于很多事情,比如 -

  1. 您的申请有多大?它会影响将php应用程序移植到节点所需的时间。您可能还需要考虑javascript中异步样式编程的专业知识。
  2. 您写道,您正处于优化步骤。 Php已经有很长一段时间了。应用优化技术比在最后阶段重写不同平台中的所有内容应该更容易,当然我认为时间对你来说是一个至关重要的因素,就像软件行业一样。
  3. 你的申请有多慢?是否执行缓慢或不增加负载?语言性能不是Web应用程序的瓶颈。您是否尝试过优化查询,为数据库添加适当的索引,尝试更好的Web服务器和/或缓存?环顾四周,您将获得有关如何优化PHP应用程序的资源,而不是如何在节点中执行某些操作。
  4. 您是否考虑过投资硬件?可能比重做一切更便宜吗?
  5. 简而言之,节点仍在探索它的可能性,如果你想学习它,现在是最好的时间。但如果这种学习涉及到生产级应用程序的混乱,我的建议是否定的。节点不会神奇地提高应用程序的性能,它不是为此目的而构建的。

    要回答您的另一个问题 - 大多数人更喜欢Felixge的MySQL驱动程序:https://github.com/felixge/node-mysql

    这是另一种选择:https://github.com/sidorares/nodejs-mysql-native

答案 3 :(得分:2)

您可以使用https://github.com/masuidrive/node-mysqlhttps://github.com/sdepold/sequelize。它是nodejs最好的mysql驱动程序之一

答案 4 :(得分:1)

如果你有一个庞大的现有mysql数据库,你需要与完整的遗留代码进行交互,这将是转换为nosql的噩梦,然后是。

否则,请使用couch / mongo / redis / riak / cassandra /等。

选择一个符合您要求的可靠的noSQL数据库。

至于节点是否可以做php / mysql可以做的事情。您可以使用它开发网站。

节点是否有drupal或wordpress的equivelant握住你的手并为你做一切?否。

答案 5 :(得分:0)

我在NodeJS方面经验不足。但我的观点是,

  1. Nodejs专为创建聊天,在线游戏等实时应用程序而构建,因为它非常快。

  2. NodeJS是一个服务器。所以你无法与php比较,这意味着你需要去第三方模块执行一些任务,比如expressjs,node-mysql等。

  3. 使用NodeJS创建应用程序非常简单,如php-mysql