2008-08-21 43 views
9

Tôi đang dẫn đầu một dự án nơi chúng tôi sẽ ghi lại dữ liệu chỉ số. Tôi muốn giữ lại dữ liệu trong nhiều năm. Tuy nhiên, tôi cũng muốn giữ cho bảng chính trở nên cồng kềnh với dữ liệu, trong khi cần thiết cho xu hướng dài hạn, không bắt buộc đối với báo cáo ngắn hạn.Chiến lược tốt nhất cho việc lưu giữ các tập dữ liệu lớn là gì?

Chiến lược tốt nhất để xử lý tình huống này là gì? Chỉ cần lưu trữ dữ liệu cũ sang một bảng khác? Hoặc "cuộn nó lên" thông qua một số hợp nhất của dữ liệu chính nó (và sau đó lưu trữ nó ra một bảng khác nhau)? Hoặc cái gì khác hoàn toàn?

Thông tin thêm: chúng ta đang sử dụng SQL Server 2005.

Trả lời

4

Chúng tôi sử dụng cả hai phương pháp tại nơi làm việc, nhưng hơi khác, chúng tôi lưu giữ tất cả dữ liệu bán hàng trong bảng chính trong 30 ngày, sau đó vào ban đêm (một phần công việc hàng đêm). của x sản phẩm được bán ngày hôm nay ect) trong một bảng riêng biệt vì lý do báo cáo và doanh số trên 30 ngày được lưu trữ vào cơ sở dữ liệu khác, sau đó mỗi năm một lần (chúng tôi đi vào năm thuế). không hoàn toàn chính xác nhưng ..

theo cách này, chúng tôi nhận được dữ liệu tóm tắt nhanh, giữ tất cả dữ liệu bán hàng hiện tại trong tầm tay và có không gian không giới hạn cho dữ liệu lưu trữ chi tiết. chúng tôi đã cố gắng giữ tất cả trong một cơ sở dữ liệu (trong các bảng khác nhau) nhưng kích thước tệp của cơ sở dữ liệu (cơ sở dữ liệu) sẽ phát triển quá lớn đến nỗi nó sẽ kéo hệ thống xuống.

vấn đề thực sự duy nhất chúng tôi có được truy cập vào dữ liệu chi tiết kéo dài nhiều cơ sở dữ liệu, như kết nối và ngắt kết nối chậm, và phân tích đã được thực hiện trong mã chứ không phải là sql

1

Một trong những tùy chọn là tuyệt vời, nhưng nó thực sự phụ thuộc vào lĩnh vực vấn đề. Đối với những thứ như số dư tiền mặt hoặc dữ liệu thống kê, tôi nghĩ rằng việc lập hồ sơ và hợp nhất chúng là cách tốt nhất, sau đó bạn có thể di chuyển các bản ghi đã cuộn lên bảng lưu trữ song song, khóa chúng theo cách sao cho bạn có thể "hủy đăng ký" cần thiết. Điều này giúp cho bảng dữ liệu chính của bạn luôn sạch sẽ và nhanh chóng, nhưng cho phép bạn giữ lại dữ liệu bổ sung để kiểm tra hoặc bất kỳ điều gì. Câu hỏi quan trọng là, làm cách nào để bạn triển khai quy trình "cuộn lên". Hoặc là tự động, thông qua quá trình kích hoạt hoặc phía máy chủ hoặc do sự can thiệp của người dùng ở cấp ứng dụng?

4

Nếu bạn đang sử dụng SQL server 2005, đây có thể là một ứng cử viên tốt cho việc sử dụng partitioned tables.

2

@ Jason - Tôi không thấy cách giữ dữ liệu trong các tệp văn bản thuần tuý cũ sẽ cho phép bạn phân tích xu hướng dài hạn dễ dàng trên dữ liệu.

@ Jason - Tôi đoán quan điểm của tôi là nếu bất kỳ phân tích ad-hoc nào (tức là xu hướng) cần được thực hiện trên dữ liệu của người kinh doanh, hãy cuộn lên hoặc lưu trữ dữ liệu vào tệp văn bản thực sự không giải quyết được có vấn đề gì không. Tất nhiên viết mã để tiêu thụ một tập tin văn bản rất dễ dàng trong nhiều ngôn ngữ, nhưng vấn đề đó đã được giải quyết. Ngoài ra, tôi sẽ cho rằng RDBMS ngày nay là tất cả cực kỳ bền vững khi thiết lập và duy trì đúng cách. Nếu họ không lý do tại sao bạn sẽ chạy một doanh nghiệp trên đầu trang của một (cho phép một mình lưu trữ dữ liệu vào nó)? Tôi chỉ không nhìn thấy điểm lưu trữ vào một tập tin văn bản đơn giản vì tuyên bố rằng độ bền của các tập tin văn bản là cao hơn so với các cơ sở dữ liệu.

2

Tùy thuộc vào các ràng buộc như ngân sách, v.v., âm thanh này giống như một ứng cử viên hoàn hảo cho ứng dụng kho dữ liệu. Điều này thường sẽ giới thiệu một máy chủ mới để sử dụng như một kho dữ liệu. SQL Server 2005 hỗ trợ rất nhiều hoạt động này ngoài hộp, hơn nữa bạn có thể sử dụng các dịch vụ SQL Server bổ sung (ví dụ: Dịch vụ phân tích, Dịch vụ báo cáo) để cung cấp giá trị bổ sung cho người dùng của bạn. (xem http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)

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