ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexey Kuznetsov <akuznet...@gridgain.com>
Subject Re: Dynamic SQL/Fulltext index create/drop.
Date Thu, 04 Jun 2015 00:51:56 GMT
Minor note.
If I correctly remember in CacheTypeMetadata we also define index field
sort direction with boolean and "true" means "desc".

Maybe  SQLSortedIndex  should be:

class SQLSortedIndex extends Index {
    void addField(String fieldName, boolean __desc__);
}

?

On Thu, Jun 4, 2015 at 5:00 AM, Sergi Vladykin <sergi.vladykin@gmail.com>
wrote:

> I propose the following API:
>
> IgniteCahe.createIndex(Index idx);
> IgniteCahe.dropIndex(String idxName);
>
> abstract class Index {
>      Index(String idxName);
> }
>
> class SQLSortedIndex extends Index {
>     void addField(String fieldName, boolean asc);
> }
>
> class SQLGeoSpatialIndex extends Index {
>      SQLGeoSpatialIndex(String idxName, String fieldName)
> }
>
> class FulltextIndex extends Index {
>     void addField(String fieldName);
> }
>
> Sergi
>
>
> 2015-06-01 19:13 GMT+03:00 Sergi Vladykin <sergi.vladykin@gmail.com>:
>
> >
> > I would do index creation/drop through custom messages in discovery. We
> >> already use this to start and stop caches and start continuous
> processes.
> >>
> >
> > Could you please explain in more details how this works?
> >
> >
> >> This approach is much easier from synchronization standpoint.
> >
> >
> > I'm more familiar with cache transactions. What exactly is easier? Am I
> > missing something hard in tx?
> >
> >
> >> Moreover, you
> >> guarantee that altering happens on single topology version.
> >>
> >
> > I don't see why we need to care about it in this case.
> >
> > Sergi
> >
> >
> >
> >> --Yakov
> >>
> >> 2015-06-01 17:41 GMT+03:00 Sergi Vladykin <sergi.vladykin@gmail.com>:
> >>
> >> > Yo guys!
> >> >
> >> > I think it is time to start implementing this feature since it became
> >> > really relevant lately.
> >> >
> >> > Currently we have static indexing configuration via either
> >> > CacheConfiguration.setIndexedTypes or
> >> CacheConfiguration.setTypeMetadata.
> >> > Now we want to have IgniteCache API methods like createIndex/dropIndex
> >> > which will allow to modify index layout at runtime without cluster
> >> restart.
> >> >
> >> > I think on the public API side we have to create index description
> >> classes
> >> > like SQLSortedIndex, FulltextIndex, SQLGeospatialIndex. I personally
> >> don't
> >> > like approach with weirdly structured maps which we have in
> >> > CacheTypeMetadata, but there it was done for simpler Spring XML
> support.
> >> >
> >> > From the implementation standpoint I think we have to utilize
> replicated
> >> > transactional sys cache with continous queries to listen updates from
> >> it.
> >> > Put index description objects there and handle these updates on all
> the
> >> > interested nodes.
> >> >
> >> > On start each cache has to attempt load its initial index
> configuration
> >> > transactionally or if it already exists, then utilize runtime
> >> configuration
> >> > from cluster.
> >> >
> >> > At Indexing level we have to just find needed GridH2Table, take write
> >> lock
> >> > on it, add index, fill it with data from primary index and release the
> >> > write lock. Non-blocking approach we can implement further.
> >> >
> >> > Index drop is basically the same.
> >> >
> >> > Lets discuss API and implementation here and then I'll create jira
> issue
> >> > with final description.
> >> >
> >> > By the way I am a bit busy to implement this stuff myself, so anyone
> >> > interested please go ahead!
> >> >
> >> > Sergi
> >> >
> >>
> >
> >
>



-- 
Alexey Kuznetsov
GridGain Systems
www.gridgain.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message