Мне нужно спроектировать базу данных для клиентов, имеющих цены на миллионы материалов, которые они приобретают у нескольких поставщиков в течение следующих 24 месяцев. Таким образом, база данных будет хранить цены ежедневно для каждого материала, поставляемого указанным поставщиком c в течение следующих 24 месяцев. Поэтому мы сохраняем прошлые данные. Теперь поиск будет выполняться по:
- Найти цену на материал поставщиком на указанную клиентом дату c.
- Найти цену на материал по поставщик на определенный период времени клиентом.
Я могу представить первичный ключ как:
- Ключ раздела: (идентификатор клиента, идентификатор материала, идентификатор поставщика, дата ) - не приведет ли это к проблемам перфорации, так как это приведет к созданию большого количества разделов в долгосрочной перспективе?
- Ключ раздела: (идентификатор клиента, идентификатор материала, идентификатор поставщика, monthbucket), ключ кластеризации: date - monthbucket будет хранить данные для материала ежемесячно в том же разделе и будет иметь значение, например «202002» для дат февраля 2020 г.
Другой вопрос заключается в том, как обеспечить равномерное распределение моих данных по узлам.
Примечание:
- комбинация клиента, материала, поставщика и даты уникальна.
- два клиента могут иметь одинаковые идентификаторы материалов.
Ключевые моменты: 1. Некоторые клиенты могут иметь AV очень маленький набор данных, в то время как другие могут иметь огромные данные. Насколько хорошо мы можем равномерно распределять данные по разделам, так как Дата является постоянным полем для всех клиентов. Кроме того, идентификаторы материалов могут быть одинаковыми для разных клиентов, поскольку существует внутреннее представление (возможно, цифра c или alphanumeri c)
Количество поставщиков на одного клиента и номер материала варьируется от 1 до 20 в количестве. У вас есть предложения или вопросы?
Спасибо.