Кластеры данных с использованием MySQL - PullRequest
0 голосов
/ 04 января 2011

Я бы хотел создать несколько баз данных и в каждой из них поддерживать заданное количество таблиц (т.е. 100 баз данных, каждая из которых содержит 60 таблиц). У моего приложения будет инфраструктура, позволяющая узнать, к какой БД и таблице получить доступ, чтобы найти необходимые данные. Содержание каждой таблицы не должно превышать 200 записей, но я хочу иметь возможность распределять данные по многим машинам для масштабируемости.

Какие важные вопросы следует учитывать при разработке распределенной системы, такой как использование mysql? Где я могу прочитать, чтобы узнать больше о настройке такой системы?

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Это отличная книга:

http://www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716/ref=sr_1_1?ie=UTF8&qid=1294150323&sr=8-1

Как правило, вы настолько же сильны, как и ваша самая слабая база данных.Если производительность одного из них снижается, он обычно блокирует веб-запросы.Удостоверьтесь, что для обеспечения исправности вашей БД и работоспособности вашего веб-приложения необходим отличный мониторинг

200 записей на таблицу (в зависимости от количества полей и индексов) - очень маленький размер таблицы.Это говорит о том, что вы должны вернуться к чертежной доске со своим дизайном.

100 баз данных - это много, чтобы не отставать.Если вы идете по этому пути, автоматизируйте все!При этом, если у вас нет миллиардов записей, вам это не нужно.

На основании предоставленной вами информации я бы посоветовал отказаться от вашего дизайна и найти что-то более простое.Если они являются внешними ограничениями, которые требуют этого, то нанять операционного человека с навыками mysql dba;то, что вы описали, - это 10-20 часов в неделю.

0 голосов
/ 04 января 2011

Исходя из количества таблиц и записей, я бы также рекомендовал переосмыслить ваш подход. Проектирование с учетом горизонтальной масштабируемости заслуживает похвалы, но, учитывая количество данных, вам, вероятно, будет лучше иметь только один сервер БД, оптимизированный для хранения всего набора данных в ОЗУ (плюс еще один узел с репликацией главный-подчиненный для аварийного переключения) и вы сможете идти в ногу с большим количеством трафика.

Кроме этого, основываясь на небольших фактах, которые я знаю о вашем приложении, я бы не рекомендовал разбивать ваши данные на такое количество баз данных и таблиц. Конечно, вы можете кодировать любую логику в своем приложении, чтобы убедиться, что оно знает, где искать вещи, но вы потеряете много возможностей SQL, поскольку вы не сможете комбинировать данные из разных баз данных напрямую, используя чистый SQL.

...