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.

[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,

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

OpenStack-dev mailing list

Reply via email to