[openstack-dev] [Zaqar] Comments on the concerns arose during the TC meeting

Jay Pipes jaypipes at gmail.com
Thu Sep 11 23:05:08 UTC 2014


On 09/11/2014 04:09 PM, Zane Bitter wrote:
> Swift is the current exception here, but one could argue, and people
> have[2], that Swift is also the only project that actually conforms to
> our stated design tenets for OpenStack. I'd struggle to tell the Zaqar
> folks they've done the Wrong Thing... especially when abandoning the
> RDBMS driver was done largely at the direction of the TC iirc.
>
<snip>
> [2] http://blog.linux2go.dk/2013/08/30/openstack-design-tenets-part-2/

No offense to Soren, who wrote some interesting and poignant things, nor 
to the Swift developers, who continue to produce excellent work, but 
Swift is object storage. It is a data plane system with a small API 
surface, a very limited functional domain, and a small, inflexible 
storage schema (which is perfectly fine for its use cases). It's needs 
for a relational database are nearly non-existent. It replicates a 
SQLite database around using rsync [1]. Try doing that with a schema of 
any complexity and you will quickly find the limitations of such a strategy.

If Nova was to take Soren's advice and implement its data-access layer 
on top of Cassandra or Riak, we would just end up re-inventing SQL Joins 
in Python-land. I've said it before, and I'll say it again. In Nova at 
least, the SQL schema is complex because the problem domain is complex. 
That means lots of relations, lots of JOINs, and that means the best way 
to query for that data is via an RDBMS.

And I say that knowing just how *poor* some of the queries are in Nova!

For projects like Swift, Zaqar, even Keystone, Glance and Cinder, a 
non-RDBMS solution might be a perfectly reasonable solution for the 
underlying data storage and access layer (and for the record, I never 
said that Zaqar should or should not use an RDBMS for its storage). For 
complex control plane software like Nova, though, an RDBMS is the best 
tool for the job given the current lay of the land in open source data 
storage solutions matched with Nova's complex query and transactional 
requirements.

Folks in these other programs have actually, you know, thought about 
these kinds of things and had serious discussions about alternatives. It 
would be nice to have someone acknowledge that instead of snarky 
comments implying everyone else "has it wrong".

Going back in my hole,
-jay

[1] 
https://github.com/openstack/swift/blob/master/swift/common/db_replicator.py#L232



More information about the OpenStack-dev mailing list