Chúng tôi có một cơ sở dữ liệu cấp doanh nghiệp quy mô rất lớn. Là một phần trong mô hình kinh doanh của chúng tôi, tất cả người dùng web truy cập vào các máy chủ web của chúng tôi cùng một lúc mỗi tháng, điều này sẽ làm hỏng hộp sql của chúng tôi. Lưu lượng truy cập rất nặng và tiếp tục phát triển nặng hơn, công ty càng phát triển. tối ưu hóa sql Proc đã được thực hiện và phần cứng đã được mở rộng đến mức rất cao.
Chúng tôi đang tìm cách bảo vệ cơ sở dữ liệu ngay bây giờ để đảm bảo rằng chúng tôi có thể xử lý sự tăng trưởng của công ty và tải trong tương lai.
Chúng tôi đã quyết định những dữ liệu cụ thể nên được loại bỏ. Nó là một tập hợp con của cơ sở dữ liệu của chúng tôi được sử dụng nhiều.
Tuy nhiên, câu hỏi của tôi liên quan đến dữ liệu không phân đoạn là phổ biến / phổ biến. Ví dụ về dữ liệu như thế này có thể là bảng Inventory chẳng hạn hoặc có thể là bảng Nhân viên, bảng người dùng, v.v.
Tôi thấy hai tùy chọn để xử lý dữ liệu phổ biến / phổ biến này:
1) thiết kế 1 - Đặt dữ liệu chung / phổ biến vào cơ sở dữ liệu bên ngoài. Tất cả các bài viết sẽ xảy ra ở đây. Dữ liệu này sau đó sẽ được sao chép xuống từng phân đoạn cho phép mỗi phân đoạn đọc dữ liệu này và tham gia bên trong vào dữ liệu này trong các procs t-sql.
2) thiết kế 2 - Cung cấp cho mỗi phân đoạn bản sao riêng của tất cả dữ liệu chung / phổ biến. Để mỗi phân đoạn ghi cục bộ vào các bảng này và sử dụng bản sao hợp nhất sql để cập nhật / đồng bộ dữ liệu này trên tất cả các phân đoạn khác.
mối quan tâm về thiết kế # 1
1) Các vấn đề về giao dịch: Nếu bạn gặp phải tình huống phải viết hoặc cập nhật dữ liệu trong phân đoạn và sau đó viết / cập nhật bảng chung / phổ biến trong 1 Proc được lưu trữ, bạn sẽ không còn có thể thực hiện việc này một cách dễ dàng. Bây giờ dữ liệu tồn tại trên các trường hợp và cơ sở dữ liệu sql riêng biệt. Bạn có thể cần liên quan đến MS DTS để xem liệu bạn có thể gói các ghi này vào một giao dịch hay không vì chúng nằm trong một cơ sở dữ liệu riêng biệt. Hiệu suất là một mối quan tâm ở đây và có thể viết lại có thể liên quan đến các procs ghi vào dữ liệu phổ biến và phổ biến.
2) mất tính toàn vẹn tham chiếu. Không thể làm toàn vẹn cơ sở dữ liệu tham chiếu chéo.
3) Mã hóa lại các khu vực rộng lớn của hệ thống để nó biết ghi dữ liệu chung vào cơ sở dữ liệu phổ quát mới nhưng đọc dữ liệu chung từ các phân đoạn.
4). tăng chuyến đi cơ sở dữ liệu. Giống như số 1 ở trên, khi bạn gặp phải tình huống phải cập nhật dữ liệu bị phân tách và dữ liệu chung, bạn sẽ thực hiện nhiều chuyến đi khứ hồi để thực hiện việc này vì dữ liệu hiện nằm trong cơ sở dữ liệu riêng biệt. Một số độ trễ mạng ở đây nhưng tôi không lo lắng về vấn đề này nhiều như 3 trên.
mối quan tâm về thiết kế # 2
Trong thiết kế # 2, mỗi phân đoạn sẽ có phiên bản riêng của tất cả dữ liệu chung / phổ biến. Điều này có nghĩa là tất cả các mã tham gia hoặc cập nhật dữ liệu chung tiếp tục hoạt động / chạy giống như hiện nay. Có rất ít mã hóa / viết lại cần thiết từ nhóm phát triển. Tuy nhiên, thiết kế này hoàn toàn phụ thuộc vào sao chép hợp nhất để giữ dữ liệu đồng bộ trên tất cả các phân đoạn. các dbas có tay nghề cao và rất lo ngại rằng sao chép hợp nhất có thể không thể xử lý việc này và nên hợp nhất sao chép thất bại, sự phục hồi từ thất bại này là không lớn và có thể tác động rất xấu đến chúng tôi.
Tôi tò mò muốn biết nếu có ai đã đi với tùy chọn thiết kế # 2. Tôi cũng tò mò muốn biết liệu tôi đang xem xét tùy chọn thiết kế thứ 3 hay thứ 4 mà tôi không thấy.
cảm ơn bạn trước