Currently an index-enabled serialized object form has the following layout
(simplified):

[object fields][field1Offset,field1Length,
field2Offset,field2Length,...,fieldNOffset,fieldNLength]

where fields order is determined upon the first object serialization and
stored in metadata cache which is available on all nodes. Thus, the field
lookup is performed as follows:

fieldName -> fieldIndex (metadata lookup, O(1)), fieldIndex->fieldOffset in
footer (O(1)), fieldOffset->fieldValue (O(1)).

BTW, I am finalizing the branch with marshaller changes and will send this
for a preliminary review soon.

2015-07-16 0:55 GMT-07:00 Atri Sharma <atri.j...@gmail.com>:

> Keep in mind that JSONB's performance comes from the fact that it uses
> server encoding, is binary represented and can have GIN indexes on top of
> it. Not sure if Ignite's marshalling approach keeps those features as well.
>
> On Thu, Jul 16, 2015 at 1:20 PM, Sergi Vladykin <sergi.vlady...@gmail.com>
> wrote:
>
> > HSTORE and JSONB appeared to have similar format in Postgresql (because
> > they was developed by the same people). They noticed that they switched
> off
> > of using key length sorting because they sometimes need lexicographical
> > order but this is irrelevant for us.
> >
> > Sergi
> >
> > 2015-07-16 10:43 GMT+03:00 Atri Sharma <atri.j...@gmail.com>:
> >
> > > Are you referring to JSONB here?
> > >
> > > On Thu, Jul 16, 2015 at 1:10 PM, Sergi Vladykin <
> > sergi.vlady...@gmail.com>
> > > wrote:
> > >
> > > > Guys, specially Alexey G.
> > > >
> > > > I've attended PostgreSQL conference and there was a talk about
> > > unstructured
> > > > data format.
> > > > They had an interesting idea of serialized layout close enough to
> ours,
> > > I'm
> > > > not sure how much this is different from our approach and if we can
> use
> > > > some ideas from it but anywaus it looks really promising to me and I
> > want
> > > > to share.
> > > >
> > > > The structure basically is the following:
> > > >
> > > > [key headers] [keys] [values]
> > > >
> > > > Key headers are [key offset, key length] so they are of a fixed
> length.
> > > >
> > > > The cool idea here is that keys and respectively the key headers
> sorted
> > > by
> > > > (key length, key) so that you can do a lookup first by fast picking
> key
> > > of
> > > > the needed length without looking at keys at all and then pick an
> exact
> > > > key. Both searches can be done with fast scan if there are small
> number
> > > of
> > > > keys and binary search for a larger number of keys.
> > > >
> > > > Alexey G., could you please compare this to our new marshalling
> > approach
> > > > you are about to merge?
> > > > BTW, it would be nice if you will describe it in details here.
> > > >
> > > > Sergi
> > > >
> > >
> > >
> > >
> > > --
> > > Regards,
> > >
> > > Atri
> > > *l'apprenant*
> > >
> >
>
>
>
> --
> Regards,
>
> Atri
> *l'apprenant*
>

Reply via email to