alexander pavlenko, senior java developer, "cassandra into"
TRANSCRIPT
Cassandra IntroductionBasic Cassandra operations overview
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/
Cassandra setup (docker)
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
CREATE KEYSPACE DEMO WITH REPLICATION = { 'CLASS' : 'SIMPLESTRATEGY', 'REPLICATION_FACTOR' : 2 };
USE DEMO;
Create keyspace
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
Create Column Family
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
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
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
Querying Data
○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
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
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
Querying Data
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