We look on JackRabbit+Oracle as a storage for Business Objects. Is it possible? Or CMS is only for documents storage??

Each Object can have a unique set of flexible fields (like usual custom fields but more featured) and we need to search by these fields. I plan to achieve this by adding mix-ins to each node. One mix-in will define on property or child node. There will be lots of objects, they must be archived, maybe also versioned. Next XML illustrates approximate structure of object and order of nodes quantities:
<ObjsRoot>
  <MainObject x1 000 000 - must be archived>
    <ObjVersion x5>
      <Entry1 10xPropertyMix-ins/>
       <EntryList2>
         
<Line 6xPropertyMix-ins x10/>
       </EntryList2>
      <EntryList3>
     
    <Line 2xPropertyMix-ins x5/>
      </EntryList3>
      <Bid x10>
        <BidVersion x5>
          <Entry1 10xPropertyMix-ins/>
            <EntryList2>
             <Line 4xPropertyMix-ins x10/>
            </EntryList2>
            <EntryList3>
               
<Line 2xPropertyMix-ins x5/>
            </EntryList3>
          </BidVersion>
      </Bid>
    </ObjVersion>
  </MainObject>
</ObjsRoot>

NOTE: each mix-in has only one property.


We've made short research regarding JackRabbit. We compared what to use:
 - JPA+Oracle (field table <-> value table <-> integer table, string table etc.) concrete value table can be joined to business object table using id etc.
 - JackRabbit + Oracle using mix-ins (nodes have their properties using mix-ins, each mix-ins = one property)

Environment:
Oracle 10 data base for data storage, local file system for indexes storage. The configuration XML file is attached.


JackRabbit Advantages
1.      A visual and more natural representation of the Business Object and its metadata
2.      A powerful Query engine

Disadvantages
1.      Not acceptable performance for both read and update operations. See the details below.

Simple data model is used for the performance testing:
<companies>
<company>
  <employee>
   
<addresses/>
   
</employee>    
 
</company>        
</companies>

Company has properties: name, profit; employee has properties: name, age, birthday, salary, currency; address has properties: country, city, street, phone

Data was generated for about 4000 companies with 20 employees for each company and 20 addresses for each employee.
It takes about 1.8 millions records for nodes and 7.16 million records for properties in Oracle.

Some queries were executed. For example, executing time for query:
Executed query: "//sourcing/JackRabbitPerf
ormanceTestMixin/companies/CompanyType/Company_Employees_ChildDef[@Employee_Age_PropDef >= 20]/Employee_Addresses_ChildDef[@Address_Phone_PropDef > 5000000]" is 501615 ms if result set is limited to 10 nodes.
In case, then result set doesn t limited and all existing nodes are returned, executing time for query takes more than 30 minutes.




Topics

Thank you very much in advance!