Динамо (система хранения) - Dynamo (storage system)
Dynamo - это набор методов, которые вместе могут сформировать высокодоступную структурированную систему хранения « ключ-значение» или распределенное хранилище данных . Он имеет свойства как баз данных, так и распределенных хеш-таблиц (DHT). Он был создан, чтобы помочь решить некоторые проблемы масштабируемости, с которыми веб-сайт Amazon.com столкнулся во время праздничного сезона 2004 года. К 2007 году он использовался в веб-сервисах Amazon, таких как Simple Storage Service (S3).
Отношение к DynamoDB
Amazon DynamoDB «построен на принципах Dynamo» и представляет собой размещенный сервис в инфраструктуре AWS. Однако в то время как Dynamo основан на репликации без лидера, DynamoDB использует репликацию с одним лидером.
Принципы
- Дополнительная масштабируемость: Dynamo должен иметь возможность масштабировать один хост (или «узел») хранения за раз, с минимальным влиянием как на операторов системы, так и на саму систему.
- Симметрия: каждый узел в Dynamo должен иметь тот же набор обязанностей, что и его коллеги; не должно быть выделенного узла или узлов, которые берут на себя особые роли или дополнительный набор обязанностей.
- Децентрализация: расширение симметрии, дизайн должен отдавать предпочтение децентрализованным одноранговым методам, а не централизованному контролю.
- Неоднородность: система должна иметь возможность использовать неоднородность инфраструктуры, на которой она работает. Например, распределение работы должно быть пропорционально возможностям отдельных серверов. Это важно при добавлении новых узлов с большей емкостью без одновременного обновления всех узлов.
Методы
Проблема | Техника | Преимущество |
---|---|---|
Разделение набора данных | Последовательное хеширование | Постепенная, возможно, линейная масштабируемость пропорциональна количеству взаимодействующих узлов. |
Высокая доступность записи | Наборы векторных часов или пунктирных векторных версий , согласование во время считывания | Размер версии не связан с частотой обновления. |
Обработка временных сбоев | Небрежный кворум и намеки на передачу обслуживания | Обеспечивает высокую доступность и надежность, когда некоторые реплики недоступны. |
Восстановление после необратимых сбоев | Антиэнтропия с использованием дерева Меркла | Может использоваться для выявления различий между владельцами реплик и активной синхронизации расходящихся реплик. |
Членство и обнаружение сбоев | Протокол членства на основе сплетен и обнаружение сбоев | Избегает наличия централизованного реестра для хранения информации о членстве и жизнеспособности узлов, сохраняя симметрию. |
Реализации
Amazon опубликовал статью о Dynamo, но так и не выпустил ее реализацию. Индексный уровень Amazon S3 реализует и расширяет многие основные функции Dynamo. С тех пор на основе бумаги было создано несколько реализаций. Этот документ также вдохновил на создание многих других реализаций баз данных NoSQL , таких как Apache Cassandra , Project Voldemort и Riak .
Смотрите также
Рекомендации
- ^ a b c Decandia, G .; Hastorun, D .; Jampani, M .; Какулапати, G .; Лакшман, А .; Пильчин, А .; Sivasubramanian, S .; Vosshall, P .; Фогельс, В. (2007). «Dynamo: высокодоступный магазин ключей и значений Amazon». Материалы двадцать первого симпозиума ACM SIGOPS по принципам операционных систем - SOSP '07 . п. 205. DOI : 10,1145 / 1294261,1294281 . ISBN 9781595935915. S2CID 221033483 .
- ^ a b Amazon делает новый шаг в NoSQL с DynamoDB
- ^ Amazon DynamoDB - быстрая и масштабируемая служба баз данных NoSQL, разработанная для масштабируемых Интернет-приложений.
-
^ Kleppmann, Мартин (2 апреля 2017). Разработка приложений, интенсивно использующих данные (1-е изд.). O'Reilly Media. п. 177. ISBN. 978-1449373320.
Dynamo недоступен для пользователей за пределами Amazon. Как ни странно, AWS предлагает продукт размещенной базы данных под названием DynamoDB, в котором используется совершенно другая архитектура: она основана на репликации с одним лидером.