AEM 6中的AEM平台以Apache Jackrabbit Oak為基礎。
Apache Jackrabbit Oak致力實作可擴充且效能優異的階層式內容存放庫,以作為現代世界級網站及其他苛刻內容應用程式的基礎。
它是Jackrabbit 2的後繼版本,由AEM 6用作其內容存放庫CRX的預設後端。
Oak實作JSR-283(JCR 2.0)規格。 其主要設計目標是:
儲存層的目的是:
Oak Core在儲存層中新增數層:
Oak JCR的主要目標是將JCR語義轉換為樹操作。 它還負責:
此外,現在也可實作非Java,且為Oak JCR概念的一部分。
Oak儲存層提供抽象層,用於實際儲存內容。
目前,AEM6提供兩種儲存實作:Tar Storage和MongoDB Storage。
Tar儲存使用tar檔案。 它會將內容儲存為較大區段內的各種記錄類型。 日記帳用於跟蹤儲存庫的最新狀態。
它圍繞以下幾個關鍵設計原則而構建:
內容儲存在大小最多可達256KiB的區段中。 它們不可變,因此可輕鬆快取經常存取的區段,並減少可能損壞儲存庫的系統錯誤。
每個區段都由唯一識別碼(UUID)識別,並包含內容樹狀結構的連續子集。 此外,區段可參考其他內容。 每個區段會保留其他參考區段的UUID清單。
節點及其直接子項等相關記錄通常儲存在相同的區段中。 這使得搜索儲存庫的速度非常快,並避免了每個會話訪問多個相關節點的典型客戶端的大多數快取丟失。
記錄的格式化被優化為大小,以降低IO成本,並盡可能適合快取中的內容。
MongoDB儲存利用MongoDB進行共用和群集。 儲存庫樹將保留在一個MongoDB資料庫中,其中每個節點都是單獨的文檔。
它有幾項特點:
對於內容的每次更新(提交),都會建立新修訂。 修訂基本上是字串,包含三個元素:
支援分支,可讓用戶端存放多項變更,並透過單一合併呼叫使其可見。
MongoDB儲存將資料添加到每次修改的文檔。 不過,它只會在明確觸發清除時刪除資料。 達到特定臨界值時,會移動舊資料。 先前的文檔僅包含不可修改的資料,這表示它們僅包含已提交和合併的修訂。
有關活動和非活動群集節點的資料被保留在資料庫中,以便於群集操作。
具有MongoDB儲存的典型AEM叢集設定:
由於Oak的設計要回溯相容於JCR 1.0標準,因此使用者層級幾乎不會有任何變更。 不過,在設定Oak型AEM安裝時,您需要考慮一些顯著差異:
如需AEM平台的詳細資訊,另請參閱下列文章: