alexander pavlenko, senior java developer, "cassandra into"

Post on 24-Jan-2017

47 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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

top related