Amazon DynamoDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:18, 23 января 2019.
Open book.svg Авторство
А. А. Вернидуб
Согласовано: 23.01.2019
Amazon DynamoDB
ADB.png
Разработчики: Amazon
Выпущена: 2012
Состояние разработки: Активно
Платформа: Кроссплатформенная
Локализация: English
Тип ПО: NoSQL
Лицензия: Proprietary
Веб-сайт официальный сайт

Amazon DynamoDB [Источник 1] – это быстрый и гибкий сервис баз данных NoSQL. Он подходит для любых приложений, требующих стабильную работу с задержкой не более нескольких миллисекунд при любом масштабе. Эта полностью управляемая облачная база данных. Поддерживает работу на основе как документов, так и пар «ключ-значение». Гибкость и надежность этой модели данных позволяет использовать ее для мобильных и веб-приложений, игр, рекламных платформ и «Интернета вещей» (IoT), а также в других приложениях.

Amazon DynamoDB

Рисунок 1 - DynamoDB

Amazon DynamoDB – это полностью управляемый сервис баз данных NoSQL, обеспечивающий прогнозируемую высокую производительность с эффективной масштабируемостью. Amazon DynamoDB дает клиентам возможность переложить на AWS административную нагрузку, связанную с управлением распределенными базами данных и их масштабированием, значит, избавиться от необходимости ввода оборудования в эксплуатацию, его настройки и конфигурирования, репликации, обновления ПО и масштабирования кластеров. В дополнение к линейке реляционных СУБД (MySQL, PostgreSQL, Oracle, Microsoft SQL Server) компания Amazon с 2012 г. предлагает облачный доступ к NoSQL СУБД DynamoDB.[Источник 2] Логотип DynamoDB представлен на рисунке 1.

Основные особенности Amazon DynamoDB

DynamoDB позволяет решить одну из основных проблем при масштабировании баз данных: организацию управления ПО баз данных и выделения аппаратного обеспечения, необходимого для их работы.
DynamoDB поддерживает операции GET/PUT с помощью заданного пользователем первичного ключа - обязательного атрибута объекта в любой таблице. Первичный ключ задается при создании таблицы и является уникальным идентификатором каждого объекта. Однако в DynamoDB можно не только запрашивать атрибуты по первичным ключам, а так же и по вторичным и глобальным индексам. После создания таблицы с помощью консоли DynamoDB или API CreateTable для вставки элементов можно использовать API PutItem или BatchWriteItem. Значения полей таблицы могут быть строковыми, числовыми, двоичными, а также наборами значений. Размер одной записи не должен превышать 64 Кб. Для извлечения элементов, добавленных в таблицу, можно использовать такие API, как GetItem, BatchGetItem или Query, если в таблице используются составные первичные ключи.
При чтении данных из DynamoDB можно указать модель непротиворечивости чтения: потенциально непротиворечивое или строго непротиворечивое.
Потенциально непротиворечивое чтение - модель, позволяющая увеличить пропускную способность чтения, но не позволяющая отражать результаты недавно выполненных записей.
Непротиворечивость всех копий данных, как правило, достигается в течение секунды, и обновленные данные обычно поступают при повторном чтении через некоторое время.
Строго непротиворечивое чтение - модель, возвращающая результат, в котором отражены все записи, получившие отклик об успешном завершении перед совершением операции чтения.

Модели данных

В Amazon DynamoDB используются следующие сущности:

  • Таблица: представляет собой совокупность элементов данных, подобную совокупности строк в таблице реляционной базы данных. Каждая таблица может иметь бесконечное количество элементов данных. Amazon DynamoDB – сервис с гибким описанием данных, где элементы данных в таблице не обязаны обладать одинаковыми атрибутами или даже равным количеством атрибутов. Каждая таблица должна иметь свой первичный ключ.
  • Элемент: элемент состоит из первичного или сложного ключа и переменного количества атрибутов. Явно заданных ограничений по количеству атрибутов, связанных с отдельным элементом, не существует, однако агрегированный размер элемента, включая все имена и значения атрибутов, не должен превышать 400 КБ.
  • Атрибут: каждый атрибут, связанный с элементом данных, состоит из имени атрибута (например, «цвет») и значения или набора значений (например, «красный» или «красный, желтый, зеленый»). Отдельные атрибуты не имеют явно заданных ограничений по размеру, но общее значение элемента (включая все имена и значения атрибута) не должно превышать 400 КБ.

Amazon DynamoDB Accelerator (DAX)

