Есть товары с названием и ценой.
Пользователи регистрируют продукты, которые они купили.
# option 1: embed logs
product = { id, name, price }
user = { id,
name,
logs : [{ product_id_1, quantity, datetime, comment },
{ product_id_2, quantity, datetime, comment },
... ,
{ product_id_n, quantity, datetime, comment }]
}
Мне это нравится.Но если идентификаторы продукта имеют длину 12 байт, количество и дата-время составляют 32-разрядные (4 байта) целые числа и комментарии в среднем составляют 100 байт, тогда размер одного журнала составляет 12 + 4 + 4 + 100 = 120 байт.Максимальный размер документа составляет 4 МБ, поэтому максимальное количество журналов на пользователя составляет 4 МБ / 120 байт = 33 333.Если предположить, что пользователь регистрирует 10 покупок в день, то ограничение в 4 МБ достигается за 33 333/10 = 3333 дня ~ 9 лет.Что ж, 9 лет - это, наверное, хорошо, но что если нам нужно будет хранить еще больше данных?Что делать, если пользователь регистрирует 100 покупок в день?
Какой еще вариант здесь?Должен ли я полностью нормализовать это?
# option 2: normalized
product = { id, name, price }
log = { id, user_id, product_id, quantity, datetime, comment }
user = { id, name }
Мех.Мы вернулись к реляционному.