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 :)
-- 
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 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.

Reply via email to