The Sitecore User Group Conference 2015 was a great event organized by the community for the community. In addition to everything I learn, Sitecore events also give me a chance to catch up with colleagues (present – former – future), vendors and friends, and I always leave with renewed vigor and focus. Below are a couple of quick takeaways from two of the sessions I attended.
“What’s Under the Hood in Your Mongo Setup”
Sean Holmesby is a great presenter and I was not disappointed as he entertained while he educated in this presentation. How can you beat solid information combined with making audience members jump in their seats as a tiger roars, Eminem impressions and musical odes to Sitecore Executives?
MongoDB 3.0 – touted as the biggest release ever – came out in March of this year and is supported by Sitecore in 8.0 update 5. In Mongo DB 2.6 and earlier there was a “Hardwired” storage engine, speed concerns and concurrency drawbacks as well as large file sizes. MongoDB 3.0 brings flexible storage options including the WiredTiger option (did I mention the roaring?) as well as an experimental in memory option.
MMAPV1 evolved from the classic Monmgo DB SE and maps files directly into virtual memory which means the operating system does most of the work. In MongoDB 2.2-2.6 there is database level locking, while MongoDB 3.0 uses collection level locking. In both cases there is a multiple reader, single writer, in place updates and data size is the same in memory as it is on disk.
WiredTiger is an open source storage engine for multiple databases and was acquired by Mongo in 2014 and is the first supported “pluggable” storage engine for MongoDB. It has document level concurrency which means writes no long block other collection level writes, compressions of data, indexes and journals and no “in place” updates which increases performance. WiredTiger will be the default Storage engine in MongoDB 3.2
“Next Generation Serialization with Unicorn 3”
Kam Figy is a former colleague and one of the smartest people I’ve ever met. Add that to his laid back demeanor and knack for explaining things to all knowledge levels and you have a recipe for success. So when I saw he was speaking about Unicorn and Rainbows I knew I certainly couldn’t miss it.
Sitecore development artifacts are a mixture of code files and item, such as templates or renderings, but only the code is stored in source control out of the box. This necessitates serialization because – as any Sitecore developer can attest to – the out of the box solution of Sitecore packages works (most of the time) but is quite cumbersome and sharing databases and doing multiple database backup and restores is just as bad.
TDS from Hedgehog is one answer to this, Unicorn is the open source answer to this. (I have on my list of things to blog about the differences and pros and cons of each of these, but that is a story for a different day).
Unicorn works by choosing which items to serialize. Database items are written to files on disk and changes in Sitecore are updated to disk in real time. “Sync” pushes changes from disk into your local database and merging is always done on disk. (And bonus unicorns on your screen as you work).
Having worked with Unicorn 2, I was anxious to see what was new in Unicorn 3. Some of the new features and enhancements include:
- New format (YAML)
- New storage (SFS)
- Sitecore UI warnings
- Partial sync
- Partial reserialize
- Auto publish synced
- Split config schema
- Sync event pipelines
- 50% faster
- Better messaging
- More extensible
- Ninject not required
- Versioned to shared field conversion
- New and improved UI
Then there is Rainbow (I really wasn’t making that up). Rainbow is a code library for serialization and is used by Unicorn. It has an easy to read file format, human readable file hierarchy, easy to merge conflicts and item comparison APIs. Up soon is Transparent Sync – Automatic, real-time sync.
There were many, many other great sessions during the packed conference as well. It was especially great to have this scheduled on a year without a Sitecore Symposium – a huge thanks to the organizers. It is great to be part of such a dynamic, involved community.