Amazon DynamoDB Accelerator (DAX) обеспечивает высокую скорость чтения таблиц DynamoDB при любом масштабе, позволяя использовать полностью управляемый высокодоступный кэш в памяти. С помощью DAX можно повысить производительность чтения таблиц DynamoDB в 10 раз, сократив время, необходимое для чтения, с миллисекунд до микросекунд даже при миллионах запросов в секунду.
По сути, DAX представляет собой совместимый с Dynamo DB сервис кэширования, обладающий высокой производительностью в оперативной памяти. DAX берет на себя всю работу по реализации ускорения в памяти для таблиц DynamoDB, избавляя разработчиков от трудоемких задач по инвалидации кэша, его заполнению данными и по управлению кластерами. Изменять логику приложений не требуется: DAX совместим с существующими вызовами API DynamoDB. DAX можно активировать всего за пару щелчков мышью в Консоли управления AWS или с помощью SDK AWS.

Поддержка данных типа «ключ‑значение» и документной модели данных

DynamoDB поддерживает работу со структурами данных на основе пар "ключ‑значение" и документной модели данных.

  • Модель данных "ключ-значение"

Данные хранятся в так называемых таблицах, обладающих первичным ключом (простым или составным) и набором атрибутов (заранее зафиксированной схемы нет, поддерживаются скалярные типы данных и множества). Для работы с данными используются операции поиска, вставки и удаления по первичному ключу, условные операции (например, обновить, если выполнено условие), атомарные модификации (например, увеличение значения атрибута на единицу) и поиск по неключевым атрибутам путём полного сканирования таблицы.

  • Документная модель данных

DynamoDB поддерживает хранение и обновление документов, а также выполнение запросов к ним. Имеет встроенную поддержку JSON, благодаря чему документы JSON можно записывать непосредственно в таблицы DynamoDB. Максимальный размер элемента составляет 400 КБ, поэтому DynamoDB позволяет сохранять большие документы JSON и вложенные объекты за одну транзакцию. К сожалению, эффективного способа запрашивать данные по неключевым атрибутам DynamoDB не имеет. Желаемый уровень согласованности может быть указан при чтении данных (потенциально непротиворечивое или строго непротиворечивое чтение).

Глобальные таблицы

Глобальные таблицы в Dynamo DB позволяют создать полностью управляемую глобальную базу данных, охватывающую несколько регионов и имеющую несколько ведущих серверов. Данный подход обеспечивает высокую производительность локальных операций чтения и записи для глобальных приложений с широкими возможностями масштабирования. Глобальные таблицы автоматически реплицируют таблицы Amazon DynamoDB в выбранные регионы AWS.
Глобальные таблицы избавляют от сложной работы по репликации данных между регионами и разрешению конфликтов обновления, что дает клиентам возможность сосредоточиться на бизнес-логике приложения. Кроме того, глобальные таблицы позволяют приложениям оставаться высокодоступными даже в маловероятном случае изоляции или снижения производительности целого региона.

Автомасштабирование

DynamoDB обеспечивает эффективное автоматическое масштабирование пропускной способности и ресурсов хранилища с помощью API или Консоли управления AWS. Увеличивать пропускную способность или объем хранилища можно без ограничений. За автомасштабирование отвечает приложение Auto Scaling. При использовании автомасштабирования необходимо задать правила масштабирования для таблицы или глобального вторичного индекса. Это правило будет определять, масштабировать ли пропускную способность по режиму чтения или по режиму записи (или по обоим режимам), а так же верхнюю и нижнюю пропускную способность для таблицы или индекса.
Когда правило автомасштабирования задано, приложение Auto Scaling создает пару Amazon CloudWatch-сигналов на стороне пользователя. Каждая пара представляет верхние и нижние границы для заданных параметров пропускной способности. Эти аварийные сигналы CloudWatch запускаются, когда фактическое использование таблицы отклоняется от целевого значения в течение продолжительного периода времени.
Когда срабатывает один из сигналов Amazob CloudWatch, Amazon SNS отправляет пользователю уведомление (если оно включено). Затем сигнал CloudWatch вызывает приложение Auto Scaling, которое, в свою очередь, уведомляет DynamoDB о необходимости изменения пропускной способности. Схема работы Auto Scaling представлена на рисунке 2:

Рисунок 2 - Cхема работы автоматического масштабирования

Резервное копирование и восстановление по требованию

Резервное копирование и восстановление по требованию позволяет создавать полные резервные копии данных таблиц DynamoDB для архивирования в целях обеспечения соответствия корпоративным и законодательным требованиям. Можно создавать резервные копии таблиц размером от нескольких мегабайтов до сотен терабайтов без влияния на производительность и доступность приложений в рабочей среде.
Резервное копирование по требованию позволяет создавать резервные копии таблиц для их долгосрочного хранения и архивирования по соответствующим требованиям. Восстанавливать или резервировать таблицы DynamoDB можно в любое время одним щелчком мыши в консоли управления AWS или с помощью одного вызова API. Действия резервного копирования и восстановления выполняются с нулевым воздействием на производительность таблицы или ее доступность. Все резервные копии журналируются, легко обнаруживаются и сохраняются до явного их удаления.

