I в настоящее время разрабатываю портал B2B с использованием Laravel (Backend) и планирование наилучшего возможного дизайна базы данных для обработки публичных продуктов с конкретными пользователями цен. (Покупатели). < /li>
[*] Каждый пользователь имеет доступ ко всем публичным продуктам, но у каждого пользователя есть уникальная цена для каждого продукта. Не на основе зоны, на основе компании или на основе группы.
Обратите внимание: [/b] по зоне или по ценам в компании уже реализовано отдельно. Этот вопрос строго относится к конкретному пользователю цены.
Код: Выделить всё
user_id | product_id | price
< /code>
[b] приведет к 1000 × 3000 = 3 миллиона строк. This raises several problems:[/b]
[*]Performance concerns when querying per-user product listings
[*]Slower inserts/updates
[*]High storage consumption
[*] Сложность в масштабировании по мере увеличения количества пользователей и продуктов
[b] Моя альтернативная идея дизайна: < /strong>
Вместо хранения одной строки на комбинацию пользователя продукта я рассматривал такой дизайн: < /p>
Таблица: public_product_prices
id | user_id | product_ids (массив или json) | Цены (массив или json) < /p>
< /li>
< /ul>
Каждая строка будет содержать все идентификаторы продукта и соответствующие цены для этого пользователя. Цена в позиции N будет соответствовать идентификатору продукта в позиции n. < /P>
Когда пользователь входит в систему, система будет: < /p>
Fetch the public_product_prices row where user_id = current_user
Match each product ID to its price by using the array index
< /code>
Это уменьшает количество строк до одного пользователя, а не миллионы. Операции массива и JSON являются
limited.
< /ul>
Я открыт для использования Postgresql, только если нет лучшего варианта, но я бы предпочел бы избежать переключения, если это возможно, из -за существующего
producture. Для пользователя: < /p>
В этой модели я бы обнаружил индекс массива для идентификатора продукта и
обновлять только соответствующее значение в массиве цен. Индексация не является простой.
Будет ли эта конструкция значительно замедлить операции чтения по мере роста данных?When a new user registers, how should I initialize their pricing data?
Copying the array structure from another user or a template could work, but what is the best practice for bulk initializing product-price mappings for new users?
If the number of product IDs and prices becomes mismatched in an array or JSON, it could lead to incorrect pricing being shown.
Is there a recommended way to enforce consistency between these two arrays, or should I move to a safer structure?
< /code>
Что я ищу: < /strong> < /p>
Разрешается ли дизайн хранения массивов продуктов или json
/> Структура безопасно, быстрая и обслуживаемая? Системы.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/795 ... without-cr