If I understand properly the string length is there to assure easier
migration.
Are we sure this will work with Unicode strings which can use 2 bytes (if
we were ever to use Unicode) ?

I give my +1 but I think we need to put in the M1 release notes that this
Milestone is really for people that know what they are doing.
Also we need to have a good testing process on existing databases. Let us
know when this is commited, XWiki SAS can put some people to do a migration
test of some of our wikis.

Ludovic



2012/2/17 Denis Gervalle <[email protected]>

> 9 days, nobody care, most of this was voted previously, I will go ahead and
> commit.
> Document base key format will be like: 5:space8:document
> Object base key format will be like: 5:space8:document15:xspace.class[0]
>
> Denis
>
> On Wed, Feb 8, 2012 at 18:08, Denis Gervalle <[email protected]> wrote:
>
> >
> >
> > On Wed, Feb 8, 2012 at 13:43, Denis Gervalle <[email protected]> wrote:
> >
> >> Hi devs,
> >>
> >> I know this subject will seems to you already voted and discussed in
> >> http://xwiki.markmail.org/thread/fsd25bvft74xwgcx
> >> But following the remarks and the discussion under that thread, I had
> >> largely improved the proposed changes.
> >> This is an important matter, so I prefer to resume here to be sure we
> all
> >> really agree on this.
> >>
> >> To resume the current situation, we have:
> >>  - document id
> >>     - used in document table, rcs, attachment...
> >>     - simple 32bits string hashcode of a locally serialized
> >> document reference, including the language for translated documents
> >>     - stored in a 64bits field.
> >>  - object id
> >>     - used in object and property tables, but also in statistics tables
> >>     - simple 32bits string hashcode of the concatenation of the document
> >> reference, the class reference and the object number
> >>     - stored in a 32bits field (except in Oracle, where the mapping is
> >> 32bits, but the storage is larger)
> >>
> >> The vote is about:
> >>  - document id
> >>    - use the lower 64bits of an MD5 hashcode
> >>    - the base key for the hashcode is serialized using a
> >> LocalUidEntityReferenceSerializer of the document reference
> >>        - the result is appended with the current locale for translated
> >> document, until locale are integrated in references
> >>        - format for original document: 5space8document
> >>
> >  Please read:
> >         - format for original document: 5:space8:document
> >
> >
> >>        - format for translation: 5:space8:document2:fr
> >>  - object id
> >>    - use the lower 64bits of an MD5 hashcode
> >>    - the base key for the hashcode is serialized using a
> >> LocalUidEntityReferenceSerializer of the BaseObjectReference
> >>        - current format would be: 5:space8:document12:xspace.class[0]
> >>        - if my proposal in the object reference thread is adopted:
> >> 5:space8:document18:6:xspace5:class[0]
> >>
> >> Since changing document id could really not helps since document
> >> reference are used in object ids and therefore unambiguous document
> could
> >> receive ambiguous objects, I do not advice to split the change.
> Moreover,
> >> this is really sensible change in the database, so not multiplying them
> is
> >> better. I think the upcoming 4 is a really good time to introduce this
> >> change, so I propose to introduce this in version 40000 of the database
> >> (4.0M1 release).
> >> But I would like to use it internally earlier. So you would be pleased
> to
> >> settle on this thread and the previous one before.
> >>
> >> It implies the following migration for existing instances:
> >>   - customer custom mapping have to be adapted before the migration,
> >> including dynamic one which could be not so easy, but this is already
> >> rarely used and very rarely require any change in fact.
> >>   - change XWikiDocument to provide the key required for IDs, by the
> way,
> >> also use that key (non local version) for the document cache
> >>   - refactor the BaseElement hierarchy to provide long IDs (no more
> >> integer) based on references (generic way to have ids for any element)
> >>   - change the hibernate mapping for all object ids
> >>   - provide dynamic schema updates using liquibase to fix all object id
> >> types, including those in custom mapping and collection
> >>   - migrate in HQL document id for persisted
> >> class:  XWikiDocument, XWikiRCSNodeInfo, XWikiLink, XWikiAttachment,
> DeletedAttachment
> >>   - migrate in HQL object id for persisted class: BaseObject, *Property,
> >> internal custom mapped class, dynamic custom mapped class
> >>   - migrate in HQL object id for custom statistics class derived form
> >> XWikiStats
> >>   - migrate in SQL ids for all relational collections in the above
> >> migrated tables
> >>
> >> To provide this migration as safely as possible:
> >>   - Liquibase provide a safe way to change the schema
> >>   - All id conversion are gathered from the database in a first single
> >> read-only transaction, and new id are computed.
> >>   - Potentially already migrated ids are detected, allowing the process
> >> to fails and be restarted.
> >>   - Proceed to ids replacement using a safe algorithm that may support
> >> non-circular conflict between old and new ids (very unlikely anyway,
> since
> >> we move from 32 to 64bits)
> >>   - Use a single transaction for each id conversion, replacing it in all
> >> related tables
> >>   - Use Database independent queries (HQL) as much as possible, only
> bulk
> >> update on collection which are not supported by hibernate are in a
> >> minimalistic SQL update statement.
> >>
> >> Some helps for testing the migration on different
> >> environments is requested ! (I do my tests on MySQL deeply)
> >> I will commit my branch on platform soon.
> >>
> >> Here is my +1.
> >>
> >> --
> >> Denis Gervalle
> >> SOFTEC sa - CEO
> >> eGuilde sarl - CTO
> >>
> >
> >
> >
> > --
> > Denis Gervalle
> > SOFTEC sa - CEO
> > eGuilde sarl - CTO
> >
>
>
>
> --
> Denis Gervalle
> SOFTEC sa - CEO
> eGuilde sarl - CTO
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Ludovic Dubost
Founder and CEO
Blog: http://blog.ludovic.org/
XWiki: http://www.xwiki.com
Skype: ldubost GTalk: ldubost
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to