jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrei Latyshau" <andrei.latys...@gmail.com>
Subject Use JackRabbit CMS for storing Business Objects
Date Thu, 21 Aug 2008 13:03:02 GMT
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

   - Querying of objects, best practices here in pagination, loading etc.


   - Load Entries of ObjVersion and Entries of BidVersion By ID
   - Search list of ObjVersion with count of bids, criteria can be complex


   - Is it possible to join tables from relational database? Or just store
   all in CMS, then node joins are not too long?
   - Configuration of JackRabbit, indexing etc.
   - Adding objects takes time


Thank you very much in advance!

Mime
View raw message