Changes

Cassandra -NoSQL database

1,265 bytes added, 19:58, 15 October 2018
Kulcsok és indexek kezelése
</pre>
 
 
<br>
=Kulcsok és indexek kezelése=
==Kulcs használati alapelvek==
* Ugyan azt az azzal a primary kulccsal (partition és clustering kulcs együttvéve) egy INSERT-et többször is ki lehet adni, elsőre beszúrja, másodikra frissíti a sort, tehát átírja a nem kulcs mezőket a sorban az új értékre.  
</pre>
A fenti példa azért eredményez két sort, mert a Clustering kulcs értékében elérnek (col2mod). Ha a Clustering kulcs is azonos lenne, és csak col4-ben térnének el, akkor nem eredményezne új sor.
 
==Lekérdezés megkötések(Restriction)==
https://www.datastax.com/dev/blog/a-deep-look-to-the-cql-where-clause<br>
Itt a megkötés (restriction) szó azt jelenit, hogy egy kulcs szerepel e a WHERE ágban vagy sem. Ha igen, akkor az egy 'restricted' kulcs, ha nem szerepel, akkor az egy 'unrestricted' kulcs.
 
Példa tábla:
<pre>
CREATE TABLE adam.test1 (
col1 text,
col2 text,
col3 text,
col4 text,
PRIMARY KEY ((col1), col2, col3)
);
 
CREATE INDEX indexOnCol4 ON adam.test1 (col4);
</pre>
 
 
===Particionáló kulcsok + indexek===
Egy lekérdezésben vagy az összes particionáló kulcsot szerepeltetjük, vagy csak indexelt oszlopokat. Tehát két lehetőségünk van:<br>
1. csak a paritcionáló kulcs(ok):
SELECT * FROM adam.test1 WHERE col1 = 'k1'
(Persze ezt kiegészíthettük volna Clustering kulcsokkal)
 
2. csak az index:
SELECT * FROM adam.test1 WHERE col4 = 'C'
 
 
Alap esetben sem a particionáló kulcsokra, sem az indexekre nem használhatjuk a <, <=, >, >= operációkat, csak az =, IN.
{{warning|Az IN ('k1', 'k2',..) használata erősen ellenjavallott performancia okokból. }}
 
(A másodlagos indexre megengedett a <,> operáció, ha a SASI implementációt használjuk)
 
 
===Clustering kulcsok===
 
<br>