Change sample storage table db schema to improve performance

Registered by Phil Neal

Performance of both read and write actions on Ceilometer samples is poor. Normalizing the schema for storing sample will improve performance by separating into definition (i.e. project id, resource id, etc) and fact (message id, counter volume, etc.) tables.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Phil Neal
Direction:
Needs approval
Assignee:
None
Definition:
Superseded
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
gordon chung

Related branches

Sprints

Whiteboard

I think it's a good idea to normalize the schema. User_id and project_id columns in sample table can be removed because they are transitively dependent on sample via resource_id. Also, I wonder if user and project tables are necessary.

Nihongi 01.05.14

Here, I made an example of revised data model.
https://drive.google.com/file/d/0B8t3foVHxoiJY2hCMF9ZTHJXS2s/edit?usp=sharing
Nihongi 10.05.14

this was actually handled by https://blueprints.launchpad.net/ceilometer/+spec/bigger-data-sql... it pretty much implemented above -- gordc (10.11.15)

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.