Кто-нибудь использовал HBase, Tornado, Cassandra или HipHop с Drupal?
У меня есть приложение Drupal с очень большим набором записей, почти полмиллиона узлов (475 181). Даже простые объединения становятся слишком трудоемкими (3-10 с), и мы становимся все более зависимыми от Memcached. Интересно, кто-нибудь использовал те же технологии, что Facebook использует с Drupal.
3 ответа
Чтобы ответить на ваш вопрос: пока нет, но в настоящее время проводится значительная работа над HipHop и базой данных nosql MongoDB. Подробнее об этом ниже.
Как уже упоминали другие, я бы сначала удостоверился, что ваши таблицы базы данных оптимизированы должным образом, проиндексированы и что ваша база данных имеет достаточные ресурсы. Если ваша база данных перегружена до 500 тыс. Строк, вероятно, что-то не так. (У нас более 150 тыс. Узлов, около 600 тыс. Строк в нашей таблице node_revisions, и поскольку в некоторых из наших таблиц cck у узлов есть несколько изображений, превышающих миллион строк.) Я не являюсь экспертом MySQL и смог получить время запроса базы данных ниже по сотне миллисекунд для большинства наших запросов.) Вот шаги, которые я хотел бы предпринять, прежде чем рассматривать переключение на другой механизм БД. (от самого простого к сложному)
- искать места, которые вам нужны индексы. Наиболее вероятными местами являются таблицы, в которых есть nid, vid или где много запросов, использующих значение поля в where и любой из столбцов в ваших объединениях. Вот где я получил 80% улучшения. Добавление слишком большого количества индексов может замедлить вставки и удаления, но их очень просто добавлять и удалять.
- Подумайте о переходе на INNODB, он почти всегда быстрее, чем стандартный drupal 6 myisam. Это супер легкое изменение.
- Убедитесь, что ваш my.cnf настроен правильно. Если вы не изменили его, возможно, это неправильно. Настройки, которые поставляются с большинством дистрибутивов MySQL, очень, очень консервативны и, вероятно, не подходят для вашей среды.
- Добавьте RAM, если вы переключились на INNODB, добавление RAM может иметь огромное значение в вашей производительности, даже если MySQL не любит RAM.
- Переключитесь на поток печати, если можете. Он исправляет ряд вещей, которые замедляют обычный друпал.
- Если у вас все еще есть проблемы, подумайте о том, чтобы отойти от CCK и создать собственные типы контента.
- Рассмотрите и оптимизируйте ваши запросы запросов. Представления не очень эффективны, и иногда вы можете добиться больших успехов, изменив запросы.
Вот отличная статья о том, чего можно достичь с помощью drupal и одного отдельного сервера.
Если ничего из этого не работает, вот несколько ссылок на некоторые из новых техник высоких технологий, с которыми люди играют. Самым многообещающим является MongoDB, и если у вас есть ресурсы для его использования в проекте, я вам завидую. (Он все еще немного новый и неполированный для небольшого магазина, которым мы являемся, но я не могу дождаться, чтобы погрузить в него свои зубы.)
drupal и Mongodb - на сессиях drupalcon SF (в прошлом году) также много говорят
Вы понимаете, что HipHop и Tornado не являются программным обеспечением для баз данных, верно?
Тем не менее, БД почти как ядро CMS, поэтому, когда вам нужно сменить ее на другую систему (ну, на самом деле даже больше, на SQL на NoSQL), вам следует подумать о создании новой / с использованием другой CMS, а не редактировать Drupal- ядро.
У меня нет опыта в этой теме, но https://drupal.stackexchange.com/questions/183/real-world-experience-in-scaling-and-tuning-performance наверняка выглядит полной полезной информации.