Opinions about suitability

Hello All,

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:

[ul]
[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.

Thanks
Rakesh

Hi,

[quote]High performance read and writes - The documentation seemed to indicate ability to index data, so basic querying should be covered.[/quote]ROOT Tree are extremely efficient in term of read and write in particular when scanning sequentially ; please note that the TTree are designed as a ‘write-once;read-many-times’ containers.

[quote]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.[/quote]ROOT has very low memory requirement and give a pretty good control on how much memory is used by the TTrees.

[quote]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?[/quote]Not directly. ROOT provide the way to stream object/data in and out of files. A way to store and retrieved efficiently the ROOT files is provided by the xrood/scala project (see xrootd.slac.stanford.edu/)

[quote]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.[/quote]Yes when using xrootd.

[quote]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.[/quote]Not directly either.

[quote]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.[/quote]It might or might be a good fit depending how you can structure the update (or the lack thereof). For example you might be able to efficient really on file replacement rather that updating.

Cheers,
Philipep.