Like every other CMS on the planet, Sitecore’s data is stored in a database, well to be more precise several databases. If you look at your SQL server after you install a fresh copy of SQL, you should see something like this:
This may seem like a lot of databases, but each has its own specific purpose. Out of these databases, Sitecore CMS itself uses three to manage content within the CMS itself, which are core, master and web.
As the name implies, this is where the ‘Core’ Sitecore items and associated data are stored. Things like.Net Membership Provider tables etc..
This is the database where all the authoring objects live.
This is where your live websites data will live. When you want a page to go live, you will promote it from the ‘Master‘ database and move it into the ‘Web‘ database. Splitting up the database between ‘Master’ and ‘Web’ has a few benefits. First, is security, you’re none exposing the minim amount of data to the external world. Second, as the ‘Web‘ database will have a smaller subset of objects, data retrieval will be quicker.
Analytics and xDb
You will also notice that an Analytics database has also been installed, historically, this used to be the main database, where all the Sitecore stats were used, but, as of version 7.5 this changed a bit. With the release of Experience Database (xDb) Analytics. Sitecore made a massive jump forward in Analytics and can now provide analytics as customers interact with your website, mobile app or email campaign in real-time. This level of instant access wouldn’t have been possible with the old SQL database approach as it would involve too much network load. To counter this load, Sitecore decided to use a NoSqp approach, using MongoDB. If you have never used Mongo before, there’s no need to panic. Mongo is a NoSQL database, which mean data is stored on the server/disk (unless you go cloud hosted) rather than a SQL database. As it takes time to call SQL, get data etc.. NoSQL is generally faster. There are several NoSQL alternatives, like, Redis or Cassandra and MongoDB is another top contender.
In case you are wondering what the SQL analytics database is used for then… it’s to store historical analytic data. Mongo is the place to see the current/live analytics. After a certain period this data is then copied into SQL for historic data.