Как мне «распределить» базу данных? - PullRequest
0 голосов
/ 15 февраля 2011

До сих пор мой «сервер баз данных» был счастлив, когда был одним компьютером.

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

Что именно это влечет за собой? Как я могу распределить свой д / б по нескольким серверам? И мне нужен промежуточный сервер, который пользователи запрашивают и каким-то образом распределяет нагрузку на «реальные» d / b-серверы?

Как это работает? Фо д / б пишешь? для чтения?

Какие-нибудь n00b 101 веб-сайты или книги?

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Что именно является узким местом с единой базой данных.

  • Производительность чтения
  • Производительность записи

Мало подходов, используемых веб-сайтами с высоким трафиком.

  • Использование главной / подчиненной модели.Добавьте один или несколько серверов и сделайте их ведомыми в вашей главной базе данных.Все записи будут выполняться на вашем мастере.Чтение может выполняться с любого из рабов.Это может быть самый простой подход.

  • Sharding.Объекты, которым не нужны объединения, могут быть перемещены на другие серверы баз данных.Каждый шард может иметь свои собственные подчиненные серверы.

    http://www.codefutures.com/database-sharding/

  • Кластеризация - Oracle RAC, Mysql NDB может обеспечить кластеризацию, где набор серверов действует как единое целое.

    http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-overview.html

1 голос
/ 15 февраля 2011

Если вы используете MySQL, вы можете заглянуть в MySQL Proxy, который обрабатывает циклический перебор и балансировку нагрузки между несколькими серверами. Многие другие СУБД также имеют эту функцию.

Еще один способ распределить нагрузку - это «оголить» вашу базу данных, или, другими словами, создать записи в нескольких системах и иметь возможность различать / определять, из какой системы их получать. Это обычная практика.

Для MySQL Server посмотрите 'High Performance MySQL' от O'reily

...