[openstack-dev] [oslo][versionedobjects][ceilometer] explain the benefits of ceilometer+versionedobjects

gord chung gord at live.ca
Thu Sep 3 19:12:43 UTC 2015



On 28/08/15 01:54 PM, Dan Smith wrote:
>> we store everything as primitives: floats, time, integer, etc... since
>> we need to query on attributes. it seems like versionedobjects might not
>> be useful to our db configuration currently.
> I don't think the former determines the latter -- we have lots of things
> stored as rows of column primitives and query them out as objects, but
> then you're not storing the object and version (unless you do it
> separately) So, if it doesn't buy you anything, then there's no reason
> to use it.
sorry, i misunderstood this. i thought you were saying ovo may not fit 
into Ceilometer.

i guess to give it more of a real context for us to understand, 
regarding the database layer, if we have an events model which consists of:

- id: uuid
- event_type: string
- generated: timestamp
- raw: dictionary value (not meant for querying, just for auditing purposes)
- traits: [list of tuples (key, value, type)]

given this model, each of our backend drivers take this data and using 
it's connection to db, stores data accordingly:
- in mongodb, the attributes are all stored in documents similar to 
json, raw attr is stored as json
- in elasticsearch, they're stored in documents as well but traits are 
mapped different from mongo
- in hbase, the attributes and traits are all mapped to columns
- in sql, the data is mapped to an Event table, traits are mapped to 
different traits tables depending on type, raw attribute stored as a string.

considering everything is stored differently depending on db, how does 
ovo work? is it normalising it into a specific format pre-storage? how 
does different data will different schemas co-exists on the same db?
- is there a some version tag applied to each item and a version schema 
table created somewhere?
- do we need to migrate the db to some handle different set of 
attributes and what happens for nosql dbs?

also, from api querying pov, if i want to query a db, how do you 
query/filter across different versions?
- does ovo tell the api what versions exists in db and then you can 
filter across any attribute from any schema version?
- are certain attributes effectively unqueryable because it may not 
exists across all versions?

apologies on not understanding how it all works or if the above has 
nothing to do with ovo (i wasn't joking about the 'explain it to me like 
i'm 5' request :-) ) ... i think part of the wariness is that the code 
seemingly does nothing now (or the logic is extremely hidden) but if we 
merge these x hundred/thousand lines of code, it will do something later 
if something changes.

cheers,

-- 
gord




More information about the OpenStack-dev mailing list