Я ніколи не працював з розбиттям SQL Server, але наразі стикався з розробкою бази даних, для якої томи, ймовірно, це вимагає. Система призначена для купонів. Купони видаватимуться періодично, як правило, кожні шість тижнів, хоча також буде спеціальна видача - наприклад, на спеціальний захід. Нараховується 15 мільйонів клієнтів, і за кожну подію видачі кожен клієнт отримає 6 різних типів купонів, надаючи в цілому 90 мільйонів екземплярів купонів. Нам потрібно відстежувати дані про викуп примірника купона та зберігати їх протягом 6 місяців, хоча зазвичай купон діє лише шість тижнів. Будь-який запит на викуп недійсного купона не надійде до бази даних, оскільки він буде підтверджений POS до.
Протягом шести місяців нам потрібно буде зберігати 360 мільйонів рядків у таблиці купових екземплярів і до 72 мільйонів (якщо вважати максимальну ставку викупу 20%) в таблиці викупу. У мене таке відчуття, що ці цифри занадто великі для одного розділу?
Моє запитання - що використовувати як ключ розділу? Одним із очевидних кандидатів буде подія видачі, давши приблизно 6 розділів. Але тоді я думаю, що, можливо, навіть це дало б розмір розділу, який є занадто великим, щоб забезпечити оптимальну продуктивність? Чи можна було б розділити два ключі, наприклад, подія видачі + остання цифра ідентифікатора клієнта? Тож логікою було б:
If issuance event = 1 and last digit of customer id < 5 then
Store in partition 1
Else if issuance event = 1 and last digit of customer id >4 then
Store in partition 2
Else if issuance event =2 and last digit of customer id <5 then
Store in partition 3
Else if issuance event =2 and last digit of customer id >4 then
Store in partition 4
Etc...
Крім того, я не впевнений у специфікації сервера баз даних, яка нам знадобиться. Чи вистачить 16gb та 8CPU? ДБ повинен мати можливість повернути результат з таблиці примірника купона, введеного на числове значення штрих-коду менше ніж за півсекунди. Очікуваний запит на транзакцію для підтвердження (вибору) та викупу (вставки) очікується, що він досягне приблизно 3500 за хвилину.
64-бітовий db-сервер SQL Server 2008r2 буде розглядатися як VM від дуже потужного хоста з доступом до високопродуктивної та великої ємності SAN.
Буду дуже вдячний за будь-які поради тих, хто розгорнув рішення SQL Server для управління подібними обсягами.
З повагою
Роб.