Структурирование большой таблицы DynamoDB со многими атрибутами поиска?
Я боролся с лучшим способом структурировать мой стол. Предполагалось иметь много-много ГБ данных (мне не дали более детальную оценку). Таблица будет представлять данные заявок ( пример здесь) с ключом раздела, являющимся resourceType, и ключом сортировки, являющимся идентификатором (хотя они могут быть потенциально изменены). Конечный пользователь должен иметь возможность выполнять поиск по ряду атрибутов (учреждение, поставщик, получатель и т. Д. На общую сумму ~15).
Я играл с объединением глобальных и локальных индексов, чтобы достичь этой функциональности на сервере. Каков наилучший способ структурировать таблицу, чтобы позволить пользователю искать данные по 1 или более из этих атрибутов по существу в любой комбинации?
1 ответ
Если вы используете resourceType
в качестве ключа раздела вы, по сути, отбрасываете функции горизонтального масштабирования, которые DynamoDB предоставляет из коробки.
Причиной разделения ваших данных является то, что вы распределяете их по многим узлам, чтобы иметь возможность масштабирования без снижения производительности.
Похоже, вы хотите поместить все документы претензий в один раздел, чтобы вы могли выполнять "поиск" по произвольным атрибутам.
Возможно, вам лучше было бы объединить вашу таблицу DynamoDB с чем-то вроде ElasticSearch для быстрого, произвольного поиска.
Помните, что DynamoDB может вместить только приблизительно 10 ГБ данных в одном разделе и что один раздел ограничен до 3000 операций чтения в секунду и до 1000 операций записи в секунду (чтение + 3 * записи <= 3000).
Наконец, вы можете рассмотреть возможность сохранения ваших документов с претензиями непосредственно в ElasticSearch.