Автоматически шардирует MySQL? - PullRequest
3 голосов
/ 06 октября 2010

Прямо сейчас я имею дело с ТОННОЙ (поверьте мне) информацией, которая должна быть доступна в режиме реального времени для быстрого чтения и записи для клиентов.Бэкэнд-система хранения данных, которую мы используем, - Oracle, но мы хотели бы заменить наши большие мясистые машины более компактной системой.

По разным причинам мы не можем использовать Cassandra, и мытестирование (но я боюсь) MongoDB (он действительно молодой и ему не хватает некоторых критических функций), поэтому я подумывал о том, чтобы разделить кучу экземпляров MySQL.

Есть ли хорошая система для управления этим илия должен свернуть свой собственный?Я нашел несколько проектов, но мне неясно, поддерживают ли они добавление / удаление шардов на лету.

Ответы [ 3 ]

5 голосов
/ 06 октября 2010

Определенно, вы можете очень эффективно реализовать разделение баз данных с MySQL. Если ваша схема шардинга проста, это можно сделать на прикладном уровне, но если она более сложная, вы можете использовать инструмент. Здесь описаны многие параметры, а также дополнительные параметры, которые мы поддерживаем.

Подробнее о вариантах вы можете узнать здесь:

http://www.dbshards.com/articles/database-sharding-whitepapers/

Также важно учитывать весь жизненный цикл для защищенной среды, включая отработку отказа, активно-активную репликацию, резервное копирование, восстановление и повторную передачу, как вы упоминали выше.

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

0 голосов
/ 13 июля 2016

Sharding-JDBC - это драйвер JDBC для баз данных и таблиц шардов. может быть, вы можете попробовать использовать его.

0 голосов
/ 25 апреля 2012

Хороший вопрос!Я должен сказать, что согласен с @cisaacson, что когда ваша схема становится немного более сложной, вы можете захотеть взглянуть на какое-то управление db.Вы можете сделать осколок самостоятельно, но, насколько я понимаю, вы имеете дело со сложным сценарием.Я недавно исследовал эту проблему для возможного проекта, и именно так я попал в шардинг (и нашел ваш пост).Примите во внимание, что разделение может быть немного сложным ... Так что, планируя такую ​​миграцию, вы можете подумать о разделении, которое иногда может быть более простым решением (вот интересное сравнение разделения / mysqlsharding и основная идея Wikipedia , если необходимо).Некоторые из проблем, о которых я знаю: как копировать сценарии, как публиковать объекты во всех шардах?А как насчет версий?И это даже не принимает во внимание очевидные проблемы, такие как объем памяти, необходимый для доступа к данным, количество записей, которые действительно могут обременять подчиненную машину, и т. Д. Видя, что вы написали это недавно, мне любопытнок тому, что вы решили сделать в конце концов:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...