A plataforma AEM no AEM 6 é baseada no Apache Jackrabbit Oak.
O Apache Jackrabbit Oak é um esforço para implementar um repositório de conteúdo hierárquico escalável e eficiente para uso como base de sites modernos de classe mundial e outros aplicativos complexos de conteúdo.
É o sucessor do Jackrabbit 2 e é usado pelo AEM 6 como o backend padrão para seu repositório de conteúdo, o CRX.
O Oak implementa a especificação JSR-283 (JCR 2.0). Os seus principais objetivos de concepção são:
A finalidade da camada de Armazenamento é:
O Oak Core adiciona várias camadas à camada do armazenamento:
O principal objetivo do JCR Oak é transformar a semântica do JCR em operações em árvore. É igualmente responsável por:
Além disso, implementações não Java agora são possíveis e fazem parte do conceito JCR Oak.
A camada de armazenamento Oak fornece uma camada de abstração para o armazenamento real do conteúdo.
Atualmente, existem duas implementações de armazenamento disponíveis no AEM6: Armazenamento Tar e Armazenamento MongoDB.
O armazenamento Tar usa arquivos tar. Ele armazena o conteúdo como vários tipos de registros em segmentos maiores. Os journais são usados para rastrear o estado mais recente do repositório.
Existem vários princípios básicos de design que foram construídos em torno:
O conteúdo é armazenado em segmentos que podem ter até 256 KiB. Eles são imutáveis, o que facilita o cache de segmentos acessados com frequência e reduz erros do sistema que podem corromper o repositório.
Cada segmento é identificado por um identificador exclusivo (UUID) e contém um subconjunto contínuo da árvore de conteúdo. Além disso, os segmentos podem fazer referência a outro conteúdo. Cada segmento mantém uma lista de UUIDs de outros segmentos referenciados.
Os registros relacionados, como um nó e seus filhos imediatos, geralmente são armazenados no mesmo segmento. Isso torna a pesquisa no repositório muito rápida e evita a maioria das falhas de cache para clientes típicos que acessam mais de um nó relacionado por sessão.
A formatação de registros é otimizada para tamanho, a fim de reduzir os custos de E/S e ajustar o máximo de conteúdo possível em caches.
O armazenamento MongoDB aproveita o MongoDB para compartilhamento e agrupamento. A árvore do repositório é mantida em um banco de dados MongoDB onde cada nó é um documento separado.
Ele tem várias particularidades:
Para cada atualização (confirmação) do conteúdo, uma nova revisão é criada. Uma revisão é basicamente uma string que consiste em três elementos:
Há suporte para ramificações, o que permite que o cliente registre várias alterações e as torne visíveis com uma única chamada de mesclagem.
O armazenamento MongoDB adiciona dados a um documento com todas as modificações. No entanto, isso só exclui dados se uma limpeza for explicitamente acionada. Os dados antigos são movidos quando um determinado limite é atingido. Os documentos anteriores contêm apenas dados imutáveis, o que significa que contêm apenas revisões confirmadas e unidas.
Os dados sobre nós de cluster ativos e inativos são mantidos no banco de dados para facilitar as operações de cluster.
Uma configuração típica de cluster AEM com o armazenamento MongoDB:
Como o Oak foi projetado para ser retrocompatível com o padrão JCR 1.0, quase não haverá alterações no nível do usuário. No entanto, há algumas diferenças notáveis que você precisa levar em conta ao configurar uma instalação de AEM baseada no Oak:
Para obter mais informações sobre a plataforma AEM, consulte também os artigos abaixo: