2011-01-25 50 views
3

所以,我有一個跟蹤員工的Rails應用程序。我們希望隨時跟蹤就業歷史。我們希望能夠做到以下各種查詢:他們目前的狀態(工資,經理,職稱等) Rails數據庫記錄設計(就業)歷史

  • 搜索remployees的地位,作爲一個特定日期
    1. 搜索員工
    2. 搜索的員工誰比得上的條件

    我們不介意的歷史查詢是顯著慢,甚至可能2級慢幾個數量級。

    此歷史記錄與審計線索不同 - 審計線索是數據的歷史記錄,因此審計線索會告訴您「Y日期的員工X存儲了什麼薪水」,但它不會讓您糾正舊數據,如果它是錯誤的。

    [我們還利用用於審計的審計線索,但我認爲對審覈跟蹤作爲提供幾乎正交設計要求的邏輯的。]

    是否有最好的實現這種類型的已知的數據庫設計模式歷史?或者我可以找到討論各種「明顯」設計和權衡的網站?任何Rails插件?

    Rails 2.3.5與Ruby 1.8.7,如果有關係。

    回答

    1

    我還沒有使用它,但paper_trail聲稱支持這種類型的版本管理。它似乎很容易處理您的需求(1)和(2) - 不確定(3),您可能需要做一些繁重的工作才能獲得同時在各個模型和版本中搜索的查詢。

    這段歷史是從審計跟蹤

    這意味着你需要更改舊版本的能力不同 - 我懷疑是支持的,而且似乎有問題的實現,如果你還需要這起到審計線索的作用。

    +0

    是的,我不是在尋找一個審計線索(可以看作是系統中數據的敘述歷史),而是一個追蹤當前和過去「真實」值的工具。所以我想知道「2010年10月15日吉姆的薪水是多少?」不是,「2010年10月15日,Jim的薪水值存儲在數據庫中的價值是多少。」特別是,我希望能夠導入,輸入和更新過去時期的數據。 – 2011-01-31 16:14:13