Split Apache OAK Stores

Evgeniy Fitsner Software Engineer
2 min read
Split Apache OAK Stores

As an AEM repository grows due to accumulated assets and binary files, regular compaction alone may not be sufficient. Separating NodeStore and BlobStore components can improve performance and reduce memory consumption.

Consider splitting your Apache OAK repository if:

  • Repository size grows unexpectedly fast due to numerous assets
  • You need to improve local repository speed and decrease memory consumption

Implementation Steps (AEM 6.1 on Windows)

Prerequisites:

  • Stop the Adobe AEM instance
  • Back up and compact the OAK repository

1. Create directories

Create separate directories for SegmentStore and BlobStore:

  • crx-quickstart\repository_new
  • C:\dev\aem\blobstore

2. Clone the repository with crx2oak

1
2
3
4
java -jar crx2oak-1.4.6-standalone.jar --copy-binaries 
--src-datastore=crx-quickstart/repository/segmentstore 
--datastore=c:\\dev\\aem\\author\\blobstore 
crx-quickstart/repository crx-quickstart/repository_new -mmap

3. Reorganize directories

  • Create crx-quickstart\install
  • Delete old crx-quickstart\repository
  • Rename crx-quickstart\repository_new to crx-quickstart\repository

4. Create configuration files

org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg:

1
customBlobStore=true

org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg:

1
2
3
path=C:\\dev\\aem\\author\\blobstore
cacheSize=...
minRecordLength=...

5. Restart and verify

Restart the instance and verify that “Custom BlobStore” is enabled in the configuration manager.