Вам, вероятно, нужно сначала создать свою всеобъемлющую логику c вне DynamoDB, принять решение о том, работает бизнес или нет, и использовать только карьеры в Динамо для подмножества этих логи c.
Допустим, хотя мы используем DynamoDB для запросов в отношении нормального рабочего времени и не учитываем logi c, такие как праздники и особые случаи, вы можете использовать это для фильтрации после доступа к Dynamo. Вы не можете создать один запрос в «Динамо», чтобы ответить на все ваши вопросы, что больше похоже на то, что вы можете сделать в SQL.
Итак, допустим, у нас есть таблица / подмножество значений, которые относятся к нормальной работе день. Итак, у вас есть что-то вроде этого:
Ключ раздела (PK): business
, Ключ диапазона (RK): dayOfWeek
и атрибуты opens
& closes
.
Затем мы можем создать 2 GSI:
- PK
dayOfWeek
RK opens
- PK
dayOfWeek
RK closes
Теперь мы можем сделайте два запроса, если магазин открыт с 14:00 до понедельника:
- PK == ПОНЕДЕЛЬНИК & открывается <14:00 </li>
- PK == ПОНЕДЕЛЬНИК & закрывается> 16:00
И собирать только те значения, которые появляются в обоих запросах.
Очевидно, что иметь PK дня, вероятно, не очень хорошая идея, так как у вас будет только 7 разделов. Ну так что ты делаешь? Ну, у вас, вероятно, больше критериев в запросе, чем просто день, например, тип магазина, город, в котором он расположен, и т. Д. c. Это будет означать, что тогда у вас будет PK что-то вроде: city-category-dayOfWeek
.
Аналогично, на стороне сортировки вы могли бы хотеть, чтобы магазины с более высоким рейтингом были первым вариантом, поэтому у вас может быть что-то вроде: {rating}-{open}
& {rating}-{closes}
.
Вам просто нужно проявить творческий подход, сначала составьте макет всех запросов, которые у вас есть, прежде чем создавать таблицы. Мне очень нравится это видео о дизайне стола, это ужасно c.