Difference between revisions of "Cassandra -NoSQL database"
(→Bevezető) |
(→Lekérdezések) |
||
Line 36: | Line 36: | ||
https://www.datastax.com/2012/01/getting-started-with-cassandra | https://www.datastax.com/2012/01/getting-started-with-cassandra | ||
+ | ==Keyspace és cluster== | ||
+ | <pre> | ||
+ | cqlsh:adam> DESCRIBE KEYSPACE adam; | ||
+ | |||
+ | CREATE KEYSPACE adam WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; | ||
+ | |||
+ | CREATE TABLE adam.emp ( | ||
+ | empid int PRIMARY KEY, | ||
+ | emp_dept text, | ||
+ | emp_first text, | ||
+ | emp_last text | ||
+ | ) WITH bloom_filter_fp_chance = 0.01 | ||
+ | AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} | ||
+ | AND comment = '' | ||
+ | AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} | ||
+ | AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} | ||
+ | AND crc_check_chance = 1.0 | ||
+ | AND dclocal_read_repair_chance = 0.1 | ||
+ | AND default_time_to_live = 0 | ||
+ | AND gc_grace_seconds = 864000 | ||
+ | AND max_index_interval = 2048 | ||
+ | AND memtable_flush_period_in_ms = 0 | ||
+ | AND min_index_interval = 128 | ||
+ | AND read_repair_chance = 0.0 | ||
+ | AND speculative_retry = '99PERCENTILE'; | ||
+ | |||
+ | cqlsh:adam> | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | ==Adatok== | ||
Adatbázis létrehozása: | Adatbázis létrehozása: |
Revision as of 19:25, 5 October 2018
Contents
Bevezető
A Cassandra ugyan úgy mint az RDBMS elkülönített adatbázisokat használ, és azon belül táblákat hozhatunk létre, amiben sorok és oszlopok vannak.
- Keyspace: ez felel meg egy adatbázisnak az RDBMS-ben, vagy egy Index-nek az Elasticsearch-ben
- Column families: egy tábla az adatbázisban, amihez sorok tartoznak. Azonban az oszlopok fajtája soronként eltérhet.
eventually consistent
Telepítés
# docker run --name cassandra -p 9042:9042 -d cassandra
A parancssori Cassandra kliens része a telepítőnek, a bin mappában ül. Ezért indítunk még egy cassandra konténert, és abból fogunk csatlakozni a "cassandra" nevű konténerhez a 9042-es porton.
# docker run -it --rm cassandra /bin/bash
Majd indítsuk el a cqlsh programot: cqlsh host port
root@0ce39e38988a:/# cqlsh 192.168.0.101 9042 Connected to Test Cluster at create keyspace dev [cqlsh 5.0.1 | Cassandra 3.11.3 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cqlsh>
INDEX vs Filter
Hatékonysági okokból alap esetben a Cassandra csak arra az oszlopra enged lekérdezni, amire van index.Csak akkor lehet index nélküli oszlopra hivatkozni a WHERE kifejezésben ha ezt implicit engedélyezzük az ALLOW FILTERING kulcsszóval a lezáró ; előtt. Ugyanis ha egy oszlopon nincs index, akkor a Cassandra az összes sort be fogja olvasni, és filterrel fogja kiválasztani WHERE-ben definiált mezőket. Milliós sorszám esetén ez már problémás lehet.
https://www.datastax.com/2012/01/getting-started-with-cassandra
Lekérdezések
https://www.datastax.com/2012/01/getting-started-with-cassandra
Keyspace és cluster
cqlsh:adam> DESCRIBE KEYSPACE adam; CREATE KEYSPACE adam WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true; CREATE TABLE adam.emp ( empid int PRIMARY KEY, emp_dept text, emp_first text, emp_last text ) WITH bloom_filter_fp_chance = 0.01 AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} AND comment = '' AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0 AND dclocal_read_repair_chance = 0.1 AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.0 AND speculative_retry = '99PERCENTILE'; cqlsh:adam>
Adatok
Adatbázis létrehozása:
cqlsh> create keyspace adam with replication = {'class':'SimpleStrategy','replication_factor':1};
Tábla létrehozása:
cqlsh> use adam; cqlsh:adam> create table emp (empid int primary key, emp_first varchar, emp_last varchar, emp_dept varchar);
Adat beszúrása:
cqlsh:adam> insert into emp (empid, emp_first, emp_last, emp_dept) values (1,'fred','smith','eng');
Lekérdezés index-ra:
cqlsh:adam> SELECT * FROM adam.emp; empid | emp_dept | emp_first | emp_last -------+----------+-----------+---------- 1 | eng | fred | smith 2 | eng | fred | smith
Lekérdezés filterrel:
cqlsh:adam> SELECT * FROM adam.emp WHERE emp_last = 'smith' ALLOW FILTERING; empid | emp_dept | emp_first | emp_last -------+----------+-----------+---------- 1 | eng | fred | smith 2 | eng | fred | smith
Adatbázis GUI
Sokféle grafikus eszközzel csatlakozhatunk a Cassandra adatbázishoz. A legtöbben a RazorSQL-t ajánlották, ami fizetős: https://razorsql.com/