On 09/15/2012 08:52 AM, Vincent Massol wrote:
> Hi devs,
> 
> Just wanted to share my vision of how we should tackle migrating to the new 
> Model. I see the following steps:
> 
> * Step 1: Define new model interfaces (status: in progress)

We will probably need to revisit this step a number of times to get a really 
compelling interface.

> * Step 2: Implement a "bridged" version which uses the oldcore (status: in 
> progress).
> * Step 3: Start moving code to use the new API as the new API and its 
> implementation progress. Note: we should start using the produce of step1 and 
> step2 ASAP to tune the details (status: not started)
> * Step 4: At the same time, start a new implementation based on a RDBMS 
> (probably hibernate-based, to be decided) (status: not started). I'd also 
> like that we start other implementations not based on a RDBMS just to prove 
> that it works with other storages. Ideally I'd like some NoSQL impl (Caleb 
> maybe?) and I'd also like to try a Git-based implementation (using jgit)
> * Step 5: Deprecate all our search apis located in XWikiHibernateStore and 
> make everyone use the new QueryManager module. This needs some tuning on the 
> QueryManager for missing stuff but that's doable (I need to send some 
> proposal on missing stuff). (status: in progress). The idea here is to 
> decouple search from storage. Note that we'll need to write some translator 
> from HQL to XWQL or the new search query language.
> * Step 6: As we progress in step 2, 3, 4, introduce a configuration parameter 
> to decide which implementation to use ("bridged", etc) so that users can 
> start playing with new implementations (status: not started)
> * Step 7: Rewrite a new Importer/Exporter that exports everything (all the 
> data in the current DB) + all configuration files/data. To see what we are 
> currently not exporting, see 
> http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Backup#HUsingtheXWikiExportfeature
>  This new exporter should probably be based on the XWiki Streams module being 
> developed here: https://github.com/xwiki-contrib/wiki-stream (status: in 
> progress but not active)
> * Step 8: When users want to migrate from one implementation ("bridged" for 
> ex) to a new implementation they export their wiki, set the new 
> implementation in the configuration file and reimport. (status: not started)
> 
> For me Step3 can almost begin (I probably need one or 2 more weeks to be 
> ready to have some use cases implemented and I'll send a vote to merge my 
> work in feature-newmodel branch in master - Would be good if you guys start 
> looking at it and give comments to be ready for this).
> 
> Then we need volunteer for Step 4 for:
> * new RDBMS implementation. Who?

IMO we should do some kind of a cost/benefit analysis on different ORMs and 
different schema options.
I can share some of my experiences with DataNucleus/Cassandra which might help 
us at least with designing a fast and scalable schema.
As a side note, if DataNucleus/RDBMS looks like a good option, we can reuse a 
large amount of code from DN/Cassandra.
Of course implementing 2 out of 3 implementations with DataNucleus carries risk 
of lock-in.

> * noSQL impl. Cassandra? other? Who?

Porting the existing DataNucleus/Cassandra implementation should be easy, it 
stores generic user defined classes so it can represent basically anything.

> * git implementation. Vincent
> 
> WDYT about the plan?

+1

Thanks,
Caleb


> 
> In term of time required it's probably going to take us about a year to have 
> a first working version for all the steps by working at a leisurely pace.
> 
> Thanks
> -Vincent
> 
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
> 


_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to