Andrei Latyshau schrieb:
We look on JackRabbit+Oracle as a storage for Business Objects. Is it possible?

sure
Or CMS is only for documents storage??

is your question saying that you are afraid that it might be only useful for storing documents?

if so, then no. It's useful for all kind of data. Re logic and semantic it's probably more a question how to layer this.

Our approach is normally something like


Controller
 |
Custom Data Model/API
|
Custom Data Implementation
|
JCR or some other Data Abstraction API
|
Jackrabbit (as JCR implementation)
|
some data repository specific persistence manager
|
actual data repository

with this approach one has great flexibility and doesn't have to be afraid of possible peformance/scalability issues, because
one can rather easily switch the implementations


HTH

Michael

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/[EMAIL PROTECTED] >= 20]/[EMAIL PROTECTED] > 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!

Reply via email to