I came to know about ROOT through the Reflex framework. I have been using Reflex with success on a number of internal projects (eg. freecode.com/projects/sptodb was an exercise using the Prevayler concept), which is one of the reasons why ROOT file and tree storage subsystems piqued my interest.
Some of the features I would be looking for are:
[li]High performance read and writes - The documentation seemed to indicate ability to index data, so basic querying should be covered.[/li]
[li]Low memory footprint - Not sure where ROOT stands in this regard. One of the reasons I have migrated to C++ from Java has been the heavy memory footprint of Java solutions.[/li]
[li]Replica data stores - I did not see anything in the documentation. Does ROOT provide any automated ways to replicate data (RAID type facility) across multiple servers?[/li]
[li]Automated failover - I saw some notes in PROOF, but am not sure if that is exactly what I want. I am not interested in parallel processing, only having a highly available data store.[/li]
[li]Inverted indexes or full-text search - I don’t expect that in ROOT (nor does MongoDB provide it). I will probably use Xapian or something similar for that.[/li][/ul]
Data model I will be looking at is primarily a tree based structure, and probably additional branches to map social connects (in other words I will probably implement a very rudimentary graph database using my data store). I will also need to store file content such as audio/video/image etc. It would be nice if I could use the data store for it as well, but regular file system or cloud based storage may be another option.
Given these, can anyone let me know if they believe ROOT will be a good option or not based on your experience. All comments and suggestions are welcome and appreciated.