2012-06-29 29 views
14

Bối cảnh:Xuất bản/Theo dõi mô hình trong SQL

Chúng tôi có một bảng lớn (15+ triệu) các mặt hàng được cập nhật thường xuyên trong suốt cả ngày (trung bình 300K thay đổi hàng ngày). Các thay đổi đang chờ xử lý được lưu trữ trong bảng dàn dựng và công việc chạy suốt cả ngày để đọc các thay đổi từ bảng này, thực hiện cập nhật và đánh dấu các thay đổi là đã xử lý.

Nhiều ứng dụng khác sử dụng dữ liệu trong bảng mục để thực hiện các tác vụ khác nhau. Thông thường, các tác vụ này được lên lịch và chuyên sâu, vì chúng liên quan đến việc so sánh dữ liệu trực tiếp với ảnh chụp nhanh cũ và cập nhật các hệ thống khác tương ứng. Ví dụ: chúng tôi liệt kê các mục trên eBay và so sánh dữ liệu mục trực tiếp với danh sách hiện có của chúng tôi để xem liệu chúng tôi có cần chèn bất kỳ danh sách eBay mới nào hay không, xóa các mặt hàng chúng tôi đã bán, cập nhật số lượng, v.v. của các ứng dụng này thường xuyên chạy, khiến mọi thứ lỗi thời nhiều.

Câu hỏi của tôi:

Chúng tôi đang xem xét thực hiện một mô hình nhà xuất bản/thuê bao sử dụng dịch vụ môi giới. Mục đích là để xuất bản một thông báo khi một mục thay đổi, mà các hệ thống khác nhau (như ứng dụng eBay của chúng tôi) có thể đăng ký. Điều này sẽ cho phép chúng tôi cập nhật chi tiết hơn gần hơn với các bản cập nhật thời gian thực, thay vì lớn và không thường xuyên liên quan đến truy vấn tất cả dữ liệu, không chỉ những gì đã thay đổi. Tuy nhiên, sau khi sử dụng Google nó không có vẻ như thế này là một mẫu cơ sở dữ liệu phổ biến, và làm tăng cờ đỏ. Đây có phải là việc sử dụng không hợp lệ của Nhà môi giới dịch vụ hay không (mặc dù tôi đã tìm thấy một phần nhỏ trong Nhà môi giới dịch vụ Pro Sql Server 2008 khi thực hiện Pub/Sub)? Vấn đề này thường được giải quyết như thế nào? Nó có vẻ như là một vấn đề đủ phổ biến.

TL; DR:

Mục tiêu: Cập nhật hệ thống khác nhau trong một năng động, lỏng lẻo cách khi mục đơn thay đổi.

Câu hỏi: Giải pháp kiểu quán rượu/phụ được triển khai với Nhà môi giới dịch vụ là giải pháp khả thi trong cài đặt âm lượng cao?

+0

Hai câu hỏi: tại sao các ứng dụng đó sử dụng dữ liệu trong bảng mục chính thay vì xử lý các thay đổi đang chờ xử lý trong bảng dàn xếp? Thứ hai: bạn có hoàn toàn cần SQL Server để giữ và xuất bản các mục không? –

+1

Hãy xem xét bản sao SQL được tích hợp sẵn, nó đủ linh hoạt để chứa một loạt các kịch bản. – alexm

+0

@KubaWyrostek là suy nghĩ đầu tiên của chúng tôi, và điều đã khiến chúng tôi xem xét cách tiếp cận dựa trên thông điệp. Thay vì đọc từ bảng đó thường xuyên như vậy, tại sao không sử dụng nó như một nguồn thông điệp 'Item Changed'. Có thể là một lớp trừu tượng không cần thiết, nhưng khi bảng phân tầng bị xóa theo định kỳ các bản cập nhật đã xử lý, ý tưởng an toàn nhất và linh hoạt nhất sẽ là Nhà môi giới dịch vụ – Bort

Trả lời

0

Nó không phải là một mẫu cơ sở dữ liệu phổ biến vì hầu hết các cơ sở dữ liệu quan hệ được trang bị không tốt để làm điều đó ngoài hộp. Sql Server cũng sẽ được nếu nó không có môi giới dịch vụ.

Một trong những nhà phát triển dịch vụ môi giới talks about how Service Broker handles the challenges that most companies turn to NoSQL solutions for.

Đó là sự hiểu biết của tôi rằng dịch vụ môi giới có nghĩa là để thực hiện chính xác những gì bạn đang tìm kiếm. Nó thậm chí có thể sử dụng External Activation đến run custom applications when the data has changed.

+0

Nói một cách trực quan: Nhà môi giới dịch vụ sẽ cung cấp nhiều chi phí cho vấn đề tương đối đơn giản này so với truy vấn đơn giản trên một chỉ số thay đổi theo thời gian, được nhóm lại. Ngay cả một cách nhân rộng (như alexm gợi ý) có vẻ là một giải pháp tốt hơn. Các công cụ phổ quát hơn, IMHO hình phạt hiệu suất lớn hơn. –

2

Đây là rất phổ biến mẫu tích hợp.

Tôi không quen thuộc với Nhà cung cấp dịch vụ SQL Server nhưng nếu bạn nhìn vào bất kỳ ngăn xếp trung gian tích hợp nào - TIBCO, Oracle, webMethods, Mule, Informatica, v.v. - tất cả đều cung cấp "bộ điều hợp cơ sở dữ liệu".

Mẫu chung là các bản cập nhật trong cơ sở dữ liệu kích hoạt xuất bản thư. Điều này được thực hiện thông qua một kích hoạt trong bảng cơ sở dữ liệu hoặc thông qua bộ điều hợp "bỏ phiếu" bảng để cập nhật mới. Hoặc là phương pháp có ưu và khuyết điểm.

Lợi ích chính của mẫu này là (như bạn nghi ngờ) cập nhật thường xuyên và kịp thời cho các hệ thống khác - một cách "kinh doanh" theo thời gian thực hơn.Ngoài ra, nếu bạn thực hiện chuyển đổi sang định dạng thông điệp chuẩn thì bạn sẽ bị ghép nối lỏng hơn giữa các hệ thống và do đó ít đau hơn khi systms cần phải được thay đổi/cập nhật.

0

Thông thường các loại vấn đề này sẽ trở nên lớn hơn (trong phạm vi) so với những gì một cơ sở dữ liệu tập trung pub/phụ thực hiện có thể cung cấp. Nếu tôi có thể đưa ra đề xuất xem xét sử dụng một chiếc xe buýt phục vụ toàn diện:

nServiceBus (Miễn phí lên đến một kích thước nhất định, khá rẻ quá khứ mà)

Bạn nhận được một khuôn khổ pub/sub rắn, nhưng dễ dàng để làm việc cùng và có cơ sở người dùng lớn, các bài viết và mẫu.

Các vấn đề liên quan