jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Wechner <michael.wech...@wyona.com>
Subject Re: Use JackRabbit CMS for storing Business Objects
Date Thu, 21 Aug 2008 14:56:51 GMT
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/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