Dynamo - это набор методов, которые вместе могут образовать высокодоступный ключ- значение структурированное хранилище система или распределенное хранилище данных. Он имеет свойства как баз данных, так и распределенных хеш-таблиц (DHT). Он был создан, чтобы помочь решить некоторые проблемы с масштабируемостью, с которыми веб-сайт Amazon.com столкнулся во время курортного сезона 2004 года. К 2007 году он использовался в веб-сервисах Amazon, таких как его Simple Storage Service (S3).
Amazon DynamoDB «построен на принципах Dynamo» и представляет собой размещенный сервис в инфраструктуре AWS. Однако, в то время как Dynamo основан на репликации без лидера, DynamoDB использует репликацию с одним лидером.
Проблема | Техника | Преимущество |
---|---|---|
Разделение набора данных | Согласованность Хеширование | Инкрементная, возможно, линейная масштабируемость пропорциональна количеству взаимодействующих узлов. |
Высокодоступные записи | Vector Clock или согласование во время чтения | Размер версии не связан с частотой обновления. |
Обработка временных сбоев | и | Обеспечивает высокую доступность и гарантию долговечности, когда некоторые реплики недоступны. |
Восстановление после необратимых сбоев | Антиэнтропия с использованием дерева Меркла | Может использоваться для выявления различий между владельцами реплик и активной синхронизации расходящихся реплик. |
Членство и обнаружение сбоев | Протокол членства на основе сплетен и обнаружение сбоев | Избегает наличия централизованного реестра для хранения информации о членстве и жизнеспособности узлов, сохраняя симметрию. |
Amazon опубликовал статью о Dynamo, но так и не выпустил ее реализацию. Индексный уровень Amazon S3 реализует и расширяет многие основные функции Dynamo. С тех пор на основе бумаги было создано несколько реализаций. Документ также вдохновил на создание многих других реализаций баз данных NoSQL, таких как Apache Cassandra, Project Voldemort и Riak.
Dynamo недоступен для пользователей за пределами Amazon. Как ни странно, AWS предлагает продукт размещенной базы данных под названием DynamoDB, который использует совершенно другую архитектуру: он основан на репликации с одним лидером.