Changes

Cassandra -NoSQL database

2,373 bytes added, 17:32, 7 October 2018
Adatszerkezet
* '''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.
* '''Partition''': Egy sor egy táblában * '''Clustering''': sorok sorba rendezése egy táblán belül (Semmi köze a Cassandra cluster-hez)
===Táblák felépítése (Column families)===
Cassandra-ban a node-ok egy gyűrűbe vannak szervezve. Minden egyes node-nak van egy egyedi azonosítója, egy 64 bites token. (from -2<sup>23</sup> to 2<sup>63</sup>-1)
Minden node azt a token tartományt tudja magáénak, ami kisebb vagy egyenlő mint az ő tokenje és nagyobb mint a gyűrűben az előző node tokenje.
 
 
Azt hogy egy partíció (sor) melyik node-on éli az életet (hova kell kiírni ill. honnan kell beolvasni) a particionáló dönti el a partion kulcsok alapján. Az alapértelmezett particionáló a '''Murmur3Partitioner''', ami mindig ugyan arra a 64 bites tokenre képzi le ugyan azt a '''partion ke'''y-t.
 
 
===Compound primary key===
A primary key-t mindig a tábla létrehozásakor kell megadni '''PRIMARY KEY''' kulcsszóval, aminek az argumentumában fel kell sorolni a kulcsokat.
<pre>
CREATE TABLE movies_by_year_genre (
year text,
genre text,
movie_name text
PRIMARY KEY (...)
);
</pre>
Az első kulcs a listában mindig a partition key, a további kulcsok típusa attól függ, hogy hogyan rakjuk a zárójeleket. Tetszőleges számú primary kulcsot és clustering kulcsot is megadhatunk (persze kizárólag a tábla oszlopainak az értékkészletéből válogatva, mindegyiket csak egyszer felhasználva):
 
* C1: Primary key has only one partition key and no cluster key.
* (C1, C2): C1 is partition key, C2 is cluster key.
* (C1, C2, C3, ...): C1 is partition key and all other i.e. C2, C3,... are cluster key.
* (C1, (C2, C3, ...)): C1 is partition key and all other i.e. C2, C3,... are cluster key.
* ((C1, C2, ...), (C3, C4, ...)): (C1, C2, ...) are partition key and (C3, C4,...) are cluster key.
 
 
Példa az utolsó sorra:
<pre>
CREATE TABLE movies_by_year_genre (
year text,
genre text,
movie_name text
PRIMARY KEY ((year, genre), movie_name)
);
</pre>
 
===Clustering key===
A Clustering key kizárólag egy táblán belül határozza meg a sorok sorrendjét. Ha a compound primary kulcsunk több clustering kulcsot is tartalmaz, akkor először a listában az leső alapján fog sorrendezni, aztán a második alapján, és így tovább. Megadhatjuk a rendezés irányát is. Fontos ezt már a tábla tervezésekor kitalálni, mert később ezt már nem tudjuk megváltoztatni.
 
A rendezés irányát a WITH CLUSTERING ORDER BY kulcsszóval adhatjuk meg:
<pre>
CREATE TABLE store_by_location (
country text,
state text,
city text,
store_name text,
description text,
PRIMARY KEY (country, state, city, store_name)
) WITH CLUSTERING ORDER BY (state DESC, city ASC, store_name ASC);
</pre>
=Telepítés=