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#HUsingtheXWikiEx…
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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs