Если это действительно единственные шаблоны доступа, вы, вероятно, можете что-то сделать с помощью простого GSI. Я бы не использовал Building в качестве PartitionKey
, потому что это даст вам много горячих точек в данных. Что-то вроде этого, вероятно, будет работать:
PartitionKey SortKey GSI_PartitionKey GSI_SortKey Attributes
Building#1 'Location' [...]
Wing#1 'Location' 'Location' Building#1 . [...]
Floor#1 'Location' 'Location' Building#1|Wing#A [...]
.
.
.
Computer#1 'Computer' 'Computer' B#1|W#A|F#1|S#A|O#1 [...]
Computer#2 'Computer' 'Computer' B#1|W#A|F#1|S#B|O#1 [...]
.
.
.
Значения SortKey
здесь более необязательны, но они, как правило, позволяют вносить изменения позже без особой работы сейчас.
Чтобы получить все местоположения в здании, которое вы запрашиваете в GSI, где GSI_PartitionKey
- это «Местоположение», а GSI_SortKey
начинается с вашего идентификатора здания. Вы можете добавить дополнительные местоположения в строку, чтобы получить все местоположения в крыле A, начинающиеся с Building#1|Wing#A|
Получить указанное c местоположение, используя PartitionKey
(и, необязательно, SortKey
= 'Местоположение').
Чтобы получить все компьютеры в GSI местоположений, где GSI_PartitionKey
- это "Компьютер", а GSI_SortKey
начинается с вашего идентификатора местоположения.
Получить укажите c компьютер, используя PartitionKey
(и, необязательно, SortKey
= 'Компьютер'), атрибуты должны включать его местоположение.