Время жизни (TTL)

Время жизни (TTL) позволяет установить определенную метку времени для удаления из таблиц объектов с истекшим сроком действия. По истечении указанного времени соответствующие элементы обозначаются как устаревшие и после этого удаляются. TTL позволяет уменьшить использование хранилища и снизить стоимость хранения нерелевантных данных. С включенным TTL в таблице можно установить временную метку удаления по каждому элементу, тем самым ограничить использование хранилища только релевантными записями.

Вторичные индексы

Вторичный индекс - это структура данных, содержащая подмножество атрибутов таблицы, а также альтернативный ключ для поддержки операции запроса. Извлекать данные из индекса можно с помощью запроса к индексу, процесс аналогичен обычному запросу к таблице. Таблица может иметь несколько вторичных индексов, что дает приложениям доступ ко многим различным шаблонам запросов, однако определенный индекс может ссылаться только на одну таблицу.
DynamoDB позволяет эффективно выполнять запросы по любому атрибуту (столбцу) с помощью вторичных индексов. Вторичные индексы для таблицы можно создавать и удалять в любой момент.

DynamoDB Streams и Триггеры

Amazon DynamoDB Streams – это упорядоченная по времени последовательность изменений в таблице DynamoDB на уровне элементов. DynamoDB Streams захватывают упорядоченную во времени последовательность изменений в любой таблице DynamoDB и сохраняют эту информацию в журнал, в котором информация хранится до 24 часов. Соответственно, с помощью DynamoDB Streams можно отслеживать последние изменения элементов таблицы или получать все обновления элементов за последние сутки. Эти данные можно использовать при создании оригинальных приложений для репликации, материализованных представлений, резервного копирования и интеграции с другими сервисами.
Интеграция DynamoDB с сервисом AWS Lambda позволяет использовать триггеры. Триггеры - это "кусочки" кода, автоматические реагирующие на любые события DynamoDB Streams. С помощью триггеров можно автоматически выполнять специальные функции, когда в таблице DynamoDB обнаруживаются изменения на уровне элемента.

Архитектура Amazon DynamoDB

Простейшая архитектура приложения с использованием DynamoDB представлена на рисунке 3. В данной архитектуре клиенты взаимодействуют с серверами приложений через балансировщик нагрузки Elastic Load Balancing. Приложение, в свою очередь, за запрашиваемой информацией обращается к базе данных DynamoDB. [Источник 3]:

Рисунок 3 - Архитектура приложения с DynamoDB

Отличия от облачных РСУБД

Основным отличием DynamoDB, прежде всего, является схема оплаты - оплата производится не за объем данных, а за активность обращения к ней. И так же иная концепция масштабирования - DynamoDB при росте интенсивности запросов и объёмов пересылаемых наборов данных умеет самостоятельно масштабироваться “по горизонтали” на большее количество (сотни) серверов. Раньше она использовала жёсткие диски, но сейчас задействует только скоростные флэш-накопители. Главное в этом подходе — точно предсказуемые производительность и время отклика (существенно меньше 10 мс) на запросы клиентов, что важно для масштабных онлайн-систем реального времени. Формального ограничения на объём данных в базе нет, новое пространство подключается автоматически по мере роста хранимой информации. DynamoDB функционирует в режиме нуль-администрирования, данные синхронизируются по трём географическим зонам.

Взамен привычных баз данных DynamoDB предлагает концепцию таблиц "ключ — значение", которые качественно отличаются от реляционных матриц, так как не поддерживают жёсткие схемы описания информации. Важная характеристика DynamoDB — практически гарантированная поставка самых последних значений из таблиц, что далеко не всегда обеспечивают другие NoSQL-системы, не очень эффективно кэшируя данные.

DynamoDB в отличие от многих других NoSQL-систем проприетарна (ПО, являющаяся частной собственностью). Так как единого интерфейса к NoSQL-продуктам пока не существует, пользователям необходимо изучить с нуля схемы и интерфейсы взаимодействия с этой СУБД, что, впрочем, не слишком сложно. Но определённый порог вхождения в данную технологию на фоне множества открытых и свободных NoSQL-продуктов подтолкнул Amazon к выпуску в сентябре 2013 г. локальной версии DynamoDB, которую можно установить на свой ПК и потренироваться в работе с ней локально.

