Динамо (система хранения) - Dynamo (storage system)

Динамо это набор методов, которые вместе могут сформировать очень доступный ключ-значение структурированное хранилище система[1] или распределенное хранилище данных.[1] Обладает свойствами обоих базы данных и распределенные хеш-таблицы (DHT). Он был создан, чтобы помочь решить некоторые проблемы с масштабируемостью, с которыми сайт Amazon.com столкнулся во время курортного сезона 2004 года.[2] К 2007 году он использовался в Amazon Web Services, например Простая служба хранения (S3).[1]

Отношение к DynamoDB

Amazon DynamoDB «построен на принципах Динамо»[3] и является размещенным сервисом в инфраструктуре AWS. Однако в то время как Dynamo основан на репликации без лидера, DynamoDB использует репликацию с одним лидером.[4]

Принципы

  • Добавочная масштабируемость: Dynamo должен иметь возможность масштабировать один хост (или «узел») хранения за раз, с минимальным влиянием как на операторов системы, так и на саму систему.
  • Симметрия: каждый узел в Dynamo должен иметь тот же набор обязанностей, что и его коллеги; не должно быть выделенного узла или узлов, которые берут на себя особые роли или дополнительный набор обязанностей.
  • Децентрализация: расширение симметрии, дизайн должен отдавать предпочтение децентрализованным одноранговым методам, а не централизованному управлению.
  • Неоднородность: система должна иметь возможность использовать неоднородность инфраструктуры, на которой она работает. Например, распределение работы должно быть пропорционально возможностям отдельных серверов. Это важно для добавления новых узлов с большей емкостью без одновременного обновления всех узлов.

Методы

ПроблемаТехникаПреимущество
Разделение набора данныхПоследовательное хешированиеПошаговая, возможно линейная масштабируемость пропорциональна количеству взаимодействующих узлов.
Высокая доступность записиВекторные часы или же Наборы векторных версий с точками, сверка во время чтенияРазмер версии не связан с частотой обновления.
Обработка временных сбоевНебрежный кворум и Намеченная передачаОбеспечивает высокую доступность и надежность, когда некоторые реплики недоступны.
Восстановление после необратимых сбоевАнтиэнтропия с использованием Дерево МерклаМожет использоваться для выявления различий между владельцами реплик и активной синхронизации расходящихся реплик.
Членство и обнаружение сбоевПротокол членства на основе сплетен и обнаружение сбоевИзбегает наличия централизованного реестра для хранения информации о членстве и жизнеспособности узлов, сохраняя симметрию.

Реализации

Amazon опубликовал статью о Dynamo, но так и не выпустил ее реализацию. Индексный слой Amazon S3 реализует и расширяет многие основные функции Dynamo. С тех пор на основе бумаги было создано несколько реализаций. Работа также вдохновила многих других NoSQL реализации базы данных, такие как Apache Cassandra, Проект Волан-де-Морт и Риак.[2]

Смотрите также

Рекомендации

  1. ^ а б c Decandia, G .; Hastorun, D .; Jampani, M .; Какулапати, G .; Лакшман, А .; Пильчин, А .; Sivasubramanian, S .; Vosshall, P .; Фогельс, В. (2007). «Dynamo: высокодоступный магазин ключей и значений Amazon». Материалы двадцать первого симпозиума ACM SIGOPS по принципам операционных систем - SOSP '07. п. 205. Дои:10.1145/1294261.1294281. ISBN  9781595935915.
  2. ^ а б Amazon делает новый шаг в NoSQL с DynamoDB
  3. ^ Amazon DynamoDB - быстрая и масштабируемая служба баз данных NoSQL, разработанная для масштабируемых Интернет-приложений
  4. ^ Клеппманн, Мартин (2 апреля 2017 г.). Разработка приложений, интенсивно использующих данные (1-е изд.). O'Reilly Media. п. 177. ISBN  978-1449373320. Dynamo недоступен для пользователей за пределами Amazon. Как ни странно, AWS предлагает продукт размещенной базы данных под названием DynamoDB, в котором используется совершенно другая архитектура: она основана на репликации с одним лидером.

внешняя ссылка