Alexander Pavlenko, Senior Java Developer, "Cassandra into"
-
Upload
alina-vilk -
Category
Education
-
view
39 -
download
0
Transcript of Alexander Pavlenko, Senior Java Developer, "Cassandra into"
![Page 1: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/1.jpg)
Cassandra IntroductionBasic Cassandra operations overview
![Page 2: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/2.jpg)
Cassandra setup○ ~$ docker pull cassandra
○ ~$ docker run --name cassandra1 -d cassandra
○ ~$ docker run --name cassandra2 -d -e CASSANDRA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' cassandra1)" cassandra
○ ~$ docker run -it --name cqlsh --link cassandra1:cassandra --rm cassandra sh -c 'exec cqlsh "$CASSANDRA_PORT_9042_TCP_ADDR"'
https://www.docker.com https://hub.docker.com/_/cassandra/
![Page 3: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/3.jpg)
Cassandra setup (docker)
![Page 4: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/4.jpg)
Cassandra Query Language (CQL) is a query language for the Cassandra database. The Cassandra Query Language (CQL) is the primary language for communicating with the Cassandra database. The most basic way to interact with Cassandra is using the CQL shell, cqlsh.
CQL
![Page 5: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/5.jpg)
CREATE KEYSPACE DEMO WITH REPLICATION = { 'CLASS' : 'SIMPLESTRATEGY', 'REPLICATION_FACTOR' : 2 };
USE DEMO;
Create keyspace
![Page 6: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/6.jpg)
CREATE TABLE WHEATHER_FORECAST (SITE TEXT, SPECIES TEXT, MEASUREMENTDATE TIMESTAMP, LATITUDE DOUBLE, LONGITUDE DOUBLE, VALUE DOUBLE,
PRIMARY KEY((SITE, SPECIES), MEASUREMENTDATE)) ;
DESC WHEATHER_FORECAST;
Create Column Family
![Page 7: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/7.jpg)
Create Column Family
![Page 8: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/8.jpg)
INSERT INTO WHEATHER_FORECAST(SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM10', 1451628000000, 51.234, -0.846, 44.4);
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM10', 1451631600000, 51.234, -0.846, 41.7);
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM10', 1451635200000, 51.234, -0.846, 42.7);
Insert Data Rows
![Page 9: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/9.jpg)
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM10', 1451638800000, 51.234, -0.846, 38.5);
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM25', 1451639800000, 51.234, -0.846, 18.8);
Insert Data Rows
![Page 10: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/10.jpg)
SELECT * FROM WHEATHER_FORECAST;
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7'; //ERROR
SELECT * FROM WHEATHER_FORECAST WHERE SPECIES = 'PM10'; //ERROR
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES = 'PM10';
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES = 'PM10' AND MEASUREMENTDATE = 1451628000000;
Querying Data
![Page 11: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/11.jpg)
Querying Data
![Page 12: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/12.jpg)
○The Partition Key is responsible for data distribution across your nodes.
○The Clustering Key is responsible for data sorting within the partition.
○The Primary Key is equivalent to the Partition Key in a single-field-key table.
○The Composite/Compound Key is just a multiple-columns key
Keys & Clustering
CREATE TABLE WHEATHER_FORECAST ( SITE TEXT,SPECIES TEXT, MEASUREMENTDATE TIMESTAMP, LATITUDE DOUBLE,
LONGITUDE DOUBLE, VALUE DOUBLE, PRIMARY KEY ((SITE, SPECIES),
MEASUREMENTDATE))
Composite Partition Key
Clustering Key
![Page 13: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/13.jpg)
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES = 'PM10' AND LATITUDE = 51.234; //ERROR
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES = 'PM10' AND LATITUDE = 51.234 ALLOW FILTERING;
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES > 'PM10'; //ERRORSELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES IN ('PM10');
SELECT * FROM WHEATHER_FORECAST WHERE SITE = 'MY7' AND SPECIES IN ('PM10') AND MEASUREMENTDATE >= 1451628000000;
Querying Data
![Page 14: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/14.jpg)
SELECT MIN(SITE), MIN(SPECIES) FROM WHEATHER_FORECAST; //WARNING
SELECT MIN(SITE), MIN(SPECIES), MIN(MEASUREMENTDATE) FROM WHEATHER_FORECAST;
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE , VALUE) VALUES ('MY7', 'PM25', 1451639800000, 51.234, -0.846, 28.8); //UPSERT
Querying Data
![Page 15: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/15.jpg)
Querying Data
![Page 16: Alexander Pavlenko, Senior Java Developer, "Cassandra into"](https://reader036.fdocuments.in/reader036/viewer/2022062821/588778d71a28ab63208b46c5/html5/thumbnails/16.jpg)
INSERT INTO WHEATHER_FORECAST (SITE, SPECIES, MEASUREMENTDATE, LATITUDE , LONGITUDE, VALUE ) VALUES ('MY7', 'PM10', 1451616000000, 51.234, -0.846, 88.4) USING TTL 30;
Insert with TTL