В противоположность реляционным базам данных, Dynamo - это распределенная система хранения данных, в которой информация не разбивается на таблицы, а хранится в виде объектов, доступных по ключу. Наиболее простой путь к пониманию, как работает система, можно рассмотреть на примере запроса информации о товаре. Например, запрашивая книгу на сайте amazon.com по URL http://www.amazon.com/gp/product/1590597699, вы получаете страницу с описанием книги, отзывами других людей, списком похожих книг и т.д. Для создания этой страницы Amazon выполнит большое количество запросов к базе данных. Ключевая информация о книге в данном случае берется из URL (уникальный код для каждого товара Amazon - 1590597699).
Dynamo предлагает два простых метода для доступа к данным: get и put. Для метода put необходимы ключ (key), контекст (context) и собственно сам объект (object). Контекст базируется на объекте и используется для проверки обновлений и учета версионности объекта.
Краткие тезисы, описывающие систему Dynamo:
- все физические узлы равнозначны и объединены в кольцо
- виртуальные узлы создаются системой и назначаются на физические узлы. Для выполнения задач техобслуживания или в случае неисправности виртуальные узлы могут быть перераспределены между физическим узлами.
- алгоритм масштабирования является наиболее сложным участком системы, в задачи которого входит определение узла на котором будет сохранен данный объект
- алгоритм масштабирования автоматически учитывает ситуации, когда узел добавляется или выходит из состава системы
- каждый объект асинхронно реплицируется на N узлов
- обновления в системе происходят асинхронно, что приводит к появлению множественных копий объекта в системе с несколько различными состояниями/версиями
- расхождения в системе устраняются после определенного периода временем, гарантирующего возможную последовательность
- каждый узел в системе может обработать put или get запрос для любого ключа
Исходя из этого, можно сказать, что Dynamo достаточно сложная система, но в тоже время, концептуально простая. Каждый узел идентичен другому, узлы могут появляться и исчезать в системе, данные распределяются и балансируются между узлами в кольце. Все это напоминает колонию муравьев или пчелиный улей.
Одной из важных особенностей Dynamo является возможность адаптации системы, буквально несколькими параметрами, для достижения различных технических целей, обеспечивающих различные бизнес-логики. Dynamo - система хранения данных, контролируемая различными SLA (Service Level Agreement). Различные приложения используют собственные конфигурации Dynamo, в зависимости от их требований к задержкам и точности данных.
Ссылки:
http://www.readwriteweb.com/archives/amazon_dynamo.php
http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
http://www.readwriteweb.com/archives/amazon_webos.php
четверг, 19 августа 2010 г.
Подписаться на:
Комментарии к сообщению (Atom)




0 комментариев:
Отправить комментарий