【问题标题】:Should I consider using Hadoop for a new PHP application?我应该考虑将 Hadoop 用于新的 PHP 应用程序吗?
【发布时间】:2015-02-03 13:53:17
【问题描述】:

我已经构建了一个 PHP Web 应用程序原型作为一个启动项目,其背后有一个 MySQL 数据库,但现在整个事情需要重写。

我想保留 PHP 作为服务器端语言,但我不知道应该使用什么样的数据库才能主要使用 AJAX 不断搜索和获取数据。

我认为 MySQL 关系数据库可以在一段时间内完成这项工作,但我想为世界各地的许多用户需要快速访问他们的数据做好准备。现在我只有一个在 Digital Ocean 上运行 PHP 和 MySQL 的 VPS,它可以很好地服务于我的 70 个测试用户。

但是如果我的人数开始增加怎么办?我不能只在一个数据库中存储数亿(或数十亿)行数据而没有延迟等问题,可以吗?我是否应该从一开始就考虑使用 Hadoop,这样我以后就不会遇到那么多问题了?我应该如何为将来必须扩展的东西做好准备?

【问题讨论】:

  • 这对我来说听起来像是过早的优化。如果硬件合适,MySQL 可以很好地处理数百万行,如果您对架构进行分片、缓存和其他方式正确处理,则可能还可以处理数十亿行。
  • 另外,您选择的数据库应该很大程度上取决于您存储/查询的数据类型。关系数据库和 NoSQL 数据库执行两个不同的任务,您应该为工作选择正确的工具。
  • 将其视为一种社交书签应用程序。想象一下,用户可以保存任意数量的链接,还可以存储一些元数据以及不同 url-s 的标签。每个链接都有点击统计、登录统计、基于链接受欢迎程度的排名系统等。

标签: php mysql database hadoop internationalization


【解决方案1】:

您绝对可以选择 Hadoop。从可能是 5 个节点的集群开始,然后根据需要进行扩展。否则,我建议您选择Amazon EMR,您可以随时根据需要放大和缩小。

您可以将 HBase 作为 hadoop 之上的数据库,并使用类似 sqlike 的语言 HIVE。这最初是由 Facebook 出于内部目的而开发的(与您完全相似的情况,他们无法处理大量数据,并且大部分代码都在 PHP 和 mysql 中)。 HIVE 将 sqlike 命令转换为 map reduce 并在 hadoop 集群上运行作业。

希望这会有所帮助!

【讨论】:

  • 谢谢,我一定会试试 Hadoop 和 HIVE。我对这种大数据技术没有任何经验,但您认为将一些数据(如用户、链接、标签等)存储在关系数据库中是否可能(或一个好主意),并存储所有在 Hadoop 中记录数据(点击和登录统计等)?
猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多