Polyglot Persistence

Global Azure Bootcamp 2016: Redmond edition

Global Azure Bootcamp 2016: Redmond edition

I had the honor of presenting a session during the 2016 Global Azure Bootcamp, a worldwide event held in 162 confirmed locations. The individual events at each location are typically run by Microsoft MVPs and community leaders.

This year, I gave a talk in Redmond, on the Microsoft campus. Coincidentally, the event took place in the same building my team works out of. This event was run by Manesh Raveendran, a Microsoft Azure MVP. Feel free to say hi to Manesh on Twitter at @ManeshRavendran.

Bootcamp audience I may have snuck up behind another presenter to grab this pic...

About 30-40 attendees participated, and we had a content-packed agenda, along with afternoon hands-on labs.

agenda

For my session, I spoke about the concept of polyglot persistence, the idea of using multiple databases within an app, taking advantage of each database's core strengths. This talk included overviews and demos of each core non-relational database type: key/value, document, column, and graph.

The demos took advantage of Azure's database-as-a-service (DBaaS) offerings, such as Table Storage, Redis, and DocumentDB. I also demo'd DataStax Cassandra, as this is a certified offering in the Azure Marketplace which rolls out an entire Cassandra cluster automatically. For the graph database, I demo'd with Neo4j in a VM, but also showed two hosting partners (Graph Story and GrapheneDB). The talk wrapped up with a walkthrough of a hypothetical storefront, and we dreamed up best-fit suggestions for shopping cart, product descriptions, order history, product suggestions, and website logging/telemetry.

All of the talk materials are on my Github repo, github.com/dmakogon/globalazure2016.

A big THANK YOU to Manesh for offering a speaking slot, and to the super-awesome audience who didn't get stressed when I threw stress balls at them. And thanks to Andrew Liu (@aliuy8) of the DocumentDB engineering team, for letting me know about the event.

If you haven't been to a Global Azure Bootcamp before, I highly recommend them - same time, next year. And if one isn't in your area, feel free to step up and volunteer to organize one!

NoSQL Now! talk summary and links: Polyglot Persistence in Windows Azure

Thanks to those who attended my session on Polyglot Persistence in Windows Azure today at the NoSQL Now!conference in San Jose. Here are slides and a few notes from today's session and follow-on questions.

 (download )
How will Windows Azure provide NoSQL database support? Today, Azure offers Table Storage as a NoSQL key/value store. Additionally, several partners have begun offering database "as a service" running in Windows Azure. For example, MongoLab and MongoHQ provide Azure-hosted MongoDB, while Cloudant provides Azure-hosted CouchDB.

Some of these databases are available directly through our partners' web portals, while others have also integrated into the Azure Store as part of the Windows Azure portal. Here's an example of MongoLab's MongoDB integrated in the store:
For self-hosting, several partners have built virtual machine images, installable via Azure's VM Depot. Here's Neo Technology's Neo4j 1.8: What, exactly, is VM Depot? VM Depot is a repository of community-created Linux-based virtual machine images. In terms of NoSQL, there are a few NoSQL database images available today. For example, you'll find Neo4j, MongoDB, Redis, and Riak.

What does VM Depot cost? VM Depot is free: Free to publish images and free to download images to your Azure account.

What are the architectural considerations for integrating multiple NoSQL databases in my app? Are there standard practices? As the Cloud Ninja Polyglot Persistence project demonstrates, you can choose to either make direct database calls or implement an abstraction layer, implementing such patterns as repository. When going with a repository pattern, this allows you to swap out database engines with reduced impact to your existing code base, although it's possible you'll need to make adjustments to your app's data access API.

How do I choose a specific NoSQL database implementation? Can you please recommend one? For key/value storage, Azure Table Storage offers massive scale (200TB per namespace) and provides very fast storage and lookup. As for 3rd-party vendor offerings, I really cannot give specific recommendations, but I can offer some food for thought when making your decision:

  • Look at the company's longevity, financials, funding, etc.
  • Does the vendor provide Professional Services support?
  • How big / popular is the community? Consider forums, web presence, conferences, etc.
  • How robust is language support? does the product offer direct API's when using a non-supported language?
  • How active is the project? Are there frequent updates? Can you view the code (e.g. OSS)?
  • Will the database engine run on your target OS? Some databases may be Windows-only or Linux-only.

What was that super-cool zooming app you used during your demo??? I was using , written by Mark Russinovich.

Where can I find more information about the stuff you talked about today? Here are some informational links from today's talk:

There are a few more resources we didn't talk about, but should still be valuable:Zoomit