Tôi chưa bao giờ làm việc với phân vùng SQL Server nhưng hiện tại tôi phải đối mặt với việc thiết kế cơ sở dữ liệu mà khối lượng có thể đảm bảo. Hệ thống này là dành cho phiếu giảm giá. Các phiếu giảm giá sẽ được phát hành định kỳ, thường là sáu tuần một lần mặc dù cũng sẽ có đợt phát hành đột xuất - ví dụ cho một sự kiện đặc biệt. Có 15 triệu khách hàng và cho mỗi sự kiện phát hành, mỗi khách hàng sẽ nhận được 6 loại phiếu giảm giá khác nhau, với tổng số 90 triệu trường hợp phiếu giảm giá. Chúng tôi cần theo dõi dữ liệu mua lại ví dụ phiếu giảm giá và duy trì dữ liệu này trong 6 tháng, mặc dù thông thường, phiếu giảm giá chỉ có hiệu lực trong sáu tuần. Bất kỳ yêu cầu mua lại cho một phiếu giảm giá không hợp lệ sẽ không đến được cơ sở dữ liệu bởi vì nó sẽ được xác nhận bởi POS cho đến khi.
Trong thời hạn sáu tháng, chúng tôi sẽ cần lưu trữ 360 triệu hàng trong bảng Coupon Instance và tối đa 72 triệu (giả sử tỷ lệ mua lại tối đa 20%) trong bảng Mua lại. Tôi có cảm giác rằng những con số này quá lớn cho một phân vùng?
Câu hỏi của tôi là - dùng cái gì làm chìa khóa phân vùng? Một ứng cử viên rõ ràng sẽ là sự kiện phát hành, đưa ra khoảng 6 phân vùng. Nhưng sau đó tôi nghĩ rằng có lẽ điều đó sẽ cho kích thước phân vùng quá lớn để cho phép hiệu suất tối ưu? Có thể phân vùng theo hai khóa, ví dụ như bằng sự kiện phát hành + chữ số cuối của id khách hàng? Vì vậy, logic sẽ là:
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...
Ngoài ra, tôi không chắc chắn về thông số kỹ thuật của máy chủ cơ sở dữ liệu mà chúng tôi sẽ cần. 16gb và 8CPU sẽ là đủ? Db cần phải có thể trả về một kết quả từ bảng đối tượng phiếu giảm giá, được khóa trên một giá trị mã vạch số trong chưa đầy nửa giây. Yêu cầu giao dịch dự kiến để xác thực (chọn) và đổi (chèn) dự kiến sẽ đạt đỉnh ở mức khoảng 3.500 mỗi phút.
Máy chủ db SQL Server 2008r2 64 bit sẽ được cung cấp dưới dạng VM từ một máy chủ rất mạnh có quyền truy cập vào SAN hiệu suất cao và dung lượng lớn.
Tôi rất biết ơn về bất kỳ lời khuyên nào từ những người đã triển khai giải pháp SQL Server để quản lý các khối lượng tương tự.
Trân trọng
Cướp.