Sitecore recently launched the version 9.0.2 which supports the MongoDB for xConnect.

Now, for a greenfield project which needs to kickoff on Sitecore 9.0.2, we have a choice between MS SQL Server or MongoDB for xConnect.

My question is therefore whether there are any guidelines which could help us to decide either to go with Mongo or SQL for xConnect?

Has anybody tested the load of analytics data on SQL Server using Sitecore 9?

Any interesting findings could impact the decision to adopt the technology.

Your practical experience or use-case would be highly appreciated.

up vote 11 down vote accepted

1) Infrastructure

MongoDB will introduce new element into infrastructure of your solution. This increases cost of servers, cost of maintenance and at the end complicates the overall solution landscape.

In scaled solution you would need couple of Mongo DB server e.g. replica sets to support failover, redundancy and data availability.

If you stay with MS SQL Server installed on VM in Azure or on prem, it would be just couple of more databases at the end hosted in your already existing database server where you host master, core, web and other Sitecore databases. On the other hand, if you use Azure DBs this could be really cost solution in oppose using Mongo DB.

2) Tooling and Debugging

You also need more tooling like RoboMongo to query data for debugging purposes and for developers need to know how to query MongoDB as it is way different in oppose to classic SQL Server.

For administrators new set of monitoring tools / scripts to handle these servers.

If you stay with MS SQL Server, you don't need to install additional tools and learn new queries as you are good to go with MS SQL Server Management Studio (SSMS).

3) Performance

You are getting the data from analytics index so whether you are using MongoDB or SQL Server, your decision won't significantly increase / decrease performance of reading data in your solution. Only question of performance here how fast can data be indexed using either Mongo DB / MS SQL Server. This is I think marginal question here. I would believe that this is a bit quicker for MS SQL Server as this is already third version of product which uses it. For Mongo DB querying data might be slower as it could be not so optimized in API (first version caution see below).

4) First version caution

Sitecore 8 was using Mongo DB to hold Analytics data already. Sitecore 9 Initial Release and Update 1 were not supporting Mongo only SQL Server. Sitecore 9 Update 2 is the first version of Sitecore 9 where MongoDB support was introduced once again. It is also disabled by default. I would wait for next update or Sitecore 9.1 to experiment with this.

5) Pros for Mongo DB

On the other hand, I believe MongoDB should be faster processing unstructured data than MS SQL Server although Microsoft made progress processing json data in recent versions of SQL Server like json native data type and so on.

Usage of MongoDB would be great for existing projects that are on Sitecore 8 and want to migrate to Sitecore 9 using existing environments.

If you use Azure DB then Mongo DB would be relatively cheaper solution. Depends on architecture and landscape that you plan to use.

Summary

To summarize, for your greenfield project, I would probably stick with MS SQL Server and wait for some fixes in upcoming releases regarding MongoDB support so you are not "early adopter" :) Then evaluate and maybe make a switch.

  • Hi Peter - what about the Performance factor with SQL Server or Mongo regardless the infrastructure and cost.. Any case studies available for high performance on SQL for xConnect – Ashish Bansal Jun 25 at 7:28
  • Answer updated @AshishBansal – Peter Procházka Jun 25 at 7:40
  • "Don't forget also that this is the first version of Sitecore 9 where MongoDB was introduced". But Mongo has also been used in Sitecore since 7.5 so it's not new to the Sitecore stack. It's also worth looking at the cost of Azure SQL vs Mongo, since you specifically mention cost, Azure SQL for all the required databases could start to cost a lot. – jammykam Jun 25 at 18:40
  • @jammykam - That's why I have specifically used "first version of Sitecore 9" term. I had there also information that it was reintroduced once again but revised answer and removed it not to be confusing formulation :) You are right regarding costs of Azure SQL. I have updated part 1 and 5 in these matters. Thanks for pointed this out. – Peter Procházka Jun 25 at 19:23
  • I realise you had worded it very carefully... but it's like saying "Sitecore 9 is the first version which introduces SQL provider for analytics data, I would wait till 9.1 to use it"... :) – jammykam Jun 26 at 21:44

Here are my 2 cents :)

I discussed with Sitecore folks about this. As per them, there is no impact on performance with either one. We had set up MongoDB with Sitecore 8.2 and considering the pain of data migration, and we are not killing it soon. Since xConnect is entirely new, performance was a little concern to us. I would highly recommend doing performance testing according to the traffic of your website.

Per my understanding, if you already have MongoDB implemented, you can consider to keep it along with xConnect (Performance and Load test is the must).

If you are setting up Sitecore from scratch or enabling marketing feature from Sitecore 9, SQL is the winner.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.