2010-07-22 32 views
5

Tôi đang tìm kiếm một cơ sở dữ liệu SQL thuộc một số loại hoàn toàn dựa trên khái niệm về thời gian, giống như các trung tâm địa lý, mối quan hệ trung tâm, v.v.Có cơ sở dữ liệu SQL có thể khôi phục kịp thời không?

Mong muốn chính của tôi là tôi có thể thực hiện thay đổi vào cơ sở dữ liệu như tôi đi cùng, và sau đó tại bất kỳ điểm nào chạy một truy vấn về cơ bản nói, chỉ cho tôi cách cơ sở dữ liệu xem xét ngày và giờ này. Tôi thích cơ sở dữ liệu SQL có chức năng này được xây dựng trong, thay vì phải thực hiện lại nó bằng cách sử dụng bảng đăng nhập và ghi lại từng giao dịch.

Tôi có hy vọng cho một giấc mơ về ống không?

Cảm ơn!

EDIT: Sau một số nghiên cứu tiếp theo, có vẻ như là "temporal database" có thể là những gì tôi đang tìm kiếm. Vì vậy, bất kỳ thông tin nào về việc sử dụng một trong những thứ đó, nếu có bất kỳ mã nguồn mở nào có sẵn, v.v., sẽ rất hữu ích!

+0

Tôi tin rằng vì mục đích của tôi nó sẽ là tốt để giả định rằng cấu trúc của cơ sở dữ liệu sẽ không thay đổi. Tuy nhiên, dữ liệu sẽ thay đổi. –

+1

Câu hỏi của bạn, sau đó, gây nhầm lẫn vấn đề. Bạn cần xác định lược đồ cơ sở dữ liệu của mình để xử lý thực tế là dữ liệu của bạn chỉ hợp lệ trong một khoảng thời gian nhất định bằng cách chèn các bản ghi chỉ định các khoảng thời gian đó. Cách câu hỏi được viết đã làm cho một số người dưới đây tự hỏi nếu bạn muốn làm các truy vấn về siêu dữ liệu (cơ sở dữ liệu trông như thế nào trước khi tôi chạy câu lệnh DELETE này?). Giải pháp này là một cái gì đó bạn cần để có được xung quanh bởi thiết kế giản đồ tốt, không có một tạp chí đặc biệt hoặc sử dụng một số công cụ phục hồi lịch sử. –

+0

OK, cảm ơn thông tin. Bất kỳ liên kết nào bạn có thể cung cấp có thể chỉ cho tôi đúng hướng hoặc cung cấp một số thông tin về thiết kế lược đồ tốt để sử dụng trong trường hợp này sẽ hữu ích. –

Trả lời

5

Oracle có Flashback. Gần nhất tôi có thể nghĩ đến trên SQL Server requires snapshots, mà không cần phải khôi phục từ nhật ký giao dịch (yêu cầu mô hình khôi phục đầy đủ).

+0

Tôi đang tìm một cái gì đó đối xử với điều này giống như một "tính năng", không phải là một công cụ phục hồi. Sau khi đọc về thời gian của DB, đó có vẻ là vé. Về cơ bản bạn có thể truy vấn cơ sở dữ liệu và nói "ngay bây giờ, bạn nghĩ gì về X", nhưng bạn cũng có thể nói "tính theo thời gian Y, bạn nghĩ gì về X?", Ngay cả khi các giá trị (trong DB điển hình) đã bị ghi đè rồi. –

+0

@Riley Dutton: Flashback của Oracle là gần nhất tôi biết sau đó. Những gì bạn yêu cầu thường là miền đăng nhập giao dịch ... –

+3

Đó chính là cách hoạt động của flashback của Oracle. SELECT * TỪ my_table H OF TRỢ TIMESTAMP '2010-01-01' (hoặc một cú pháp tương tự) Bạn thậm chí có thể đặt toàn bộ giao dịch thành một điểm trong quá khứ và sau đó tất cả các truy vấn sẽ trả lại giá trị từ lúc đó. Để đi một chặng đường dài thực sự, bạn sẽ cần Oracle 11g và nó là "Flashback Archive" mà là khá tốn kém mặc dù. –

1

Bạn có thể muốn xem TimeDB.

Lưu ý, tuy nhiên, bạn có thể tự làm chính xác điều này bằng cách triển khai cột ValidTimeBegin và ValidTimeEnd trong bảng và điền chúng tương ứng. Công cụ này chỉ cần lấy các câu lệnh SQL đặc biệt của nó và chuyển đổi chúng thành các câu lệnh tuân thủ SQL92.

0

Điều bạn đang tìm kiếm nhà sử học phần mềm. Đây là những cơ sở dữ liệu nơi tất cả dữ liệu được tổ chức theo thời gian, thực sự là chức năng cốt lõi của chúng. Một khi sử dụng của nhà sử học phần mềm, là để kích hoạt chức năng phát lại, nơi dữ liệu chuỗi thời gian có thể được phát lại theo thứ tự nó được nhập vào, thường là quan trọng trong những ngành đòi hỏi nó, như ứng dụng thời gian thực trong tài chính, khí , dầu và các tiện ích điện.

Một số công ty cung cấp các nhà sử học phần mềm, là

Wonderware FactoryTalk OSI PI

+1

Tôi đã làm việc với PI Historian (trong nhiều năm). Nó là tuyệt vời tại chụp lịch sử, nhưng nó không thực sự là một cơ sở dữ liệu temoporal. Một cơ sở dữ liệu thời gian cho phép cập nhật hàng loạt của quá khứ sao cho bạn có hai bản sao của quá khứ, một bản trước khi cập nhật và một bản cập nhật sau. Như vậy, bạn có thể chọn "sự thật" hiện tại hoặc "sự thật như đã biết trên ngày X". PI chỉ lưu trữ (một cách rất nén) một giá trị chân lý cho quá khứ, do đó, nó không thực sự là một cơ sở dữ liệu thời gian, nó là nhiều hơn một cơ sở dữ liệu chuỗi thời gian. –

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