Toaster future release planning
In order to select a data store technology, we investigated several possible backends for storing data generated by a build. These are the results of the investigation documenting the final choice.
Criteria and investigation technique
We selected the following criteria, in descending importance order, as we target optimization in normal data usage. The pattern we expect is to insert for a run a set of records in the range on 10.000 entries, and then repeatedly read them in order to compute statistics and display information to users.
The criteria selected was:
- Time to read records (seconds/1000 records)
- Time to write records (seconds/1000 records)
- Space on disk (Mb/1000 records)
- Ease to install / deploy (subjective, 5 stars best, 1 star worst)
The investigation was done by generating around 8000 records from actual builds and then replicating these records to a high number in order to do simulate a high load on the data store.
Timings were performed on the client-side access of the data store, using timestamps to mark start and end of a batch run for read/writes. Disk space measurement was taken manually at the end of data generation.
The technologies measured were:
- CouchDB
- MySQL
- MongoDB
- sqlite