Учебники

DynamoDB — Таблица активности

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

Потоки захватывают упорядоченные по времени последовательности, содержащие модификации элементов в таблице. Они хранят эти данные максимум 24 часа. Приложения используют их для просмотра оригинальных и измененных элементов практически в реальном времени.

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

Потоки несут две гарантии —

  • Каждая запись появляется один раз в потоке и

  • Каждая модификация элемента приводит к тому, что записи потока того же порядка, что и модификации.

Каждая запись появляется один раз в потоке и

Каждая модификация элемента приводит к тому, что записи потока того же порядка, что и модификации.

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

Управление потоками

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

Используйте консоль управления AWS для простого управления потоками. Сначала перейдите к консоли и выберите « Таблицы» . На вкладке Обзор выберите Управление потоком . Внутри окна выберите информацию, добавляемую в поток при модификации данных таблицы. После ввода всех настроек выберите Включить .

Если вы хотите отключить любые существующие потоки, выберите « Управление потоком» , а затем « Отключить» .

Вы также можете использовать API CreateTable и UpdateTable для включения или изменения потока. Используйте параметр StreamSpecification для настройки потока. StreamEnabled указывает состояние, означающее true для включенного и false для отключенного.

StreamViewType указывает информацию, добавляемую в поток: KEYS_ONLY, NEW_IMAGE, OLD_IMAGE и NEW_AND_OLD_IMAGES.

Потоковое чтение

Чтение и обработка потоков путем подключения к конечной точке и выполнения запросов API. Каждый поток состоит из записей потока, и каждая запись существует как отдельная модификация, которой принадлежит поток. Потоковые записи включают порядковый номер, раскрывающий порядок публикации. Записи принадлежат группам, также известным как осколки. Осколки функционируют как контейнеры для нескольких записей, а также содержат информацию, необходимую для доступа и просмотра записей. Через 24 часа записи автоматически удаляются.

Эти осколки создаются и удаляются по мере необходимости и не длятся долго. Они также автоматически делятся на несколько новых сегментов, обычно в ответ на всплески активности при записи. При отключении потока откройте открытые осколки. Иерархическая связь между шардами означает, что приложения должны определять приоритеты родительских шардов для правильного порядка обработки. Вы можете использовать Kinesis Adapter, чтобы автоматически сделать это.

Примечание . Операции, не приводящие к изменениям, не записывают потоковые записи.

Доступ и обработка записей требует выполнения следующих задач —

  • Определите ARN целевого потока.
  • Определите осколки потока, содержащего целевые записи.
  • Получите доступ к осколку (ам), чтобы получить нужные записи.

Примечание. Должно быть не более 2 процессов, читающих шард одновременно. Если он превышает 2 процесса, то он может задушить источник.

Доступные действия потокового API включают

  • ListStreams
  • DescribeStream
  • GetShardIterator
  • GetRecords

Вы можете просмотреть следующий пример чтения потока —