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