2010-04-27 23 views
12

Tôi đã đọc tất cả các câu hỏi SO, bài viết Kinh dị mã hóa và Google đã cố gắng tìm kiếm các cách tốt nhất để sửa đổi dữ liệu kiểm soát. Tất cả đều hoạt động và tất cả đều có cách triển khai thích hợp dựa trên các trường hợp sử dụng, v.v. Điều tôi thực sự muốn biết là tại sao cơ sở dữ liệu không được viết để hỗ trợ sửa đổi một cách nguyên bản trên cấp dữ liệu?Toàn bộ cơ sở dữ liệu được sửa đổi ở đâu?

Điều tôi thấy bối rối là API đã được thực tế tại chỗ với các giao dịch. Chúng tôi bắt đầu một giao dịch, thay đổi một số dữ liệu và cam kết. Chúng tôi đang xác thực đối với cơ sở dữ liệu quá nên đổ lỗi là hiện tại. Công ty của tôi lưu trữ các phiên bản cuối tháng của toàn bộ cơ sở dữ liệu của chúng tôi cho các mục đích kế toán tương đương với các thẻ. Điều này không hét lên RCS?

Phân nhánh là thứ mà cơ sở dữ liệu có thể hưởng lợi từ rất nhiều so với lược đồ nhiều hơn dữ liệu. Vì tôi thực sự chỉ quan tâm đến dữ liệu và điều này sẽ làm tăng độ khó thực hiện bởi một mức độ lớn, tôi sẽ chỉ gắn thẻ và cam kết.

Bây giờ tôi biết rằng cơ sở dữ liệu là ứng dụng cực kỳ quan trọng về thời gian, vì vậy mọi chi phí không cần thiết đều bị bỏ quên và một số cơ sở dữ liệu có mức sử thi khổng lồ và sửa đổi sẽ chỉ đạt được kích thước đó. Một bảng, kiểm soát sửa đổi lựa chọn chắc chắn có một nơi trong môi trường quy mô vừa và nhỏ, nơi có mili giây để phụ tùng và lịch sử dữ liệu có một mức độ quan trọng. Tôi muốn cam kết, tôi muốn các bản ghi, tôi muốn trở lại, tôi muốn diffs, tôi muốn đổ lỗi, tôi muốn thẻ, và tôi muốn checkouts. Tôi muốn kiểm soát sửa đổi MF-ing.

Tôi có một câu hỏi trong một nơi nào đó ...

Trả lời

3

Một giải pháp có nguồn gốc là của Oracle Flashback Database (aka Total Recall). Đó là một khoản phí bổ sung cho phiên bản Enterprise, nhưng nó là khá mát mẻ. Nó lưu trữ một cách minh bạch các phiên bản của dữ liệu miễn là chúng tôi muốn giữ lại nó và cung cấp cú pháp để truy vấn các phiên bản cũ của dữ liệu. Nó có thể được kích hoạt trên cơ sở từng bảng.

Về cơ bản Flashback DB giống như sử dụng trình kích hoạt để lưu trữ bản ghi trong bảng theo dõi, nhưng khéo léo, hiệu suất và vô hình để hoạt động bình thường.

0

Bạn quên Tôi muốn thực hiện. DBMS là một cơ chế lưu trữ dữ liệu ở mức độ khá thấp và trong các hệ thống có hàng tỷ hàng, hiệu suất có thể rất quan trọng. Vì vậy, nếu bạn muốn loại hệ thống kiểm toán này, bạn có thể tự xây dựng nó bằng cách sử dụng các công cụ có sẵn cho bạn (ví dụ: trình kích hoạt).

Cũng giống như trong hệ thống tệp, không phải tất cả các tệp đều thích hợp để kiểm soát phiên bản, trong cơ sở dữ liệu không phải tất cả các hàng sẽ thích hợp để kiểm soát phiên bản.

+0

Tôi đã thực hiện các tuyến đường kích hoạt đó là okay và hoàn toàn trong ứng dụng logic và cả hai đều chắc chắn làm việc nhưng tôi chỉ không biết tại sao không ai trong số này tồn tại. Tôi muốn thấy một bản sửa đổi bao gồm các thay đổi cho nhiều hơn một hàng và thậm chí nhiều hơn một bảng, tuy nhiên. Và như tôi đã nói điều này sẽ phải là một lựa chọn tham gia và mỗi bảng vì hiệu suất luôn quan trọng. Tôi đoán vì điều này không thể được thực hiện trên một triển khai lớn một cách hiệu quả là lý do tại sao nó chưa bao giờ được triển khai trong các DB chính thống. Tuy nhiên, một số trang web và ứng dụng chuyên dụng hơn, nhỏ hơn của tôi sẽ có lợi. –

3

Bạn có thể đọc khoảng temporal databases.

Trong "Temporal Data & the Relational Model" theo ngày, Darwen và Lorentzos, tác giả giới thiệu một sixth normal form để giải thích các vấn đề trong việc theo dõi dữ liệu thời gian.

Richard Snodgrass đề xuất TSQL2 làm phần mở rộng cho SQL để xử lý dữ liệu thời gian.

Triển khai bao gồm:

+0

Tôi ngạc nhiên vì tôi chưa bao giờ nghe nói về điều này nhưng có vẻ rất hứa hẹn về những gì tôi đã hình dung trong đầu của tôi từ một đọc nhanh của bài viết Wikipedia. Tôi không tìm kiếm bất kỳ sản phẩm nào sẵn sàng, chỉ cần một cái gì đó để hack xung quanh. –

+0

Wow - vì vậy TSQL2 là một đứa trẻ của những năm 90. Ngày trước wikipedia. Tôi nghĩ rằng nó cần phải được đánh thức cos đất cho những hạt giống của những ý tưởng là một chút màu mỡ hơn những ngày này. –

1

Một số DBMS triển khai cơ chế phiên bản cấp công cụ. Thật không may là không có tiêu chuẩn độc lập cho nhà cung cấp vì vậy chúng đều là độc quyền. Oracle flashback đã được đề cập. Tính năng Change Data Capture của Microsoft trong SQL Server là một tính năng khác.

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