Den AEM plattformen i AEM 6 bygger på Apache Jackrabbit Oak.
Apache Jackrabbit Oak satsar på att implementera en skalbar och prestandabaserad hierarkisk innehållsdatabas som kan användas som grund för moderna webbplatser i världsklass och andra krävande innehållsprogram.
Det är efterföljaren till Jackrabbit 2 och används av AEM 6 som standardbackend för sin innehållsdatabas, CRX.
Oak implementerar JSR-283 (JCR 2.0) spec. Dess främsta designmål är följande:
Syftet med lagringslagret är att
Oak Core lägger till flera lager i lagringslagret:
Det främsta målet för JCR-rapporterna är att omvandla JCR-semantik till trädverksamhet. Byrån ansvarar också för
Dessutom är nu icke-Java-implementeringar möjliga och en del av JCR-konceptet för Oak.
Lagringslagret Oak innehåller ett abstraktionslager för den faktiska lagringen av innehållet.
För närvarande finns det två lagringsimplementeringar i AEM6: Tjärlagring och MongoDB-lagring.
Tjärlagringen använder tjärfiler. Innehållet lagras som olika typer av poster inom större segment. Journaler används för att spåra databasens senaste status.
Det finns flera viktiga designprinciper som den bygger på:
Innehållet lagras i segment som kan vara upp till 256 kB. De är oföränderliga, vilket gör det enkelt att cachelagra segment som du använder ofta och minska antalet systemfel som kan skada databasen.
Varje segment identifieras av en unik identifierare (UUID) och innehåller en kontinuerlig delmängd av innehållsträdet. Dessutom kan segment referera till annat innehåll. Varje segment innehåller en lista med UUID:n för andra refererade segment.
Relaterade poster som en nod och dess direkt underordnade poster lagras i samma segment. På så sätt blir sökningen i databasen snabb och de flesta cachemissar undviks för vanliga klienter som använder mer än en relaterad nod per session.
Formateringen av posterna är optimerad för att minska IO-kostnaderna och för att passa så mycket innehåll som möjligt i cacheminnen.
MongoDB-lagringsutrymmet använder MongoDB för att dela och klustra. Databasträdet sparas i en MongoDB-databas där varje nod är ett separat dokument.
Den har flera särdrag:
För varje uppdatering (implementering) av innehållet skapas en ny revision. En revidering är i princip en sträng som består av tre element:
Förgreningar stöds, vilket gör att klienten kan mellanlagra flera ändringar och göra dem synliga med ett enda sammanfogningsanrop.
MongoDB-lagring lägger till data i ett dokument vid varje ändring. Data tas dock bara bort om en rensning aktiveras explicit. Gammala data flyttas när ett visst tröskelvärde uppnås. Tidigare dokument innehåller bara oföränderliga data, vilket betyder att de bara innehåller genomförda och sammanfogade versioner.
Data om aktiva och inaktiva klusternoder sparas i databasen för att underlätta klusteråtgärder.
En typisk konfiguration AEM kluster med MongoDB-lagring:
Eftersom Oak är bakåtkompatibelt med JCR 1.0-standarden sker nästan inga förändringar på användarnivå. Det finns dock vissa märkbara skillnader som du måste ta hänsyn till när du konfigurerar en Oak-baserad AEM:
Mer information om den AEM plattformen finns i följande artiklar: