Разница между частичной репликацией и шардингом?

Мне было интересно, является ли шардинг альтернативным названием для частичной репликации или нет. Что я понял, что -

Частичный ответ - каждый элемент данных имеет копии только на некоторых, но не на всех узлах ("Шардинг"?)

Чистый частичный репл. - имеет только копии подмножества элемента данных, но ни один узел не содержит полную копию базы данных

Гибридный частичный замен. — набор узлов является полными репликами, а другой набор узлов — частичными репликами.


person Joarder Kamal    schedule 03.01.2013    source источник


Ответы (2)


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

Но как насчет пишет?

Они все еще забиты, в 1 большой толстой ленивой основной базе данных, такие задачи, как управление буфером, блокировка, блокировка потоков / семафоры и задачи восстановления - являются настоящим узким местом OLTP, они делают записи невозможными для масштабирования... Подробнее см. сообщение в блоге здесь: http://database-scalability.blogspot.com/2012/08/scale-up-partitioning-scale-out.html. Кстати, ваша тема прямо здесь дала мне отличную идею для другого поста. Я свяжусь с этим вопросом и отдам вам должное! :)

Разделение — это когда данные появляются только один раз в массиве БД. Каждая база данных является полным владельцем данных, оттуда данные считываются, туда данные записываются. Таким образом, операции чтения и записи распределяются и распараллеливаются. Реальное масштабирование может быть достигнуто.

Шардинг — это беспорядок, чтобы его поддерживать, это чертовски сложно. ScaleBase (я там работаю), включите автоматическое прозрачное масштабирование, просто бросьте его посередине, и у вас будет 10 БД сзади, и это будет выглядеть как 1 для вашего приложения. Автоматический, прозрачный супершардинг - в коробке.

person Doron Levari    schedule 06.01.2013
comment
Привет, Дорон, спасибо за ваш ответ... Просто хочу добавить еще несколько слов, основанных на прочитанном за последние несколько дней: Шардинг - это механизм горизонтального или вертикального разделения базы данных на несколько разделов, которые могут быть распределены по нескольким независимым узлам. . Я предполагаю, что мы можем рассматривать это как пример чистой частичной репликации, если мы также реплицируем отдельные осколки. В настоящее время многие системы NoSQL обеспечивают в первую очередь горизонтальное разделение на основе выбранного ключа сегмента, которое направлено на обеспечение хорошей масштабируемости как для чтения, так и для записи, если можно соответствующим образом спроектировать логику приложения. - person Joarder Kamal; 06.01.2013
comment
Однако я предполагаю, что управлять логикой приложения для сегментирования очень сложно в том смысле, что типы транзакций и шаблон рабочей нагрузки известны заранее. Затем мы должны опустить распределенные транзакции, которые могут обращаться к разным сегментам для одной операции и производить несогласованные чтения, если используется асинхронная репликация. Кажется, всегда было несколько компромиссов между 1) шардингом (с репликациями — чистая частичная репликация) и полной репликацией; 2) асинхронное и синхронное распространение обновлений. стоило прочитать danweinreb.org/blog/improving-the-pacelc-taxonomy - person Joarder Kamal; 06.01.2013

Шардинг — это метод горизонтального разбиения таблицы. Это не связано с репликацией. Традиционно сервер РСУБД расположен в центре системы со звездообразной топологией. Вот почему это становится:

  1. единственная точка отказа

  2. узкое место производительности системы

Чтобы решить проблему № 1, вы используете репликацию: если исходный сервер умирает, вы переключаетесь на реплику.

Чтобы решить проблему № 2, вы можете:

  1. использовать шардинг

    1.1 сделать шардинг самостоятельно

    1.2 использовать готовый механизм кластеризации РСУБД

  2. перейти на решение NoSQL

Разделение позволяет масштабировать базу данных на множество серверов, разделяя данные между ними. Однако шардинг — это компромисс. Это ограничивает вас в соединении/пересечении данных/и т. д.

У вас все еще есть проблема № 1, если вы используете сегментирование. Поэтому хорошей практикой является репликация сегментированных узлов.

person Sergey Romanovsky    schedule 04.01.2013