On Tuesday, May 22, 2012 8:26:22 AM UTC-7, Brice Figureau wrote: > > On Mon, 2012-05-21 at 15:39 -0600, Deepak Giridharagopal wrote: > > On Mon, May 21, 2012 at 2:04 PM, Marc Zampetti > > <marc.zampe...@gmail.com> wrote: > > > Why wouldn't a DB-agnostic model be used? > > > > > > The short answer is performance. To effectively > > implement things we've > > got on our roadmap, we need things that (current) > > MySQL doesn't > > support: array types are critical for efficiently > > supporting things > > like parameter values, recursive query support is > > critical for fast > > graph traversal operations, things like INTERSECT are > > handy for query > > generation, and we rely on fast joins (MySQL's nested > > loop joins don't > > always cut it). It's much easier for us to support > > databases with > > these features than those that don't. For fairly > > divergent database > > targets, it becomes really hard to get the performance > > we want while > > simultaneously keeping our codebase manageable. > > > > > > I understand the need to not support everything. Having > > designed a number of systems that require some of the features > > you say you need, I can say with confidence that most of those > > issues can be handled without having an RDBMS that has all > > those advanced features. So I will respectfully disagree that > > you need features you listed. Yes, you may not be able to use > > something like ActiveRecord or Hibernate, and have to > > hand-code your SQL more often, but there are a number of > > techniques that can be used to at least achieve similar > > performance characteristics. I think it is a bit dangerous to > > assume that your user base can easily and quickly switch out > > their RDBMS systems as easy as this announcement seems to > > suggest. I'm happy to be wrong if the overall community thinks > > that is true, but for something that is as core to one's > > infrastructure as Puppet, making such a big change seems > > concerning. > > > > > > We aren't using ActiveRecord or Hibernate, and we are using hand-coded > > SQL where necessary to wring maximum speed out of the underlying data > > store. I'm happy to go into much greater detail about why the features > > I listed are important, but I think that's better suited to puppet-dev > > than puppet-users. We certainly didn't make this decision cavalierly; > > it was made after around a month of benchmarking various solutions > > ranging from traditional databases like PostgreSQL to document stores > > like MongoDB to KV stores such as Riak to graph databases like Neo4J. > > For Puppet's particular type of workload, with Puppet's volume of > > data, with Puppet's required durability and safety requirements...I > > maintain this was the best choice. > > > > While I don't doubt that given a large enough amount of time and > > enough engineers we could get PuppetDB working fast enough on > > arbitrary backing stores (MySQL included), we have limited time and > > resources. From a pragmatic standpoint, we felt that supporting a > > database that was available on all platforms Puppet supports, that > > costs nothing, that has plenty of modules on the Puppet Forge to help > > set it up, that has a great reliability record, that meets our > > performance needs, and that in the worst case has free/cheap hosted > > offerings (such as Heroku) was a reasonable compromise. > > I didn't had a look to the code itself, but is the postgresql code > isolated in its own module? > > If yes, then that'd definitely help if someone (not saying I'm > volunteering :) wants to port the code to MySQL. > > On a side note, that'd be terriffic Deepak if you would start a thread > on the puppet-dev explaining how the postgresql storage has been done to > achieve the speed :) >
I'm working on putting together an in-depth look into the technology inside PuppetDB, as well as everything we've done to make it fast. That should be coming soon. > -- > Brice Figureau > Follow the latest Puppet Community evolutions on www.planetpuppet.org! > > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/y9AAD02ZVYwJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.