Nigdy nie pracowałem z partycjonowaniem SQL Server, ale obecnie mam do czynienia z projektowaniem bazy danych, dla której woluminy prawdopodobnie to uzasadniają. System przeznaczony jest na kupony. Kupony będą wydawane okresowo, zwykle co sześć tygodni, chociaż będzie również wydawana ad hoc - np. Na specjalne wydarzenie. Istnieje 15 milionów klientów, a na każde wydarzenie wydawania każdy klient otrzyma 6 różnych rodzajów kuponów, co daje łącznie 90 milionów wystąpień kuponów. Musimy śledzić dane dotyczące wykorzystania instancji kuponu i utrzymywać je przez 6 miesięcy, chociaż zazwyczaj kupon jest ważny tylko przez sześć tygodni. Wszelkie żądania wykorzystania nieprawidłowego kuponu nie dotrą do bazy danych, ponieważ zostaną zatwierdzone przez POS do.
Przez okres sześciu miesięcy będziemy musieli przechowywać do 360 milionów wierszy w tabeli wystąpienia kuponu i do 72 milionów (przy założeniu maks. 20% stopy wykupu) w tabeli wykupu. Mam wrażenie, że te liczby są za duże na jedną partycję?
Moje pytanie brzmi - co użyć jako klucza partycji? Jednym oczywistym kandydatem byłby wydawca, który dałby około 6 partycji. Ale potem myślę, że może nawet to dałoby zbyt duży rozmiar partycji, aby umożliwić optymalną wydajność? Czy byłoby możliwe podzielenie według dwóch kluczy, np. Według zdarzenia wydania + ostatniej cyfry identyfikatora klienta? Logika wyglądałaby następująco:
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...
Nie jestem też pewien, jakiej specyfikacji serwera bazy danych będziemy potrzebować. Czy 16GB i 8CPU wystarczą? Db musi być w stanie zwrócić wynik z tabeli instancji kuponu, wpisany na numerycznej wartości kodu kreskowego w mniej niż pół sekundy. Oczekuje się, że oczekiwane żądanie transakcji dotyczące weryfikacji (wyboru) i wykorzystania (wstawienia) osiągnie szczyt około 3500 na minutę.
64-bitowy serwer db SQL Server 2008r2 będzie udostępniany jako VM z bardzo wydajnego hosta z dostępem do wysokiej wydajności i dużej pojemności sieci SAN.
Byłbym bardzo wdzięczny za wszelkie porady od tych, którzy wdrożyli rozwiązanie SQL Server do zarządzania podobnymi woluminami.
pozdrowienia
Obrabować.