DynamoDB позиционируется как простая в эксплуатации СУБД для онлайн-систем, которые могут масштабироваться до тысяч запросов в секунду с сохранением короткого времени отклика. При этом она, конечно, не сравнится по функциональности с массовыми РСУБД и не "умеет выполнять сложные запросы", хотя поддерживается ряд атомарных операций, которые, например, изменяют значение конкретного числового поля в записи. Главное, DynamoDB "позволяет максимально быстро развернуть онлайн-систему", которой требуется база с достаточно простой организацией данных.[Источник 4]

Преимущества и недостатки

Преимущества:

  • Быстрая и стабильная работа

Решение Amazon DynamoDB работает стабильно и быстро в системах любого масштаба в любой области применения. Среднее время обработки запроса на сервере составляет несколько миллисекунд. По мере роста объемов данных и повышения необходимой производительности система Amazon DynamoDB обеспечивает соответствие требованиям к пропускной способности и времени обработки запроса с помощью технологий автоматического разбиения на разделы и SSD в системах любого масштаба.

  • Высокая масштабируемость

При создании таблицы нужно просто указать требуемый объем запросов. Если необходимо изменить пропускную способность, обновите параметры таблицы с помощью консоли управления AWS или Amazon DynamoDB API. Amazon DynamoDB выполняет все операции по масштабированию в скрытом режиме и в ходе их выполнения продолжает обеспечивать соответствие установленным требованиям к пропускной способности.

  • Гибкость

Amazon DynamoDB поддерживает работу со структурами данных на основе как документов, так и пар «ключ-значение», благодаря чему вы можете выбрать оптимальную архитектуру с учетом особенностей своей системы.

  • Техподдержка

На Amazon DynamoDB есть курс видео-уроков, который прекрасно описывает возможности системы, а главное, как их настроить. Если у Вас есть какие-то вопросы по использованию ПО, то существует линия техподдержки, которая свяжется с Вами в ближайшее время. Из неприятных сведений, за техподдержку нужен будет более продвинутый аккаунт пользователя.

Недостатки:

  • Требует оплаты - не open-source.
  • Изменение или добавление ключей "на лету" невозможно без создания новой таблицы.
  • Запросы данных крайне ограничены.
  • Регистрация аккаунта.

Регистрация занимает довольно много времени, т.к. Amazon требует ввода большого количества пользовательских данных (ФИО, email, номер телефона, номер платежный карты и т.д). Для проверки работоспособности нужны банковские реквизиты, стоимость - 1$.

Возможности Amazon DynamoDB при эксплуатации

  • Поддержка модели данных «ключ-значение»
  • Масштабирование
  • Доступность данных даже при сбое ЦОД
  • Локальная разработка приложения с последующим масштабированием его до размеров облака
  • Запросы по любому атрибуту с помощью локальных и глобальных вторичных индексов
  • Streams – ADDB может предоставить данные обо всех изменениях, произошедших с облаком пользователя за последние 24 часа
  • Межрегиональная репликация
  • Использование триггеров для автоматического выполнения пользовательских функций при обнаружении изменений в таблицах
  • Поиск по контенту
  • Интеграция ADDB с графовой БД Титан
  • Гибкая схема данных (данные в таблице не обязаны обладать одинаковыми атрибутами, поддерживается множество различных типов данных)
  • Строгая непротиворечивость и атомарные счетчики
  • Встроенный мониторинг производительности запросов и задержки таблиц
  • Безопасность
  • Интеграция с Elastic MapReduce
  • Интеграция с Redshift
  • Интеграция с AWS Data Pipeline
  • Консоль и API (Application Programming Interface)

Пример использования Amazon DynamoDB

Простейшее использование Amazon DynamoDB.[Источник 5]

Источники

  1. Amazon DynamoDB [Электронный ресурс]. Официальный сайт / Дата обращения: 19.10.2017. Режим доступа: https://aws.amazon.com/ru/dynamodb/faqs/
  2. Amazon Web Services [Электронный ресурс]. Компоненты и термины AWS / Дата обращения: 19.10.2017. Режим доступа: http://eax.me/aws-intro/
  3. Amazon Elastic Compute Cloud [Электронный ресурс]. Amazob EC2 / Дата обращения: 01.10.2018. Режим доступа: https://www.slideshare.net/AmazonWebServices/amazon-elastic-compute-cloud-ec2-module-1-part-2-awsome-day-2017?next_slideshow=1
  4. ZDNet [Электронный ресурс]. Amazon Switches on DynamoDB / Дата обращения: 19.10.2017. Режим доступа: http://www.zdnet.com/article/amazon-switches-on-dynamodb-cloud-database-service/
  5. Amazon DynamoDB [Электронный ресурс]. Документация по Amazon DynamoDB / Дата обращения:19.10.2017. Режим доступа: https://aws.amazon.com/ru/documentation/dynamodb/