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