DynamoDB моделирование реляционных данных (пример меню ресторана) - PullRequest
0 голосов
/ 12 марта 2019

Я создаю веб-платформу на AWS, чтобы владельцы ресторанов в моем сообществе могли создавать меню. Я перехожу от модели реляционной базы данных к решению NoSQL и задаюсь вопросом, как лучше организовать эти данные. Моя текущая реляционная модель выглядит следующим образом:

Table 'restaurants': id (int / primary key), name, owner (int)
Table 'categories': id (int / primary key), restaurant (int), parent (int)
Table 'items': id (primary key), name, category (int)

Только владельцу разрешено создавать / обновлять / удалять места, категории и предметы.

Что бы вы посоветовали в качестве ненормализованного решения с учетом ограничений собственности? Я думал сделать следующее:

Table 'restaurants': id (primary key), owner (sort key), categories (list of ids)
Table 'categories':  id (primary key), restaurant (id), items (list of item objects), subcategories (list of category ids)

Хотите знать, было бы лучше, чтобы все данные категории содержались в таблице ресторана? Например, пользователь должен иметь возможность добавлять элемент в категорию только в том случае, если он является владельцем соответствующего ресторана, который может выполнить дополнительный запрос, как указано выше.

1 Ответ

1 голос
/ 12 марта 2019

Зависит в основном от того, как вы используете ваши данные. Если обычно Ресторан переполнен, то все в порядке, если все в таблице ресторанов.

Если у вас много операций только в одной категории, например, многие заинтересованы только в еде и не заинтересованы в напитках, то было бы хорошо, чтобы это было сделано в категориях.

Я думаю, что для некоторых ресторанов было бы лучше разделить их по категориям и хранить общие данные об уровне ресторана, адресе, телефоне, часах работы и так далее.

Не думаю, что писать важно, кажется, более 90% читают веб-сайт. 0

Возможно, решение для кеша? Redis? Memcache? это ускорит еще больше.

...