Я пытаюсь разместить данные на основе SQL, приведенного в этой ссылке https://ignite.apache.org/features/collocatedprocessing.html.
Я создал 2 кэша 'Country' и 'City', используя следующие SQL.
-- 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";
Я вставил несколько примеров записей, например:
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);
Я запустил 2 узла зажигания (на разных машинах) для размещения данных на разных узлах. После нахождения записи дается на узел 0 через визор
cache -scan -c=@c0 -id8=@n0
Я вижу, что оба города Мумбаи и Москва присутствуют на узле 0 (n0), а также на узле 1. Я ожидал, что города Индии будут расположены на узле 0, а города России будут расположены на узле 1, но не оба на одном узле.
Мои вопросы:
- Я делаю что-то не так при сопоставлении данных.
- Запуск команды visor cache -scan - верный способ найти расположенные данные на узлах?
- Если это не так, как мы можем найти, какие данные размещены на узле 0 и узле 1?
- Допустим, данные расположены в узле 0 (города Индии) и узле 1 (города в России). Что произойдет, если один из узлов будет отключен от кластера? Будет ли потеря данных? После перезапуска узла данные будут снова размещены?
Заранее спасибо.