One of the most popular presentations this year at PuppetConf was Deepak Giridharagopal's "Introduction to PuppetDB and Higher-Order Automation." It's a great overview of what PuppetDB is and how it works, and Deepak is a highly engaging and entertaining speaker.
On how fast PuppetDB is:
It takes a couple hundred milliseconds for PuppetDB to store that entire catalog — that’s the entire graph, every single resource, every single parameter, every single relationship, all the edges, all the facts reports, everything.
On the implications of PuppetDB now being a part of Puppet Enterprise:
Most importantly, PuppetDB in Puppet Enterprise 3.x is going to be the basis for all the upcoming reporting and analytic features that we'll be putting in. There's a lot of changes performance-wise. Since the one that was released a year ago, storage is approximately 20 percent faster. We made a lot of improvements to how we are doing caching internally. One of the nice things with the runtime is that it actually has threads, so I can cache information that one thread needs, and another thread can actually access it. Crazy town.
On how PuppetDB is different from other Puppet Labs software:
We had to build something that was pretty different in order to make this work. And we did a couple of fairly unconventional things, relative to how the rest of Puppet or Puppet Labs software is constructed. No. 1: We baked asynchronous operation into the core of how the stuff works. PuppetDB is supposed to provide two basic features: It has to store stuff, and it has to let you query it. It turns out that there is an architectural pattern within software that describes those patterns pretty nicely, called Command Query Responsibility Separation.
You can check out the slides and read the full transcript of Deepak’s talk here.
- Nick Lewis' blog post, Introducing PuppetDB.
- PuppetDB official documentation.
- Our "Module of the Week" blog post on the PuppetDB module, which can help you get PuppetDB up and running in no time.