[openstack-dev] [oslo.db] [ndb] ndb namespace throughout openstack projects

Octave J. Orgeron octave.orgeron at oracle.com
Mon Jul 24 19:41:20 UTC 2017

Hi Jay,

Comments below..


On 7/23/2017 4:10 PM, Jay Pipes wrote:
> Glad you brought this up, Mike. I was going to start a thread about 
> this. Comments inline.
> On 07/23/2017 05:02 PM, Michael Bayer wrote:
>> I've been working with Octave Oregon in assisting with new rules and
>> datatypes that would allow projects to support the NDB storage engine
>> with MySQL.
>> To that end, we've made changes to oslo.db in [1] to support this, and
>> there are now a bunch of proposals such as [2] [3] to implement new
>> ndb-specific structures in projects.
>> The reviews for all downstream projects except Cinder are still under
>> review. While we have a chance to avoid a future naming problem, I am
>> making the following proposal:
>> Rather than having all the projects make use of
>> oslo_db.sqlalchemy.ndb.AutoStringTinyText / AutoStringSize, we add new
>> generic types to oslo.db :
>> oslo_db.sqlalchemy.types.SmallString
>> oslo_db.sqlalchemy.types.String
> This is precisely what I was going to suggest because I was not going 
> to go along with the whole injection of NDB-name-specific column types 
> in Nova. :)
>> (or similar )
>> Internally, the ndb module would be mapping its implementation for
>> AutoStringTinyText and AutoStringSize to these types. Functionality
>> would be identical, just the naming convention exported to downstream
>> consuming projects would no longer refer to "ndb.<name>" for
>> datatypes.
>> Reasons for doing so include:
>> 1. openstack projects should be relying upon oslo.db to make the best
>> decisions for any given database backend, hardcoding as few
>> database-specific details as possible.   While it's unavoidable that
>> migration files will have some "if ndb:" kinds of blocks, for the
>> datatypes themselves, the "ndb." namespace defeats extensibility.
> Right, my thoughts exactly.
>> if IBM wanted Openstack to run on DB2 (again?) and wanted to add a 
>> "db2.String" implementation to oslo.db for example, the naming and 
>> datatypes would need to be opened up as above in any case;  might as 
>> well make the change now before the patch sets are merged.
> Yep.
>> 2. The names "AutoStringTinyText" and "AutoStringSize" themselves are
>> confusing and inconsistent w/ each other (e.g. what is "auto"? one is
>> "auto" if its String or TinyText and the other is "auto" if its
>> String, and..."size"?)
> Yes. Oh God yes. The MySQL TINY/MEDIUM/BIG [INT|TEXT] data types were 
> always entirely irrational and confusing. No need to perpetuate that 
> terminology.

FYI, the TINYTEXT is part of the MySQL syntax and dialect. So it's not 
alien to MySQL folks.
>> 3. it's not clear (I don't even know right now by looking at these
>> reviews) when one would use "AutoStringTinyText" or "AutoStringSize".
>> For example in 
>> https://review.openstack.org/#/c/446643/10/nova/db/sqlalchemy/migrate_repo/versions/216_havana.py
>> I see a list of String(255)'s changed to one type or the other without
>> any clear notion why one would use one or the other.  Having names
>> that define simply the declared nature of the type would be most
>> appropriate.
> Well, besides that point (which I agree with), that is attempting to 
> change an existing database schema migration, which is a no-no in my 
> book ;)

Unfortunately, if we don't modify the scripts, we can't create the 
schemas on the NDB database. Tables have to fit in the row limits. So 
unless we have a way to override the scripts, we have to modify them.

>> I can add these names up to oslo.db and then we would just need to
>> spread these out through all the open ndb reviews and then also patch
>> up Cinder which seems to be the only ndb implementation that's been
>> merged so far.
> +1
>> Keep in mind this is really me trying to correct my own mistake, as I
>> helped design and approved of the original approach here where
>> projects would be consuming against the "ndb." namespace. However,
>> after seeing it in reviews how prevalent the use of this extremely
>> backend-specific name is, I think the use of the name should be much
>> less frequent throughout projects and only surrounding logic that is
>> purely to do with the ndb backend and no others.   At the datatype
>> level, the chance of future naming conflicts is very high and we
>> should fix this mistake (my mistake) before it gets committed
>> throughout many downstream projects.
> I had a private conversation with Octave on Friday. I had mentioned 
> that I was upset I didn't know about the series of patches to oslo.db 
> that added that module. I would certainly have argued against that 
> approach. Please consider hitting me with a cluestick next time 
> something of this nature pops up. :)
> Also, as I told Octave, I have no problem whatsoever with NDB Cluster. 
> I actually think it's a pretty brilliant piece of engineering -- and 
> have for over a decade since I worked at MySQL.
> My complaint regarding the code patch proposed to Nova was around the 
> hard-coding of the ndb namespace into the model definitions.
> Best,
> -jay
>> [1] https://review.openstack.org/#/c/427970/
>> [2] https://review.openstack.org/#/c/446643/
>> [3] https://review.openstack.org/#/c/446136/
>> __________________________________________________________________________ 
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: 
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> __________________________________________________________________________ 
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: 
> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170724/10265f7b/attachment.html>

More information about the OpenStack-dev mailing list