Hello!

You can't really check it from SQL when it works, but you can compare it
with non-collocated requests:

0: jdbc:ignite:thin://localhost> select * from City c join Country cc on
cc.Code = c.CountryCode;
ID           101
NAME         Mumbai
COUNTRYCODE  IND
DISTRICT     NA
POPULATION   0
CODE         IND
NAME         India
CONTINENT    Asia
REGION       Asia
SURFACEAREA  0.0
POPULATION   0
CAPITAL      0

ID           102
NAME         Moscow
COUNTRYCODE  RU
DISTRICT     NA
POPULATION   0
CODE         RU
NAME         Rusia
CONTINENT    Rusia
REGION       Rusia
SURFACEAREA  0.0
POPULATION   0
CAPITAL      0

2 rows selected (0,021 seconds)

but

0: jdbc:ignite:thin://localhost> select * from City c join Country cc on
cc.Code != c.CountryCode;
No rows selected (0,013 seconds)

You would expect that latter query will return two rows as former, but it
returns zero since in former case data is collocated and in latter it's not.

Regards,
-- 
Ilya Kasnacheev


ср, 13 мар. 2019 г. в 13:13, NileshKhaire <[email protected]>:

> I am trying to collocate data based on SQL given in this link
>
> https://ignite.apache.org/features/collocatedprocessing.html .
>
> I have created 2 caches 'Country' and 'City' using following SQLs.
>
> -- Cache Country
> CREATE TABLE Country (
> Code CHAR(3),
> Name CHAR(52),
> Continent CHAR(50),
> Region CHAR(26),
> SurfaceArea DECIMAL(10,2),
> Population INT(11),
> Capital INT(11),
> PRIMARY KEY (Code)) WITH "template=partitioned, backups=1";
>
> --Cache City
> CREATE TABLE City (
> ID INT(11),
> Name CHAR(35),
> CountryCode CHAR(3),
> District CHAR(20),
> Population INT(11),
> PRIMARY KEY (ID, CountryCode)
> ) WITH "template=partitioned, backups=1, affinityKey=CountryCode";
>
> I have inserted some sample records, for example :
>
> insert into Country values('RU','Rusia','Rusia','Rusia',0.0,00,0);
> insert into Country values('IND','India','Asia','Asia',0.0,00,0);
>
>
> insert into City values(101,'Mumbai','IND','NA',00);
> insert into City values(102,'Moscow','RU','NA',00);
>
> I have started 2 ignite(on different machines) node to collocate data on
> different nodes. After finding records presents on node 0 through visor
>
> cache -scan -c=@c0 -id8=@n0
>
> I can see both cities Mumbai and Moscow are present on node 0 (n0) as well
> as on node 1. I was expecting that cities of India will be collocated on
> node 0 and cities of Rusia will collocated on node 1 but not both on the
> same node.
>
> My questions are :
>
> 1. I am doing anything wrong while collocating the data .
> 2. Running visor cache -scan command is correct way to find collocated data
> on nodes ?
> 3. If this is not correct way then, how can we find which data is
> collocated
> on node 0 and node 1 ?
> 4. Let's say data is collocated on node 0 (cities of India) and node 1
> (cities on Russia) . What will happen if one of the node will be
> disconnected from cluster ? Will there be a data loss ? After restarting
> the
> node, Will data be collocated again ?
>
> Thank you in Advance.
>
> PS : I have already asked this question on stack overflow but didn't get
> answer
>
> https://stackoverflow.com/questions/55100844/finding-collocated-data-in-ignite
> <
> https://stackoverflow.com/questions/55100844/finding-collocated-data-in-ignite>
>
>
> I have already tried collocated=true and local=true approaches . I also
> tried to remove backups=1 flag from SQL query , starting 3rd node but
> nothing is working.  Hope I will get answer here :)
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>

Reply via email to