Как лучше всего выполнить запрос только по первичному ключу раздела, для таблицы, которая имеет и ключ раздела, и ключ сортировки? - PullRequest
0 голосов
/ 10 января 2019

Хорошо, у меня есть таблица с первичным ключом раздела (идентификатор сотрудника) и ключом сортировки (идентификатор объекта). Теперь я хочу получить список всех проектов, над которыми работает сотрудник. Также я хочу список всех сотрудников, работающих над проектом. Отношения много ко многим. Я создал схему в AppSync (GraphQL). Appsync создал необходимые запросы и мутации для типа (EmployeeProjects). Теперь ListEmployeeProjects принимает входные данные фильтра с различными атрибутами. Мой вопрос: когда я выполняю два поиска только по идентификатору сотрудника или по идентификатору проекта, будет ли это полное сканирование таблицы? Насколько это будет эффективно? Если это сканирование таблицы, могу ли я уменьшить сложность времени путем создания индексов (GSI или LSI). Конечный продукт будет иметь огромное количество данных, поэтому я не могу протестировать приложение с такими данными заранее. Мой проект работает нормально, но я беспокоюсь о проблемах, которые могут возникнуть позже с большим количеством данных. Может кто-нибудь, пожалуйста, помогите.

1 Ответ

0 голосов
/ 10 января 2019

Вам не нужно (и не следует) выполнять сканирование для этого.

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

Чтобы привлечь всех сотрудников к проекту, вы должны создать GSI на столе. Ключом раздела должен быть идентификатор проекта, а ключом сортировки - идентификатор сотрудника. Затем выполните запрос к GSI, используя ключ раздела идентификатора проекта.

Для правильного моделирования вам, вероятно, понадобятся три таблицы

  1. Таблица сотрудников
  2. Таблица проекта
  3. Справочная таблица Employee-Project (т. Е. Только два атрибута идентификатора сотрудника и идентификатора проекта)
...