2014-02-18 94 views
2

我與木蘭CMS這恰好使用JCR最近的工作。JCR基本概念

一個我必須面對的問題是JCR數據損壞,我發現我有如何解決的情況知之甚少。

我JCR的理解如下:

  1. JCR是一個規範,有幾種實現方式
  2. 賈卡拉比特是一個JCR實現
  3. 賈卡拉比特可以直接使用該文件系統或使用存儲的信息像MySQL
  4. 數據庫

現在我的問題是

  1. 如何備份和恢復JCR存儲庫?
  2. 有沒有可以用來檢查一個給定的JCR完整性和嘗試修復它任何特別的工具嗎?我一直在玩託羅米羅。
  3. 是否有信息/教程的任何特定的資源,我應該要讀獲得JCR技術的全面和正確的認識?

更新:

我有一些其他問題:

  1. 如果給定的JCR實現存儲數據庫的內容,我能想到的所有內容將被存儲在該數據庫或者可能發生某些內容(即圖像)會直接存儲在文件系統而不是數據庫中?
  2. 目前我們有由三個不同的Web服務器訪問的JCR回​​購,這是我的理解是,JCR規範認爲這種情況下,它保護了回購,以防止上的內容不一致因併發寫訪問。它是否正確?
  3. 具體而言,我們遇到的問題包括在具有包含到節點B的參考節點A,但節點B爲不可訪問,使用Groovy腳本後,我們成功地刪除節點B(這似乎是在不一致的狀態),但是,我們怎麼能找到所有對節點B的引用(可能不僅僅是節點A引用它,而且還有節點C)。到底該如何導致JCR回購變得腐敗?,順便說一句,我們也嘗試使用forceConsistencyCheck,autorepair和enableConsistencyCheck標誌,它沒有解決問題。

感謝

回答

2

你的JCR的理解是正確的:它是一個已經被多個項目(包括兔崽子,振形,露天,EXO等)實施了規範。事實上,JCR有很多版本(1.0,2.0和很快2.1),並不是所有的實現都支持所有的JCR版本。

(全面披露:我是創始人和振形鉛)

有備份JCR倉庫沒有標準,也沒有普遍的方式,但幾個實現提供自己的機制。例如,如果所有內容都存儲在DBMS中,則可以使用DBMS備份和還原功能。 Jackrabbit擁有自己的backup mechanism,與ModeShape一樣。

你正在做什麼樣的完整性檢查,以及Toromino如何做到這一點? JCR實現不應該允許保存違反定義的約束的任何內容(例如,具有屬性和子節點定義的節點類型定義),並且它們限制(不同程度地)這些節點定義可以如何改變。

我不知道任何出色的JCR書籍或在線資源,但看看Jackrabbit docsModeShape docs

+0

感謝您的支持,有沒有辦法強制所有的內容生活在數據庫管理系統?我還沒有和託羅米羅做完整的檢查,我只是用了一點點,希望能幫上忙。請看我更新的問題,並幫助我瞭解你的知識,非常感謝。 –

+0

存儲的內容取決於特定JCR實現的配置。 (ModeShape可以將所有內容存儲在關係數據庫中,我們建議索引不會因爲查詢變得太慢)。對Jackrabbit更熟悉的人將必須回答您的一致性檢查問題。 –