| 14 | |
| 15 | == XML Database Backend == |
| 16 | |
| 17 | Semi-structured data such as this is not a good candidate for storage in a relational database. Instead, native XML databases are rather well suited for storing semi-structured data. Bitten therefore uses [http://www.sleepycat.com/products/xml.shtml Berkeley DB XML] to store reports generated by builds. BDB XML supports the [http://www.w3.org/TR/xquery/ XQuery] standard and thereby enables efficient and powerful analysis and aggregation of the collected software metrics. |
| 18 | |
| 19 | ''Note that Bitten allows an alternative XQuery capable data store being used instead of BDB XML.'' |
| 20 | |
| 21 | Every report is stored as a self-contained document in the XML DB. It is associated with a specific build step using metadata: |
| 22 | |
| 23 | `config`:: The name of the build configuration the report belongs to |
| 24 | `build`:: The unique ID of the associated build |
| 25 | `step`:: The name of the build step |
| 26 | |
| 27 | The reports themselves are stored verbatim as received from the build slave, for example: |
| 28 | |
| 29 | {{{ |
| 30 | #!xml |
| 31 | <report type="unittest"> |
| 32 | <test duration="0.073" status="success" fixture="bitten.tests.model.BuildConfigTestCase" name="test_config_update_name" file="bitten/tests/model.py"/> |
| 33 | ... |
| 34 | </report> |
| 35 | }}} |
| 36 | |
| 37 | == Querying the Report Store == |
| 38 | |
| 39 | TBW |