I am enthusiastic about presenting to the New England Microsoft Developers group on June 14th, 2018. As an added benefit, I am looking forward to catching up with my friend and chapter leader, Andy Novick.
The meeting venue is at the following address.
Microsoft Technology Center
5 Wayside Road
Burlington, MA 01803
I hope to see you at the event.
Introduction to Cosmos Database for the C# developer
Azure Cosmos database is Microsoft’s new globally distributed, multi-model database service. Right now, there is support for five different application programming interfaces: key-value store (table), graph store (gremlin), document store (SQL), Mongo database (documents) and Casandra database (wide column).
John Miner of Blue Metal will introduce the basic techniques required to design and deploy a JSON document store for your C# application. This will include adding meta data to the JSON document for tracking usage and lineage. Of course, a document store would be useless without the typical (CRUD) Create, Read, Update and Delete commands.
Microsoft boasts about the five properties of the Cosmos Database: global distribution, elastics scale out, guaranteed low latency, five consistency models and comprehensive SLA’s. John will talk briefly about each of these topics.
When designing a document store you are given the choice to partition the data by a hash key or use one partition. If you do not select a partition key, the database is limited to a 10 GB size. On the other hand, choosing a partition key allows for maximum storage. There are strategies on optimizing the partition (hash) key for reads and/or writes. Having all the writes directed to one partition will limit how much the actual service can scale.
Last but not least, there are times in which a business problem lends itself to a Not Only SQL (NoSQL) architecture such as the SQL API of Cosmos Database. Other times, a traditional relational database management system (RDMS) is a better choice. Knowing when to use a NoSQL database will make you a more effective developer on your next project.
I suggest placing all the files in one directory and using 7-Zip to unzip them.