[openstack-dev] [ceilometer] resource_metadata and metaquery

Julien Danjou julien at danjou.info
Wed Jan 23 09:55:05 UTC 2013

On Wed, Jan 23 2013, Lu, Lianhao wrote:

> Hi guys,
> If my understanding is correct, the current resource_metadata stored by the ceilometer collector could be any python object which can be serialized to the JSON format, so the resource_metadata could be a dict containing values of dict/list/string, e.g. 
>   {"key1": [ 
>           { "key11": 11},
>           { "key12": 12}
>          ],
>    "key2": "v2"
>    "key3": {
>         "key31": 31
>        }
>   }
> Does the metaquery support complex conditions, like the form of
> metadata["key3"]["key31"] > 30 or { "key11": 11} in metadata["key1"],
> besides the simple form of metadata["key2"]=="v2"?

Nop. The plan for now is to limit metadata querying to key = value where
value is of a simple type (string, int). I think it's a sane limitation,
and that will allow us to index more efficiently metadata.

> Besides, supporting the metaquery in sqlalchemy is not easy as that in
> mongodb. The question is where should the query filter operation
> happen? We may do the metadata query filter operation on the
> sqlalchemy client side in python, which is comparably easy to
> implement and easy to be adapted to complex filter conditions, but is
> bad in performance because it needs to get all the records from
> backend DB to do that.

We discussed this with Nick back then, and IIRC the idea is to add a
metadata table with colums 'meter_id', 'key' and 'value' and to index
those last fields.
If we were using PG I'd suggest to try arrays or PL/v8 to do JSON
filtering, but since we have to support MySQL that's not an option I
guess. D'oh.

> The other way is to do the metadata query filter operation on the
> backend DB side which should have better performance, but I don't know
> how to do that to support complex conditions other than the simple
> form of metadata["key2"]=="v2".

You got the solution: we don't allow that. :)

Julien Danjou
/* Free Software hacker & freelance
   http://julien.danjou.info */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130123/d5560868/attachment.pgp>

More information about the OpenStack-dev mailing list