Hi Christian,
It is difficult to give you an advice without knowing a more
precise configuration and access patterns.
What is the update frequency? one per millisecond, second, month ?
What is the real population in each node?
It is also not clear to me what are the operations you need to
perform: in memory only, on disk only, on both.
ROOT I/O is not an alternative to a pure conventional relational
data base to describe eg, employee/organisation type of relations.
May be a tool like MySQL is more adapted to this task.
Rene Brun
On Sun, 6 Jan 2002, cstrato@EUnet.at wrote:
> Dear Rooters!
>
> Maybe you can give me some advice whether to use TFolder or TDirectory
> when storing large amounts of TObjects in a TFile.
>
> As an example of the dimensions of the project, let me present a
> hypothetical project, namely to store data of all CERN employees in
> one root file TFile:
>
> For every person I create one folder/directory, which should store at
> least two objects, called TPerson and TWorkPackage:
> 1, class TPerson: public TNamed {
> fFirstName, fLastName, fAge, fGender, fAddress, etc
> }
> 2, class TWorkPackage: public TNamed {
> fCollaboration, fTask, etc
> }
>
> Now I want to create a TFile with the following hierarchy:
> TFile("CERN.root"):
> Departments
> Department_1
> Group_D1
> SubGroup_D1a
> SubGroup_D1b
> etc
> Group_D2
> SubGroup_D2a
> SubGroup_D2b
> etc
> Department_2
> Group_D3
> etc
> etc
> Collaborations
> Collaboration_1 //e.g. ALICE
> Group_C1
> SubGroup_C1a
> etc
> Group_C2
> Collaboration_2 //e.g. LHCb
> Group_C1
> etc
> etc
> Employees
>
> I want to store every employee in the subgroup of his/her department,
> and references to the employee in Collaboration(s) and in Employees.
>
> At the moment I see three possibilities how to achieve this:
> 1, use TFolder only
> 2, use TDirectory only
> 3, use TDirectory and TFolder
>
> 1, TFolder only:
> Advantages:
> It is very easy to create a TFolder hierarchy and to store TObjects
> The TFolder hierarchy can be converted to TTree, which should make
> finding data easy.
> Problems:
> How can I add/delete subfolders or change their content at a later
> time and store these subfolders in TFile?
> It seems that I have always to write the RootFolder to TFile:
> fRootFolder->Write("",TObject::kOverwrite),
> since it is not possible to write only the subfolder to TFile?
> If I assume 10,000 employees, then this means writing more than
> 20,000 TFolders to TFile every time. If something happens during
> writing, I could loose all data.
> Is the complete folder hierarchy with all objects read into RAM?
>
> 2, TDirectory only:
> Advantages:
> It is possible to add/delete/change TDirectory at any time, and
> only write the subdirectory of choice to TFile.
> Problems:
> Does it make sense to create more than 20,000 TDirectories?
> What is the overhead?
> How time-intensive is finding an object using the new function
> TDirectory::FindObjectAny()?
>
> 3, Mixture of TDirectory and TFolder:
> The main hierarchies Departments, Department_1, Collaborations,
> Collaboration_1, Employees would be created as TDirectory.
> The subhierarchies Group and SubGroup would be created as TFolder.
> This is the approach I am currently trying to implement,
> although I needed to inherit TMyFolder from TFolder for this
> purpose.
> Does this approach make sense or is there a better way?
>
> It would be great if I would receive suggestions, how to handle
> this task best.
>
> Thank you in advance
>
> Best regards
> Christian
> ----------------------------------
> C.h.r.i.s.t.i.a.n S.t.r.a.t.o.w.a
> V.i.e.n.n.a, A.u.s.t.r.i.a
>
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:38 MET