Guys,

As for the stages I would propose the following three creating separate JIRA 
tickets for them.

Stage 1:
- CREATE/DROP SCHEMA.
- CREATE/DROP TABLE.

Stage 2:
- CREATE/DROP INDEX.
- indexes are updated in the ‘lock-the-world mode'

Stage 3:
- CREATE/DROP INDEX.
- indexes are updated concurrently.

Going further we might need to make up a command like ‘CREATE CLUSTER’ that 
will be mapped to IgniteConfiguration. Using the command the user will fill in 
the whole cluster configuration from DDL without a need to go to XML at all.

Thoughts?

—
Denis

> On Jan 12, 2017, at 12:41 AM, Sergey Kozlov <skoz...@gridgain.com> wrote:
> 
> As first stage of DDL we can implement following CREATE TABLE statement
> support:
> - CREATE TABLE without cache properties (use default cache properties or
> cache properties defined in SQL Schema)
> - CREATE TABLE .. LIKE where we can create a cache based on an another
> existing cache.
> 
> On Thu, Jan 12, 2017 at 5:54 AM, Dmitriy Setrakyan <dsetrak...@apache.org>
> wrote:
> 
>> Agree with Sergey. We should be able to specify cache properties inside of
>> SQL statements. Does H2 have any support to process SQL hints? Can we
>> change it?
>> 
>> Having said that, while we finalize the above, I think we should start
>> working on DDL implementation to use the default settings, as specified in
>> Alexander's email.
>> 
>> Also agree with the stop-the-world on the cache for index creation. We can
>> always improve on it in future.
>> 
>> D.
>> 
>> On Wed, Jan 11, 2017 at 11:28 AM, Sergey Kozlov <skoz...@gridgain.com>
>> wrote:
>> 
>>> Hi
>>> 
>>> I suppose we should put any ignite cache properties as additional
>>> non-standard attributes after CREATE TABLE () clause as it does
>> Postgress,
>>> MySQL and other RDBMS.
>>> Take a look on CREATE TABLE with using TABLESPACE (Postgess) or for
>> CREATE
>>> TABLE with using PARTITIONS (MySQL).
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Wed, Jan 11, 2017 at 10:05 PM, Vladimir Ozerov <voze...@gridgain.com>
>>> wrote:
>>> 
>>>> I believe custom synthax and parsing is a *must* for us, as well as for
>>> any
>>>> distributed database. At the very least we need to specify affinity key
>>>> column somehow. Any cache property can be specified at the very end of
>>>> table definition. Key columns can be determined as the ones with
>> PRIMARY
>>>> KEY constraint (Alex K. idea) + affinity column(s):
>>>> 
>>>> CREATE TABLE employee (
>>>>    id BIGINT PRIMARY KEY,
>>>>    dept_id BIGINT AFFINITY KEY,
>>>>    name VARCHAR(128),
>>>>    address VARCHAR(256)
>>>>    BACKUPS 2,
>>>>    ATOMICITY_MODE ATOMIC,
>>>> );
>>>> 
>>>> "id" and "dept_id" form key type, "name" and "address" form value type.
>>>> 
>>>> Vladimir.
>>>> 
>>>> On Wed, Jan 11, 2017 at 9:08 PM, Alexey Kuznetsov <
>> akuznet...@apache.org
>>>> 
>>>> wrote:
>>>> 
>>>>> Hi, Alex!
>>>>> 
>>>>> As far as I know most RDBMS allow something like: create table t1 (id
>>>>> integer primary key, ....)
>>>>> How about to take as key field that marked as "primary key"?
>>>>> 
>>>>> As of atomicity and replication - I think it is a cache properties
>> and
>>>> with
>>>>> create table we will create "types" in cache. No?
>>>>> I thought that cache it is a kind of "schema" in RDBMS.
>>>>> 
>>>>> Could you describe what will be created with CREATE TABLE?
>>>>> 
>>>>> On Thu, Jan 12, 2017 at 12:54 AM, Alexander Paschenko <
>>>>> alexander.a.pasche...@gmail.com> wrote:
>>>>> 
>>>>>> Hello Igniters,
>>>>>> 
>>>>>> I would like to start discussion about implementation of SQL DDL
>>>>> commands.
>>>>>> 
>>>>>> At the first stage, the most important ones seem to be CREATE TABLE
>>>>>> (that will obviously correspond to creation of a cache) and CREATE
>>>>>> INDEX.
>>>>>> 
>>>>>> Regarding first one: SQL command for CREATE TABLE does not contain
>>> any
>>>>>> hints about cache settings (atomicity, replication, etc.), so these
>>>>>> will probably be defined by some configuration properties (like
>>>>>> ignite.ddl.default_cache_atomiticity, etc).
>>>>>> 
>>>>>> Also it does not allow to distinguish between key and value
>> columns -
>>>>>> currently it is handled by keyFields property of QueryEntity, but
>> it
>>>>>> is unclear how to declare key fields via CREATE TABLE.
>>>>>> 
>>>>>> So at a first glance it seems like we should either implement some
>>>>>> sort of custom parsing (I believe Sergi will be against it) or
>>>>>> introduce some kind of name prefix that would tell SQL engine that
>>>>>> certain column is a key field column.
>>>>>> 
>>>>>> Of course, this problem disappears is key is of SQL type.
>>>>>> 
>>>>>> Regarding CREATE INDEX: probably at first we will have to implement
>>>>>> this in "stop-the-world" manner, i.e. all cache will be blocked
>>> during
>>>>>> the index's initial buildup.
>>>>>> 
>>>>>> Any thoughts?
>>>>>> 
>>>>>> Currently I'm working on parsing of those commands as that will be
>>>>>> needed anyway and does not affect further implementation.
>>>>>> 
>>>>>> - Alex
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Alexey Kuznetsov
>>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> Sergey Kozlov
>>> GridGain Systems
>>> www.gridgain.com
>>> 
>> 
> 
> 
> 
> -- 
> Sergey Kozlov
> GridGain Systems
> www.gridgain.com

Reply via email to