【问题标题】:Has anyone used HBase, Tornado, Cassandra or HipHop with Drupal?有人在 Drupal 中使用过 HBase、Tornado、Cassandra 或 HipHop 吗?
【发布时间】:2011-03-07 14:54:37
【问题描述】:

我有一个 Drupal 应用程序,它有一个非常大的记录集,几乎有 50 万个节点 (475,181)。即使是简单的连接也变得过于耗时(3-10 秒),而且我们越来越依赖 Memcached。我想知道是否有人使用过 Facebook 在 Drupal 中使用的相同技术。

【问题讨论】:

  • 简单连接不应该花那么长时间,即使有 500k+ 个节点,您能否详细说明您的设置、Pressflow/Drupal、硬件、数据库等? Memcached 依赖(大规模)是 IMO 的一个事实,但我认为这些连接需要很长时间,并且会有一些方法可以优化查询和数据库。当您垂直缩放 DB Head 时,您的结果是什么?
  • 在我的开发机器上,像 select count(nid) from node_access 这样简单的事情需要 4 秒。尽管生产服务器要快得多,但它们每秒也提供许多页面浏览量。抱歉,我手头没有其他查询。
  • 无论这些花哨的技术是什么,将它们集成到 Drupal 中可能需要一段时间,甚至更需要考虑足够稳定以供生产使用。这更多是未来的问题,而不是现在的问题。
  • 阅读这两篇关于 Drupal 7 和 HipHop for PHP 的文章:php.webtutor.pl/en/2011/05/17/… php.webtutor.pl/en/2011/05/19/… 从那里你可以下载 Drupal 7 的修改后的源代码,以便它可以用 HipHop for PHP 编译。

标签: php drupal cassandra hbase hiphop


【解决方案1】:

回答您的问题:还没有,但是在 HipHop 和一个名为 MongoDB 的 nosql 数据库上正在进行大量工作。更多关于以下内容。

正如其他人所提到的,我首先要绝对确保您的数据库表已正确优化、索引以及您的数据库有足够的资源。如果您的数据库在 500k 行以下阻塞,则很可能出现问题。 (我们有超过 15 万个节点,我们的 node_revisions 表中有大约 60 万行,因为节点在我们的一些 cck 表中有超过一百万行的多个图像。)我不是 MySQL 专家,并且能够使数据库查询时间低于我们的大多数查询需要一百毫秒。) 这是我在研究切换到不同的数据库引擎之前要采取的步骤。 (从易到难)

  1. 寻找需要索引的地方。最有可能的地方是具有 nid、vid 的表,或者存在大量使用 where 中的字段值的查询以及连接中的任何列的地方。这是我获得 80% 改进的地方。添加过多的索引会减慢插入和删除的速度,但它们的添加和删除非常简单。
  2. 考虑切换到 INNODB,它几乎总是比标准的 drupal 6 myisam 快。这是一个超级简单的改变。
  3. 确认您的 my.cnf 设置正确。如果你没有改变它,它可能是错误的。大多数 MySQL 发行版附带的设置非常、非常保守,并且可能不适合您的环境。
  4. 添加 RAM,如果您已切换到 INNODB,添加 RAM 可以对您的性能产​​生巨大影响,即使 MySQL 不喜欢 RAM。
  5. 如果可以,请切换到压力流。它修复了许多减慢常规 drupal 的问题。
  6. 如果您仍然遇到问题,请考虑摆脱 CCK 并创建自己的内容类型。
  7. 查看并优化您的视图查询。视图效率不是很高,有时您可以通过修改查询取得很大进展。

Here 是一篇很棒的文章,介绍了使用 drupal 和 1 个单一服务器可以实现多少。

如果这些都不起作用,这里有一些关于人们正在使用的较新的高级技术的链接。最有前途的是 MongoDB,如果你有开发资源在项目中使用它,我羡慕你。 (对于我们这家小店来说,它还是有点新的和未打磨的,但我迫不及待地想投入进去。)

drupal and hiphop

drupal and Mongodb - drupalcon SF(去年)的会议上也有一场精彩的演讲

【讨论】:

  • 我今天刚刚在我的机器上本地安装了它以“沉迷其中”,设置和使用非常容易!现在我正在尝试 Drupal 模块。关于 MySQL,我有一个专门的系统管理员,他调整了 MySQL 以获得更好的性能(不要问我他做了什么)。今天我花了半天时间寻找数据库中缺失的索引,大多数表已经有了索引,自定义索引和 CCK 索引。我在没有索引的地方添加了索引。我们已经在使用带有 Varnish、Memcached 和 CDN 的 Pressflow。使网站变慢的是与数据相关的页面浏览量的相对数量。
  • “我刚刚安装”我指的是 MongoDB。
  • 我仍然打赌你可以从 MySQL 中获得更多。不要怀疑你的系统管理员。 . .但是在 500k 个节点上,您有 3-6 秒的查询仍然听起来有点可疑。然而,使用 MondoDB 肯定比 MySQL 更有趣。 . . :)
  • 在 Drupal 中你很少单独查询节点表,你一般连接 2 到 7 个表,或者更多,这取决于你想要什么数据。所以 MySQL 不是要查看 50 万条记录,通常要多得多。
  • 听说还有MariaDB,就像MySQL和Mongo的混合体。
【解决方案2】:

您确实意识到 HipHop 和 Tornado 不是数据库软件,对吧?

但是,数据库几乎就像 CMS 的核心,因此当您必须将其更改为另一个系统(实际上甚至更多,SQL 到 NoSQL)时,您应该考虑使用另一个 CMS 而不是编辑Drupal 核心。

【讨论】:

  • Drupal 6 和 Drupal 7 内核都运行在数据库抽象层之上 - api.drupal.org/api/drupal/includes--database.inc/group/database/…。理论上 Drupal 的 db 抽象层是可插拔的,你可以用 postgreSQL 运行它,举个例子。
  • 不过,它还是基于 SQL 数据库。 HBase 和 Cassandra 是基于 NoSQL 的数据库,因此您无法使用抽象层。
  • Drupal 7 的许多部分都是可插拔的,您可以将信息存储在 NoSQL 数据库中而不是 SQL 中,例如 drupal.org/project/mongodb 它允许在 MongoDB 中存储会话、字段、缓存等
【解决方案3】:

我没有这方面的经验,但https://drupal.stackexchange.com/questions/183/real-world-experience-in-scaling-and-tuning-performance 看起来确实充满了有用的信息。

【讨论】:

  • 该链接仍不对公众开放。
  • 抱歉,过几天应该可以访问了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2017-11-12
  • 1970-01-01
  • 2010-09-05
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多