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 스토리지 및 MongoDB 스토리지.
Tar 저장소는 tar 파일을 사용합니다. 더 큰 세그먼트 내에서 다양한 유형의 레코드로 콘텐츠를 저장합니다. 저널은 저장소의 최신 상태를 추적하는 데 사용됩니다.
이를 중심으로 빌드된 몇 가지 주요 디자인 원칙이 있습니다.
콘텐츠는 최대 256KB의 세그먼트에 저장됩니다. 변경 불가능한 세그먼트로 자주 액세스하는 세그먼트를 쉽게 캐시하고 저장소를 손상시킬 수 있는 시스템 오류를 줄일 수 있습니다.
각 세그먼트는 고유 식별자(UUID)로 식별되며 콘텐츠 트리의 연속 하위 집합을 포함합니다. 또한 세그먼트는 다른 콘텐츠를 참조할 수 있습니다. 각 세그먼트는 다른 참조된 세그먼트의 UUID 목록을 유지합니다.
노드 및 그 바로 아래 하위 노드와 같은 관련 레코드는 동일한 세그먼트에 저장됩니다. 이렇게 하면 저장소를 빠르게 검색할 수 있으며 세션당 두 개 이상의 관련 노드에 액세스하는 일반적인 클라이언트의 캐시 실패를 대부분 방지할 수 있습니다.
레코드의 서식은 크기에 맞게 최적화되어 IO 비용을 줄이고 캐시에 있는 콘텐츠를 최대한 많이 맞출 수 있습니다.
MongoDB 스토리지는 공유 및 클러스터링을 위해 MongoDB를 사용한다. 저장소 트리는 각 노드가 별도의 문서인 하나의 MongoDB 데이터베이스에 보관됩니다.
여기에는 몇 가지 세부 사항이 있습니다.
콘텐츠의 각 업데이트(커밋)에 대해 새 수정 버전이 만들어집니다. 개정은 기본적으로 다음 세 가지 요소로 구성된 문자열입니다.
분기가 지원되어 클라이언트가 여러 변경 사항을 스테이징하고 단일 병합 호출로 표시할 수 있습니다.
MongoDB 스토리지는 매번 수정할 때마다 문서에 데이터를 추가합니다. 그러나 정리 작업이 명시적으로 트리거되는 경우에만 데이터를 삭제합니다. 특정 임계값이 충족되면 이전 데이터가 이동됩니다. 이전 문서에는 변경할 수 없는 데이터만 포함되어 있습니다. 즉, 커밋되고 병합된 개정 버전만 포함됩니다.
활성 및 비활성 클러스터 노드에 대한 데이터는 클러스터 작업을 용이하게 하기 위해 데이터베이스에 보관됩니다.
MongoDB 스토리지를 사용하는 일반적인 AEM 클러스터 설정:
Oak는 JCR 1.0 표준과 역호환되므로 사용자 수준에서 변경 사항이 거의 없습니다. 그러나 Oak 기반 AEM 설치를 설정할 때 고려해야 할 몇 가지 주목할 만한 차이점이 있습니다.
AEM 플랫폼에 대한 자세한 내용은 아래 문서도 참조하십시오.