Шардинг в WordPress: какой мульти-DB плагин использовать?
У меня есть мультисайт WordPress, который размещает столько блогов, что мне необходимо шардировать базу данных. Я обнаружил три доступных плагина для распределения WordPress по нескольким базам данных:
- http://wordpress.org/extend/plugins/hyperdb/
- http://premium.wpmudev.org/project/multi-db
- http://wordpress.org/extend/plugins/shardb/
Я пытаюсь решить, какой из них использовать, но не нашёл достаточно информации для их сравнения.
У кого-нибудь есть опыт развертывания любого из этих трёх инструментов? Или, что ещё лучше, опыт работы с несколькими из них и объяснение, почему вы переключились?
Спасибо, Бетани

Лично я не использую ни один из них. Вместо этого я использую кластер NDB. NDB — это встроенный в MySQL механизм репликации master-master.
Единственное практическое ограничение NDB — отсутствие полнотекстового индекса. Но вы всегда можете использовать API Yahoo или Google для поиска по вашему сайту. Я считаю, что дополнительные преимущества избыточности стоят того, особенно учитывая, что ни один сервер не становится узким местом для записи в БД.
Если вам нужна репликация master-slave с узким местом при записи, то HyperDB — это решение от Automattic, поэтому среди перечисленных плагинов это более надежный вариант. Однако учтите, что часть кода HyperDB уже была перенесена в ядро WordPress начиная с версии 3.0 и слияния с WPMU. (Посмотрите файл wp-db.php в папке wp-includes — вы заметите, что многое из него поддерживает работу с несколькими серверами БД «из коробки».)

Для расширения этого подхода (чтобы решить проблему на уровне базы данных): Вы также можете проксировать серверы MySQL. И есть дополнительное преимущество в замене класса WPDB на тот, который использует mysqli или даже mysqlnd для повышения производительности на стороне PHP.

Я бы выбрал HyperDB.
Он разработан основными разработчиками WordPress и основан на коде, используемом на Wordpress.com.
http://wordpress.org/support/topic/shardb-or-hyperdb
SharDB может быть немного проще в настройке, но, вероятно, имеет меньше функций, чем HyperDB. Я бы посоветовал взглянуть на оба варианта и выбрать тот, который лучше соответствует вашим потребностям.

Мэтт выступал в нашей компании несколько месяцев назад. Он рекомендовал настройку базы данных по принципу master-slave с множеством R/O (только для чтения) реплик. Его аргументация заключалась в том, что операции записи дорогие, а операции чтения — их гораздо больше по объёму! — недорогие, поэтому лучше иметь больше ресурсов для чтения. То же самое для серверов приложений: используйте недорогое оборудование для решения проблемы и забудьте о supercache.

Это звучит как отличный вариант, но не могли бы вы объяснить немного подробнее о том, как бы вы реализовали это? (То есть, как настроить WP так, чтобы запись шла на мастер, а чтение — на один из слейвов) Есть ли плагин, который может помочь с этим? Или это конфигурация на уровне БД / какой-то другой инструмент?

Возможно, это? "HyperDB позволяет разделить запись и чтение базы данных и назначить их разным серверам."(https://codex.wordpress.org/HyperDB#Replication)
