All Articles

Shared Datastore across multiple AEM instances

Adobe Experience Manager

In Adobe Experience Manager (AEM), binary data can be stored independently from the content nodes. The binary data is stored in a data store, whereas content nodes are stored in a node store.

Both data stores and node stores can be configured using OSGi configuration. Each OSGi configuration is referenced using a persistent identifier (PID).

When dealing with large number of binaries, it is recommended that an external data store be used instead of the default node stores in order to maximize performance.

For example, if your project requires a large number of media assets, storing them under the File or S3 Data Store will make accessing them faster than storing them directly inside a MongoDB.

The File Data Store provides better performance than MongoDB, and Mongo backup and restore operations are also slower with large number of assets.

In this article we will focus on sharing datastore between multiple AEM instances. These instances could be author-author, author-publish or publish-publish.

AEM Shared File Datstore Setup

For the quickstart install type first we will unpack the AEM webapp using following command:

  java -jar <Name of your file> -unpack

Then we navigate to the crx-quickstart directory and create a new directory with name install.

Finally, create org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config file inside the install directory with following contents:

repository.home = "<path to shared datastore>"
path = "<path to shared datastore>"
minRecordLength = "256"

If you are running AEM on a server install instead of quickstart this directory will be WEB-INF/resources/config.

Now just start AEM and you would notice that the datastore would populate in custom location instead of the repository directory.