Я пытаюсь изучить DynamoDB только для дидактических целей, поэтому я предлагаю создать небольшой проект по продаже транспортных средств (автомобили, велосипеды, квадроциклы и т. Д.), Чтобы изучить и получить некоторый опыт работы с базами данных NoSQL. ,Я прочитал много документации о создании правильных моделей, но я все еще не могу найти лучший способ хранения моих данных.
Я хочу получить все транспортные средства фильтрами как:
- получить все автомобили не старше 3 месяцев.
- получить все автомобили не старше 3 месяцев по марке, году и модели.
- И так по тем же предыдущим запросам для велосипедов, квадроциклвелосипеды и т. д.
После прочтения официальной документации и других страниц с примерами (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-general-nosql-design.html#bp-general-nosql-design-approach, https://medium.com/swlh/data-modeling-in-aws-dynamodb-dcec6798e955, Отдельные таблицы и списки карт - DynamoDB ), они сказали, что лучшие проекты используют только одну таблицу для хранения всего, поэтому я получаю модель, подобную следующей ниже:
-------------------------------------------------------------------------------------
Partition key | Sort key | Specific attributes for each type of vehicle
-------------------------------------------------------------------------------------
cars | date#brand#year#model | {main attributes for the car}
bikes | date#brand#year#model | {main attributes for the bike}
-------------------------------------------------------------------------------------
Я использовал составной ключ сортировки, потому что они указывают, чтоХорошая практика для поиска данных (https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html).
Но после определения моей модели я получаю проблему, что у предыдущей модели возникла проблема под названием «Горячая точка» или «Ключ Hoy». (https://medium.com/expedia-group-tech/dynamodb-data-modeling-c4b02729ac08,https://dzone.com/articles/partitioning-behavior-of-dynamodb) потому что в официальном документеВо избежание этой проблемы рекомендуется использовать ключи разделов с высокой степенью кардинальности.
Итак, на данный момент я немного застрял в том, как определить хорошую и масштабируемую модель. Не могли бы вы предоставить мне некоторую помощь или примеры о том, как создать модель для получения запросов, упомянутых выше?
Примечание. Я также рассмотрел вопрос о создании конкретной таблицы для каждого транспортного средства, но это могло бы создать больше проблем, поскольку поиск информацииМне нужно выполнить полное сканирование таблицы.