Разделение и репликация данных
Разделение данных распределяет базу данных по нескольким узлам для масштабируемости, в то время как репликация хранит копии данных на нескольких узлах для обеспечения доступности и производительности чтения; вместе они определяют, как распределенная база данных масштабируется и обеспечивает отказоустойчивость.
Definition
Разделение (фрагментация или шардирование) делит строки или столбцы отношения между несколькими узлами, так что каждый из них содержит часть данных; репликация хранит копии одних и тех же данных на нескольких узлах; политики размещения и репликации совместно регулируют масштабируемость, доступность и баланс нагрузки.
Scope
Эта тема охватывает способы размещения данных по узлам: горизонтальное разделение (шардирование) по диапазону, хешу или списку и вертикальное разделение по столбцам; стратегии разделения, включая согласованное хеширование; и модели репликации — синхронная против асинхронной, первичная-резервная против мульти-первичной — вместе с компромиссами между согласованностью и доступностью, которые они подразумевают. В ней рассматривается, как разделение обеспечивает параллелизм и как репликация обеспечивает отказоустойчивость. Она исключает протоколы фиксации и консенсуса, которые поддерживают согласованность реплик, что является смежной темой.
Core questions
- Как разделение по диапазону, хешу и списку распределяет строки по узлам?
- Когда вертикальное разделение предпочтительнее горизонтального?
- Как согласованное хеширование ограничивает перемещение данных при добавлении или удалении узлов?
- Каковы компромиссы между синхронной и асинхронной репликацией?
- Чем отличаются первичная-резервная и мульти-первичная репликация с точки зрения согласованности и доступности?
Key concepts
- горизонтальное разделение (шардирование)
- вертикальное разделение
- разделение по диапазону, хешу и списку
- согласованное хеширование
- синхронная против асинхронной репликации
- первичная-резервная репликация
- мульти-первичная репликация
- ключ раздела и баланс нагрузки
Key theories
- Горизонтальное и вертикальное разделение
- Горизонтальное разделение (шардирование) распределяет строки таблицы по узлам с помощью ключа раздела для распределения нагрузки и обеспечения параллельной обработки, в то время как вертикальное разделение делит таблицу по столбцам; функция разделения критически влияет на баланс нагрузки и локальность запросов.
- Согласованное хеширование
- Согласованное хеширование отображает ключи и узлы на кольцо таким образом, что добавление или удаление узла перемещает лишь небольшую, ограниченную часть ключей, что делает его фундаментальным методом разделения в эластичных распределенных хранилищах данных.
- Модели репликации и компромиссы
- Синхронная репликация поддерживает идентичность копий ценой задержки и доступности при разделении, в то время как асинхронная репликация быстрее, но может предоставлять устаревшие данные; первичная-резервная модель централизует операции записи, тогда как мульти-первичная позволяет выполнять запись в любом месте ценой разрешения конфликтов.
Clinical relevance
Разделение и репликация — это рычаги, которые делают системы данных масштабируемыми и доступными: шардирование позволяет одной логической базе данных обслуживать рабочие нагрузки, с которыми не справилась бы ни одна машина, а репликация обеспечивает бесперебойную и быструю работу служб при сбоях и в разных регионах, что делает эти методы центральными для каждой крупномасштабной платформы данных.
History
Фрагментация и репликация изучались в ранних распределенных системах баз данных конца 1970-х и 1980-х годов. Согласованное хеширование, представленное Каргером и коллегами в 1997 году для веб-кэширования, позднее было принято масштабируемыми хранилищами типа «ключ-значение» в качестве схемы разделения, а крупные интернет-сервисы популяризировали агрессивное шардирование и репликацию для обеспечения эластичности и доступности.
Key figures
- M. Tamer Özsu
- Patrick Valduriez
- David Karger
Related topics
Seminal works
- ozsu2011
- karger1997
Frequently asked questions
- В чем разница между разделением и репликацией?
- Разделение делит данные так, что каждый узел содержит различное подмножество, что распределяет хранение и нагрузку для масштабируемости. Репликация хранит копии одних и тех же данных на нескольких узлах для обеспечения доступности и более быстрого чтения. Большинство крупных систем используют оба подхода: данные шардируются по узлам, и каждый шард реплицируется несколько раз.
- Почему следует использовать согласованное хеширование вместо обычного хеш-разделения?
- При обычном хеш-разделении на основе модуля изменение количества узлов переназначает почти каждый ключ, что приводит к массивному перемещению данных. Согласованное хеширование располагает ключи и узлы на кольце таким образом, что добавление или удаление узла переназначает только ключи, находящиеся рядом с этим узлом, что делает перебалансировку дешевой по мере роста или уменьшения кластера.