Масштабируемые системы хранения данных
Масштабируемые системы хранения данных распределяют данные по множеству машин для обеспечения емкости, пропускной способности и доступности, превосходящих возможности любого отдельного сервера, при этом маскируя сбои отдельных узлов.
Definition
Масштабируемая система хранения данных хранит данные в кластере машин, разделяя их для увеличения емкости и пропускной способности и реплицируя для обеспечения долговечности и доступности, так что совокупная система масштабируется с увеличением числа узлов, допуская при этом сбои отдельных узлов.
Scope
Эта тема охватывает распределенные файловые системы, разработанные для стандартных кластеров, распределенные хранилища типа «ключ-значение» и ширококолоночные хранилища, а также методы структурированного наложения (согласованное хеширование и распределенные хеш-таблицы), используемые для разделения и поиска данных в масштабе. Она охватывает разделение данных (шардирование), репликацию для обеспечения долговечности, а также компромиссы между согласованностью и доступностью, которые отличают строго согласованные хранилища от высокодоступных.
Core questions
- Как данные разделяются и размещаются в большом, постоянно меняющемся наборе узлов?
- Как достигается долговечность и доступность, несмотря на частые сбои узлов?
- Какие гарантии согласованности может предоставить масштабируемое хранилище и какой ценой?
Key theories
- Кластерные файловые системы
- Системы, такие как Google File System, хранят огромные файлы в виде фрагментов, реплицированных на стандартных серверах, оптимизируя их для большого последовательного доступа и рассматривая сбои как норму, а не исключение.
- Распределенные структурированные хранилища
- Ширококолоночные хранилища и хранилища типа «ключ-значение», такие как Bigtable и Dynamo, разделяют данные по ключам между узлами и реплицируют их, обменивая выразительность запросов и согласованность на горизонтальную масштабируемость и доступность.
- Согласованное хеширование и распределенные хеш-таблицы
- Согласованное хеширование отображает ключи и узлы на кольцо таким образом, что добавление или удаление узла перемещает лишь небольшую часть ключей, а распределенные хеш-таблицы, такие как Chord, обеспечивают масштабируемый, децентрализованный поиск ключей с логарифмической маршрутизацией.
Clinical relevance
Масштабируемое хранение данных является надежной основой облачных платформ и крупных веб-сервисов: объектные хранилища, базы данных и аналитические конвейеры — все они опираются на распределенные файловые системы и хранилища типа «ключ-значение», выбор разделения и репликации в которых определяет гарантии долговечности и согласованности системы.
History
Одноранговые распределенные хеш-таблицы, такие как Chord (2001), продемонстрировали масштабируемый децентрализованный поиск; Google File System (2003) и Bigtable (2006-2008) показали кластерное хранение структурированных данных; а Amazon Dynamo (2007) популяризировала высокодоступное хранилище типа «ключ-значение», заложив основу современного ландшафта масштабируемых хранилищ и NoSQL.
Debates
- Строгая согласованность против высокой доступности в хранилищах
- Строго согласованные хранилища упрощают логику приложения, но должны жертвовать доступностью при разделении, в то время как высокодоступные хранилища, такие как Dynamo, допускают временное расхождение и передают разрешение конфликтов приложению; правильный выбор зависит от допустимости устаревания данных.
Key figures
- Sanjay Ghemawat
- Werner Vogels
- Ion Stoica
- Hari Balakrishnan
Related topics
Seminal works
- ghemawat2003
- decandia2007
- stoica2001
Frequently asked questions
- Какую проблему решает согласованное хеширование?
- Когда данные разделяются между узлами путем хеширования ключей, наивное хеширование перетасовывает почти все при добавлении или удалении узла. Согласованное хеширование располагает ключи и узлы на кольце таким образом, что такое изменение перемещает лишь небольшую, ограниченную часть ключей, что крайне важно для эластичных, постоянно меняющихся кластеров.