La piattaforma AEM in AEM 6 si basa su Apache Jackrabbit Oak.
Apache Jackrabbit Oak è uno sforzo per implementare un archivio di contenuti gerarchici scalabile e performante da utilizzare come base dei siti web moderni e di altre applicazioni di contenuti esigenti.
Sostituisce Jackrabbit 2 e viene utilizzato da AEM 6 come backend predefinito per il relativo archivio di contenuti, CRX.
Oak implementa le JSR-283 (JCR 2.0) specifiche. I suoi principali obiettivi sono:
Lo scopo del livello di storage è:
Oak Core aggiunge diversi livelli al livello di archiviazione:
L'obiettivo principale di Oak JCR è quello di trasformare la semantica JCR in operazioni ad albero. È inoltre responsabile:
Inoltre, le implementazioni non-Java sono ora possibili e fanno parte del concetto Oak JCR.
Il livello di archiviazione Oak fornisce un livello di astrazione per l'effettivo archiviazione del contenuto.
Al momento sono disponibili due implementazioni di storage in AEM6: Archiviazione Tar e Archiviazione MongoDB.
Lo storage Tar utilizza file tar. Memorizza il contenuto come vari tipi di record all’interno di segmenti più grandi. Le scritture contabili vengono utilizzate per tenere traccia dello stato più recente dell’archivio.
Ci sono diversi principi chiave di progettazione intorno a cui è stato costruito:
Il contenuto viene memorizzato in segmenti di dimensioni fino a 256 KiB. Sono immutabili, il che rende facile memorizzare nella cache i segmenti a cui si accede di frequente e riduce gli errori di sistema che possono danneggiare l’archivio.
Ogni segmento è identificato da un identificatore univoco (UUID) e contiene un sottoinsieme continuo della struttura del contenuto. Inoltre, i segmenti possono fare riferimento ad altri contenuti. Ogni segmento mantiene un elenco di UUID di altri segmenti di riferimento.
I record correlati come un nodo e i relativi figli immediati vengono solitamente memorizzati nello stesso segmento. Questo rende la ricerca dell'archivio molto veloce ed evita la maggior parte degli errori di cache per i clienti tipici che accedono a più di un nodo correlato per sessione.
La formattazione dei record è ottimizzata per le dimensioni per ridurre i costi di I/O e per adattare il maggior numero possibile di contenuti nelle cache.
Lo storage MongoDB sfrutta MongoDB per la condivisione e il clustering. La struttura dell'archivio viene mantenuta in un database MongoDB in cui ogni nodo è un documento separato.
Ha diverse particolarità:
Per ogni aggiornamento (commit) del contenuto, viene creata una nuova revisione. Una revisione è fondamentalmente una stringa costituita da tre elementi:
I rami sono supportati, il che consente al client di mettere in scena più modifiche e di renderle visibili con una singola chiamata di unione.
L'archiviazione MongoDB aggiunge dati a un documento con ogni modifica. Tuttavia, elimina i dati solo se viene attivata esplicitamente una pulizia. I dati precedenti vengono spostati quando viene soddisfatta una determinata soglia. I documenti precedenti contengono solo dati immutabili, il che significa che contengono solo revisioni salvate e unite.
I dati sui nodi del cluster attivi e inattivi vengono conservati nel database per facilitare le operazioni del cluster.
Configurazione cluster AEM tipica con archiviazione MongoDB:
Poiché Oak è progettato per essere compatibile con lo standard JCR 1.0, non ci saranno quasi modifiche a livello di utente. Tuttavia, ci sono alcune differenze notevoli che è necessario tenere in considerazione quando si imposta un'installazione di AEM basata su Oak:
Per ulteriori informazioni sulla piattaforma AEM, consulta anche gli articoli seguenti: