Описание Amazon DynamoDB
Что такое Amazon DynamoDB?
DynamoDB – это быстрый и гибкий сервис для создания нереляционных баз данных любого масштаба. DynamoDB дает клиентам возможность переложить на AWS административную нагрузку, связанную с управлением распределенными базами данных и их масштабированием, а значит, избавиться от необходимости подготавливать оборудование, настраивать и конфигурировать его, а также решать вопросы репликации, обновления ПО, планирования ресурсов для поддержания необходимой пропускной способности и масштабирования кластеров.
Какие виды управления берет на себя DynamoDB?
DynamoDB позволяет решить основные проблемы при масштабировании баз данных: проблему управления ПО баз данных и подготовки аппаратного обеспечения, необходимого для его работы. Теперь развертывать нереляционные базы данных можно за считаные минуты. Сервис DynamoDB автоматически масштабирует пропускную способность для соответствия текущей рабочей нагрузке и способен многократно разбивать данные по мере расширения таблиц. DynamoDB также выполняет синхронную репликацию данных в трех ЦОД региона AWS, обеспечивая высокую доступность и сохранность данных.
Хранилище
Что такое классы таблиц DynamoDB?
Классы таблиц DynamoDB – это варианты оптимизации производительности и затрат для таблиц DynamoDB. Доступны два класса таблиц: DynamoDB стандарт (класс таблиц по умолчанию, разработанный для рабочих нагрузок, требующих максимальной производительности, и оптимально подходящий для таблиц с непредсказуемыми нагрузками) и Amazon DynamoDB стандарт – редкий доступ (класс таблиц, оптимизированный для сценариев, где основную часть затрат составляет хранение данных, идеально подходит для таблиц с редко запрашиваемыми данными). Стандартные таблицы требуют меньших затрат на чтение и запись, но более высокие затраты на хранение. Таблицы стандарт – редкий доступ имеют меньшие затраты на хранение, но более высокие затраты на чтение и запись. Вы можете переключаться между этими классами таблиц дважды в течение 30 дней без простоев, что позволяет оптимизировать затраты в зависимости от моделей использования таблицы. Выбор между этими классами зависит от конкретных потребностей вашего приложения и шаблонов доступа к вашим данным.
Какие факторы следует учитывать при выборе класса таблицы?
При выборе класса таблиц в DynamoDB следует учитывать несколько факторов. Чаще всего следует учитывать модели доступа к данным, соображения стоимости и предсказуемость рабочей нагрузки. Вы можете переключаться между классами таблиц без написания кода или простоев, поэтому можно настроить свой выбор в случае изменения потребностей с течением времени.
Как таблицы DynamoDB стандарт – редкий доступ работают с имеющимися возможностями DynamoDB?
Таблицы DynamoDB стандарт – редкий доступ идеально сочетаются с существующими функциями DynamoDB. Они применяют те же API, что и обычные таблицы DynamoDB, поэтому их можно использовать с существующими приложениями без изменения кода. Они поддерживают глобальные таблицы для многорегиональной репликации, восстановления на момент времени (PITR), резервного копирования по требованию, шифрования при хранении с помощью AWS Key Management Service (KMS), DynamoDB Streams, Time To Live для автоматического удаления элементов и транзакционных операций чтения и записи. Таблицы стандарт – редкий доступ совместимы с ускорителем DynamoDB (DAX).
Как DynamoDB хранит данные?
Amazon DynamoDB хранит данные в разделах. Раздел – это выделение хранилища для таблицы, поддерживаемое твердотельными накопителями (SSD) и автоматически реплицируемое в нескольких зонах доступности в регионе AWS. Управление разделами полностью осуществляется DynamoDB – вам не придется управлять ими самостоятельно.
Каков максимально допустимый размер элемента в DynamoDB?
Максимальный размер элемента, который можно сохранить в таблице DynamoDB, составляет 400 КБ. Нет предопределенных ограничений по хранению.
Может ли DynamoDB хранить бинарное хранилище больших объектов (BLOB)?
Да. DynamoDB может хранить BLOB, однако обычно оно не подходит для хранения документов или изображений. Лучше всего хранить указатели на объекты Amazon S3 в таблице DynamoDB.
Как долго данные хранятся в DynamoDB?
По умолчанию для данных, хранящихся в таблице Amazon DynamoDB, не установлено время истечения срока действия или удаления. Данные останутся в таблице на неопределенный срок, если только пользователь не удалит их явно или с помощью Time to Live (TTL), если TTL включено.
Сколько элементов можно хранить в DynamoDB?
Нет предопределенного ограничения на количество элементов, которые можно хранить в таблице DynamoDB. DynamoDB масштабируется до сотен ТБ и более данных по любому количеству элементов.
Можно ли хранить изображения в DynamoDB?
Хотя технически возможно хранить изображения в DynamoDB в виде двоичных данных (в кодировке base64), существуют некоторые ограничения и недостатки, связанные с ограничением размера элемента в 400 КБ. Вместо хранения изображений непосредственно в DynamoDB лучше делать это в Amazon S3 (Simple Storage Service), а затем сохранять URL-адрес или ключ объекта S3 в DynamoDB.
Можно ли хранить списки в DynamoDB?
Чтобы сохранить список в DynamoDB, необходимо использовать один из типов данных списка DynamoDB – список или набор. При записи элементов в таблицу значение этого атрибута может представлять собой массив или набор скалярных (необъектных) типов данных, таких как строки, числа и т. д. DynamoDB автоматически выполнит сериализацию данных списка и сохранит их таким образом, чтобы осталась структура списка. Затем можно запросить атрибут таблицы, чтобы получить полный список. Добавление, обновление или удаление элементов из списка работает так же, как и обычная операция записи.
Может ли DynamoDB хранить карту?
Да. DynamoDB поддерживает хранение карт в качестве атрибутивного типа данных.
Безопасность и контроль
Поддерживает ли Amazon DynamoDB разрешения AWS для управления идентификацией и доступом (IAM)?
Да. DynamoDB поддерживает разрешения IAM. Разрешения IAM можно определить в политиках на основе идентификаций, ресурсов или других политиках AWS для управления доступом к ресурсам DynamoDB. Политики IAM можно привязывать к пользователям, группам, ролям, таблицам и потокам DynamoDB и управлять ими по своему усмотрению.
Вопрос. Что такое AWS PrivateLink для Amazon DynamoDB?
С помощью AWS PrivateLink можно упростить подключение к частной сети между виртуальными частными облаками (VPC), DynamoDB и локальными центрами обработки данных, используя адреса интерфейса VPC и частные IP-адреса. С помощью PrivateLink доступ к таблицам DynamoDB возможен через частное соединение, а запросы не покидают сеть Amazon. Это повышает безопасность, поскольку трафик проходит через любые сетевые шлюзы, а доступ можно контролировать с помощью политик и групп безопасности IAM. PrivateLink полезен для приложений, которые предъявляют требования к безопасности данных и требуют низких задержек. Сервис также обеспечивает доступ к таблицам DynamoDB из гибридных сред, охватывающих локальные сети и AWS.
Поддерживает ли DynamoDB политики на основе ресурсов?
Да. DynamoDB поддерживает ресурсные политики для таблиц и потоков. Ресурсные политики для каждой таблицы также охватывают права доступа к индексам таблицы (глобальные и локальные вторичные индексы). С помощью политик, основанных на ресурсах, клиенты могут детально определять разрешения на доступ к таблицам DynamoDB и другим ресурсам без необходимости предоставлять полный доступ на уровне аккаунта AWS. Эти политики позволяют клиентам контролировать, какие пользователи, специалисты и федеративные пользователи могут выполнять такие действия, как чтение, запись или удаление определенных таблиц, индексов и потоков DynamoDB. Политики на основе ресурсов прикрепляются к каждому ресурсу DynamoDB и управляются ими.
Политики на основе ресурсов поддерживают интеграцию с функциями Анализатор доступа AWS Identity and Access Management (IAM) и Блокирование публичного доступа (BPA). Анализатор доступа IAM помогает клиентам уточнить разрешения и соблюдать минимальные привилегии. BPA помогает клиентам предотвратить публичный доступ к таблицам, индексам и потокам DynamoDB. Эта функция всегда включена в DynamoDB.
Поддерживает ли DynamoDB контроль доступа на основе атрибутов для авторизации на основе тегов?
DynamoDB поддерживает управление доступом на основе атрибутов, которое обычно доступно для таблиц и индексов DynamoDB.
Можно ли использовать Amazon DynamoDB в Amazon Virtual Private Cloud (Amazon VPC)?
Да. Amazon DynamoDB можно использовать с адресами VPC. DynamoDB поддерживает два типа адресов VPC: адреса шлюзов и использование AWS PrivateLink. Используя адрес шлюза, вы можете получить доступ к DynamoDB из VPC без использования интернет-шлюза или устройства NAT для VPC. Однако адреса шлюза не допускают доступа из локальных сетей, из одноранговых VPC в других регионах AWS или через транзитный шлюз. Для таких сценариев необходимо использовать сервис AWS PrivateLink, который доступен за дополнительную плату.
Что представляет собой полный контроль доступа DynamoDB?
Полный контроль доступом (FGAC) предоставляет владельцу таблицы DynamoDB детальный контроль над данными в таблице с помощью политик и условий IAM. FGAC позволяет владельцу предоставлять разрешения на доступ к элементам или атрибутам таблицы и связанным с ними действиям. Функция FGAC работает совместно с сервисом AWS IAM, управляющим правами доступа и связанными разрешениями.
Выполняет ли Amazon DynamoDB шифрование данных в движении и хранении?
Да. Все пользовательские данные в Amazon DynamoDB полностью зашифрованы при передаче и хранении.
Как Amazon DynamoDB шифрует данные в движении?
Протокол HTTPS используется для защиты сетевого трафика с помощью шифрования Secure Sockets Layer.
Как Amazon DynamoDB шифрует данные в местах хранения?
При шифровании данных DynamoDB в состоянии покоя используются ключи шифрования, хранящиеся в Сервисе управления ключами AWS (AWS KMS). Данные в состоянии покоя шифруются с использованием AES-256, золотого стандарта, требующего высочайшего уровня безопасности.
Какие типы ключей доступны для шифрования данных DynamoDB в местах хранения?
Для шифрования данных в местах хранения доступны следующие типы ключей:
1. Ключи, принадлежащие AWS: они полностью управляются AWS и используются по умолчанию, если не указан другой вариант. Они бесплатны в использовании и не требуют дополнительной настройки.
2. Управляемые ключи AWS: это клиентские мастер-ключи (CMK), хранящиеся в AWS KMS, которые AWS создает, контролирует и использует от имени клиента. Они предоставляют дополнительные возможности контроля и аудита по сравнению с ключами, принадлежащими AWS.
3. Ключи, управляемые клиентом: это ключи CMK, которые вы создаете, которыми владеете и управляете в AWS KMS. Они обеспечивают высочайший уровень контроля над ключами шифрования, включая возможность создавать, поворачивать, отключать и определять средства управления доступом.
Каждый из этих типов ключей обеспечивает различный баланс удобства, контроля и стоимости. Ключи, принадлежащие AWS, проще всего использовать, в то время как ключи, управляемые клиентом, обеспечивают наибольший контроль, но требуют больших затрат на управление.
Как шифрование в хранилище помогает защитить данные?
Шифрование в состоянии покоя помогает защитить данные, шифруя файлы, содержащие конфиденциальную информацию, пока они неактивны. Когда данные хранятся в зашифрованном виде, неавторизованные лица не могут получить доступ к текстовому содержимому, даже если могут получить физический доступ к устройствам, на которых хранятся данные. Это обеспечивает дополнительный уровень защиты данных, помимо контроля доступа, и обеспечивает конфиденциальность информации даже в случае потери или кражи физического устройства.
Поддерживает ли DynamoDB ведение журнала аудита изменений на уровне элементов в таблицах?
Да. DynamoDB поддерживает ведение журнала аудита изменений на уровне элементов в таблицах. DynamoDB интегрировано с сервисом AWS CloudTrail, который обеспечивает запись действий пользователя, роли или сервиса AWS в DynamoDB на уровне элементов. Дополнительные собранные данные журнала включают создание, обновление, удаление и любые ошибки условной проверки. Клиенты могут получить доступ к этим записям журнала, хранящимся в журналах CloudWatch, и создавать приложения для анализа изменений на уровне элементов в целях аудита, мониторинга и т. д. Ведение журнала аудита позволяет детально отслеживать изменения данных, не влияя на нормальную производительность чтения и записи таблицы DynamoDB.
Можно ли использовать Amazon DynamoDB с приложениями, для которых необходимо соответствие требованиям HIPAA?
Да. Вы можете использовать Amazon DynamoDB для создания приложений, соответствующих требованиям HIPAA, и хранения информации, связанной со здравоохранением, включая защищенную медицинскую информацию, на основании заключенного с AWS соглашения о деловом сотрудничестве (Business Associate Agreement, BAA).
Какие виды сертификации соответствия поддерживаются сервисом Amazon DynamoDB?
DynamoDB отвечает множеству сертификатов соответствия, в том числе требованиям HIPAA, FedRAMP, ISO 27001, SOC 1/SSAE 16/ISAE 3402 (ранее – SAS 70) и SOC 2. Дополнительные сведения см. в разделе Проверка соответствия по отраслям для DynamoDB. Отчеты по соответствию AWS требованиям можно загрузить в AWS Artifact.
Высокая доступность и репликация
Вопрос. Что такое глобальные таблицы DynamoDB?
Глобальные таблицы Amazon DynamoDB – это полностью управляемая бессерверная многорегиональная и мультиактивная база данных. Глобальные таблицы обеспечивают доступность на уровне 99,999 %, повышенную отказоустойчивость приложений и устойчивость бизнеса. Поскольку они автоматически реплицируют таблицы Amazon DynamoDB в заданные регионы AWS, вы можете достичь высокой производительности локального чтения и записи. Глобальные таблицы используют те же API, что и таблицы DynamoDB в отдельных регионах, поэтому вы можете легко сделать свои таблицы DynamoDB глобально доступными без изменений в приложении.
Вопрос. Что дает использование глобальных таблиц?
Для повышения отказоустойчивости приложения в нескольких регионах следует использовать глобальные таблицы. Глобальные таблицы также позволяют приложениям поддерживать высокую доступность в маловероятном случае изоляции или низкой производительности региона.
В чем разница между версиями глобальных таблиц?
Доступны две версии глобальных таблиц DynamoDB: версия 2019.11.21 (текущая) и версия 2017.11.29 (устаревшая). Клиентам следует использовать версию 2019.11.21 (текущую) для всех новых глобальных таблиц, поскольку она более эффективна и потребляет меньше ресурсов записи. Всем, кто использует версию 2017.11.29 (устаревшую), следует обновить свои глобальные таблицы до версии 2019.11.21 (текущей).
Как обновить глобальные таблицы до версии 2019.11.21 (текущей)?
Обновить версию глобальной таблицы можно всего несколькими щелчками мыши в Консоли управления AWS. Обновление с версии 2017.11.29 (устаревшей) до версии 2019.11.21 (текущей) является одноразовым действием и не может быть отменено. Перед обновлением убедитесь, что вы изучили различия в работе разных версий и провели все необходимое тестирование. Дополнительные сведения см. в разделе Обновление глобальных таблиц с версии 2017.11.29 (устаревшей) до версии 2019.11.21 (текущей).
Поддерживают ли глобальные таблицы DynamoDB автоматическое переключение при отказе в случае недоступности региона?
В глобальных таблицах DynamoDB используется многоактивная репликация между регионами, при этом все таблицы-реплики во всех регионах глобальной таблицы поддерживают трафик чтения и записи. Глобальная таблица не имеет основного региона, поэтому при перенаправлении трафика чтения и записи в другой регион не требуется аварийное переключение базы данных. В том маловероятном случае, если регион AWS окажется изолированным или будет предоставлять низкую производительность, ваше приложение может просто читать и записывать данные из таблицы-реплики в незатронутом регионе. Дополнительные сведения см. в разделе Рекомендации по проектированию глобальных таблиц DynamoDB.
Обработка данных
Поддерживает ли Amazon DynamoDB сбор измененных данных?
Да. Amazon поддерживает сбор данных об изменениях (CDC). В DynamoDB CDC реализовано с использованием потоковой модели, которая позволяет приложениям фиксировать изменения на уровне элементов в таблице DynamoDB практически в реальном времени в виде потока записей данных. Поток записей данных CDC позволяет приложениям эффективно обрабатывать изменения данных в таблице DynamoDB и реагировать на них. DynamoDB предлагает две потоковые модели для CDC: потоки Amazon DynamoDB и потоки данных Amazon Kinesis для DynamoDB. Чтобы помочь вам выбрать подходящее решение для своего приложения, ознакомьтесь с вариантами потоковой передачи данных для сбора измененных данных.
Что такое потоки DynamoDB и что с ними можно сделать?
Поток DynamoDB – это упорядоченный поток информации об изменениях элементов в таблице DynamoDB. Поток DynamoDB фиксирует дедуплицированную и упорядоченную по времени последовательность изменений на уровне элементов в любой таблице и сохраняет эту информацию в журнале (до 24 часов). Поток DynamoDB автоматически масштабирует ресурсы, избавляя вас от необходимости распределять и контролировать их. В зависимости от потока конфигурации DynamoDB можно просматривать элементы данных в том виде, в каком они выглядели до и после изменения. Можно создавать приложения, которые используют эти потоковые события и запускают рабочие процессы на основе содержимого потока событий.
Потоки DynamoDB полезны, когда вы хотите реагировать на изменения данных с помощью триггеров, используя встроенную интеграцию с AWS Lambda, отслеживать и анализировать взаимодействие с клиентами или отслеживать производительность приложений практически в реальном времени, фиксировать упорядоченные последовательности событий и повышать отказоустойчивость приложений за счет репликации транзакционных данных на уровне элементов.
Что такое потоки данных Kinesis для DynamoDB и что с ним можно сделать?
Потоки данных Kinesis собирают данные об изменениях на уровне объекта во всех таблицах DynamoDB и реплицируют их в выбранный поток данных Kinesis. Ваши приложения могут получать доступ к этому потоку и просматривать изменения на уровне элементов практически в реальном времени. Потоки данных Amazon Kinesis позволяют создавать собственные приложения для обработки или анализа потоковых данных при решении узкоспециальных задач. В отличие от потоков DynamoDB потоки данных Kinesis для DynamoDB не обеспечивают упорядочивание записей и гарантии дедупликации. Упорядочение записей и дедупликация должны быть реализованы клиентскими приложениями с использованием поля ApproximateCreationDateTime в записи на уровне элемента.
Потоки данных Kinesis для DynamoDB полезны, если вам нужна интеграция с более широкой экосистемой Kinesis (например, с клиентской библиотека Kinesis, Управляемым сервисом Amazon для Apache Flink или Amazon Data Firehose), более длительное хранение и воспроизводимость данных (до 365 дней), а также настраиваемое управление сегментом для последующего потребления и потоковой аналитики.
Какая информация включена в поток?
Когда в таблице DynamoDB включен поток DynamoDB или поток данных Kinesis, таблица отправляет запись данных, в которой фиксируются любые изменения данных этой таблицы. Эта запись данных включает конкретное время, когда какой-либо элемент был недавно создан, обновлен или удален, первичный ключ этого элемента, изображение объекта до и после модификации.
Как использовать поток DynamoDB или поток данных Kinesis?
Включить или отключить потоки в существующей таблице DynamoDB можно с помощью Консоли управления AWS, AWS SDK, интерфейса командной строки AWS (AWS CLI) или клиентской библиотеки Kinesis (KCL).
Когда следует использовать поток DynamoDB и поток данных Kinesis?
Выберите потоки DynamoDB, если вам необходимо отслеживать изменения в таблице DynamoDB. Выберите потоки данных Kinesis Data для удовлетворения более широких потребностей в потоковой передаче, более высоких требований к пропускной способности или в тех случаях, когда вам нужны более длительные сроки хранения данных.
Что такое время жизни (TTL) DynamoDB и что с этим можно сделать?
Функция TTL Amazon DynamoDB автоматически удаляет из таблицы элементы с истекшим сроком действия, которые больше не актуальны, тем самым сокращая использование хранилища и снижая затраты. С помощью TTL можно указать временную метку для каждого элемента, чтобы определить, когда элемент больше не нужен, а DynamoDB автоматически удалит элемент из таблицы, не расходуя пропускную способность записи. Каждый раз, когда элемент создается или обновляется, вы можете рассчитать срок годности и сохранить его в атрибуте TTL. Функция TTL полезна, если вы храните предметы, которые теряют актуальность по истечении определенного времени.
Какие функциональные возможности запросов поддерживает DynamoDB?
DynamoDB поддерживает операции GET / PUT с использованием заданного пользователем первичного ключа. Первичный ключ – единственный обязательный атрибут объекта в таблице. Первичный ключ устанавливается при создании таблицы и является уникальным идентификатором каждого объекта. DynamoDB предлагает гибкие возможности работы с запросами: дополнительно можно запрашивать атрибуты по ключам, не являющимся первичными, с помощью глобальных и локальных вторичных индексов.
Первичный ключ может быть либо простым ключом секции (из одного атрибута), либо составным (из ключа секции и ключа сортировки). Пример ключа секции, состоящего из одного атрибута, – UserID. Такой простой ключ секции позволит быстро выполнять чтение и запись данных для элемента, связанного с конкретным ID пользователя.
Составной ключ секции и сортировки индексируется в DynamoDB по элементу ключа секции и элементу ключа сортировки. Этот сложный ключ поддерживает иерархию между первым и вторым значением элемента. Например, составной ключ секции и сортировки может представлять собой комбинацию UserID (секция) и Timestamp (сортировка). Поддерживая значение элемента ключа секции постоянным, можно выполнять поиск по элементу ключа сортировки для извлечения определенных данных. Такой поиск позволит использовать Query API, например для извлечения всех объектов для одного UserID в определенном диапазоне временных меток.
Каким образом выполняется обновление и запрос элементов данных в DynamoDB?
После создания таблицы с помощью консоли DynamoDB или API CreateTable для вставки элементов можно использовать API PutItem или BatchWriteItem. Для извлечения элементов, добавленных в таблицу, можно использовать такие API, как GetItem и BatchGetItem, а также API Query, если в таблице включены и используются составные первичные ключи.
DynamoDB можно использовать с приложениями, работающими под управлением любых операционных систем?
Да. DynamoDB – это полностью управляемый облачный сервис, доступ к которому осуществляется через API. DynamoDB можно использовать с приложениями, работающими под управлением любых операционных систем, включая Linux, Windows, iOS, Android, Solaris, AIX и HP‑UX. Для начала работы с DynamoDB рекомендуется использовать пакеты AWS SDK.
Получите мгновенный доступ к уровню бесплатного пользования AWS.
Начните разработку с помощью Amazon DynamoDB в Консоли управления AWS.