Changes

Jump to: navigation, search

Cassandra -NoSQL database

1,482 bytes added, 19:25, 15 October 2018
Clustering key
===Clustering key===
A Clustering key (csoportosító kulcs) 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 col1 text, state col2 text, city col3 text, store_name text, description col4 text, PRIMARY KEY (countrycol1, statecol2, city, store_namecol3)) WITH CLUSTERING ORDER BY (state col2 DESC, city ASC, store_name col3 ASC);
</pre>
A fenti példában a particionáló kulcs a col1 és a két Clustering (csoportosító) kulcs a col2 és col3. A col2 szerint visszafele, a col3 szerint előre rendezünk. Ha nem adjuk meg, akkor az előre rendezés az alapértelmezett.
 
 
{{note|A rendezés csak akkor értelmezett egy Clustering key alapján, ha a partitioning kulcsok megegyeznek két sorban, ahol a Clustering kulcsok különböznek. Tehát egy olyan adathalmazban, ahol a particionáló kulcsok értékkészlete unique, ott a Clustering kulcsoknak a sorok sorrendjére nincs hatása}}
 
A fenti példában, azokban a sorokban, ahol a '''col1''' megegyezik, a '''col2''' szerint lesznek visszafelé rendezve a sorok. És azokban a sorokban, ahol a '''col1''' és a '''col2''' is megegyezik, a '''col3''' szerint előre lesznek rendezve a sorok.
 
Pl. beszúrjuk ezeket az alábbi sorrendben:
col1=k1, col2=B, col3=B
col1=k1, col2=A, col3=Z
col1=k1, col2=C, col3=X
col1=k1, col2=B, col3=A
 
Akkor a végeredmény a következő lesz, ha lekérdezzük (így is van tárolva), mivel a partícion
col1=k1, col2=C, col3=X
col1=k1, col2=B, col3=A
col1=k1, col2=B, col3=B
col1=k1, col2=A, col3=Z
<br>
A sorrendezésen felül a clustering kulcsoknak a lekérdezés WHERE szekciójában van szerepe, mert felírhatunk rájuk '''>, >=, <, <=''' operációkat, amiket a particionáló kulcsokra nem írhatunk fel. (lást részletesen a [[Cassandra_-NoSQL_database#Lek.C3.A9rdez.C3.A9s_megk.C3.B6t.C3.A9sek|Lekérdezés megkötések]] című fejezetben.
==Időbélyegek és Time to Live==

Navigation menu