Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

MongoDB and OAK integration

Avatar

Level 2

The question is:

 

I plan to create a MongoDB database which will store information that is obtained from an external API. I need to integrate this MongoDB database with my AEM project in such a way that I can generate OAK indexes that will be obtained from that database, this in order to create a search in my AEM project. I have reviewed the following documentation:

 

https://docs.adobe.com/content/help/en/experience-manager-65/deploying/deploying/queries-and-indexin...

https://docs.adobe.com/content/help/en/experience-manager-65/deploying/practices/best-practices-for-...

https://jackrabbit.apache.org/oak/docs/query/query.html

 

I understand that OAK indexes the content stored in my project's repository. Is there a way to store external content in the repository? If this option is possible it could save me having to integrate from MongoDB.

Screenshot from 2020-05-20 13-27-35.png

 

I look forward to your comments, thank you.

1 Accepted Solution

Avatar

Correct answer by
Employee

You can make use of Document Node Store(which is the basis for AEM's MongoMK implementation).

https://docs.adobe.com/content/help/en/experience-manager-65/deploying/deploying/data-store-config.h...

 

The deployment guide stating how to deploy AEM with MongoDB:

https://docs.adobe.com/content/help/en/experience-manager-64/deploying/introduction/aem-with-mongodb...

 

 

Hope these help !!

View solution in original post

5 Replies

Avatar

Correct answer by
Employee

You can make use of Document Node Store(which is the basis for AEM's MongoMK implementation).

https://docs.adobe.com/content/help/en/experience-manager-65/deploying/deploying/data-store-config.h...

 

The deployment guide stating how to deploy AEM with MongoDB:

https://docs.adobe.com/content/help/en/experience-manager-64/deploying/introduction/aem-with-mongodb...

 

 

Hope these help !!

Avatar

Employee

Does it mean that you've installed AEM on TarMK and you want to use a MongoMK to store project's data?

What is the use case of such a complex deployment? 

To make it happened you need to implement a MongoDB connector like to an external DB. I don't think we have any sample, but you can get an idea from https://docs.adobe.com/content/help/en/experience-manager-65/developing/platform/jdbc.html

In that case, you would have to define Mongo indexes and Mongo queries.

Note that you can have either MongoMK or TarMK, but not a mix.

MongoMK is recommended with over 100 concurrent user's connections to an AEM. If you don't have such a high load, you can easily employ a TarMK.

 

Avatar

Employee Advisor

If I understand you correctly, you want some application approaching directly the MongoDB and that this content then shows up in AEM/Oak and is reachable through its API.

 

This is not possible, because Oak does not know of the documents you added outside of its control to the MongoDB. Therefor it will never show up in the indexes. If you want to content to be indexed within Oak, you need to insert into the repository by regular means (Oak/Sling APIs).

 

HTH,

Jörg

Avatar

Level 2
Yes, you are correct. In a DB inside my AEM environment, I want to insert content that I get externally with an api and then query it in a JAVA class. From what you tell me if I do it this way the OAK indexes will not work for me. What do you recommend me ? Do not use the DB and directly insert the content of the external api into my AEM repository? Can I do this using Sling? Thanks for your help.

Avatar

Employee Advisor
You can use any API AEM provides to write to the repository. It can be the JCR API, it can be Sling, or other highlevel concepts. That totally depends on you.