В настоящее время мы разрабатываем таблицу Dynamodb для хранения определенных атрибутов файла. Есть 2 основных столбца
- Дата: - содержит дату в формате ГГММДД, например: -20190618.
- Имя файла: - xxxxxxxxxxx.json
В настоящее время ключом раздела является дата, а ключом сортировки - имя файла. Мы ожидаем около 500000 файлов с разными именами каждый день (со временем это число может увеличиваться). Имена файлов будут повторяться каждый день одинаково, т.е. типичная схема показана ниже.
Дата Имя файла 20190617 abcd.json 20190618 abcd.json
У нас есть серия запросов, основанная на дате и триггере Dynamodb. Запросы работают отлично. В настоящее время мы наблюдаем, что количество одновременных выполнений лямбда-выражения ограничено до 2, поскольку мы разбиваем по дате. Пытаясь улучшить параллелизм лямбда-выражения, мы нашли 2 решения.
1) Ссылаясь на следующую ссылку (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-sharding.html), одна идея - добавить фиксированное количество случайных суффиксов для поля даты, то есть (с 20190617.1 по 20190617.500) в разделите данные на 500 разделов по 1000 записей в каждом. Это обеспечит определенный уровень параллелизма, а также минимальные изменения в запросе.
2) Второй вариант - изменить разделение таблицы следующим образом: ключ раздела: - имя файла и ключ сортировки: - дата. В результате получится около 500000 разделов (которые могут увеличиваться). Для запроса по дате нам нужно будет добавить GSI, но мы добьемся большего параллелизма в Lambda.
мы не создали таблицу с 500000 разделов (которые могут увеличиваться). У любого человека есть такой опыт ... Если да, то прокомментируйте
Любая помощь приветствуется