LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Cassandra DB - III.

Cassandra je de facto strukturované jméno-hodnota úložiště (key-value store). Dnešní díl seriálu popíše reprezentaci dat a základní terminologii Cassandry. Závěr dílu se věnuje ukládání dat do souborového systému.

5.8.2011 00:00 | František Bártík | Články autora | přečteno 4081×

Cassandra je čistě NoSQL databáze, jejíž návrh naprosto popírá principy SQL. Koncepty datového modelu se nepodobá relačnímu modelu v SQL. Proto pojmy z SQL terminologie nejsou analogické pojmům používaným v terminologii Cassandry. Stejné termíny (např. column) označují v SQL a Cassandře naprosto odlišné koncepty. Rovněž "dobré praktiky" reprezentace dat a práce s databází se v Cassandře a SQL databázích zásadně liší. Z těchto důvodů doporučuji čtenáři, aby se během čtení článku oprostil od svých znalostí SQL světa.

V případě Cassandry všeobecně akceptovaná česká terminologie neexistuje, proto budu používat vlastní překlady anglických termínů.

Datový model Cassandry

V prvním přiblížení lze uložená data chápat jako množinu uspořádaných pětic. Jednotlivé pozice v pětici budu nazývat keyspace, column family (CF), row (řádek), column (sloupec) a value (hodnota). Databáze obsahuje jednu funkci vracející keyspace podle jeho jména, keyspace je funkce zobrazující jména CF na CF, CF je funkce zobrazující jména řádků na řádky...

Tyto relace vždy tvoří strom. Jinými slovy změnou jedné hodnoty jsou vždy změněna data jen v právě jednom sloupci, právě jednom řádku, právě jedné CF a právě jednom keyspace. Tedy například různé řádky nemohou obsahovat stejný sloupec. Naproti tomu jména nemusí být v rámci celého stromu unikátní. Například různé řádky mohou obsahovat stejně pojmenované sloupce.

Jednotlivé pozice v pětici se odlišují svým významem.:

  • Keyspace zapouzdřuje data na nejvyšší úrovni. Například každé aplikaci můžeme vyhradit její vlastní keyspace.
  • Na další úrovni CF sdružuje všechna data stejného typu. V objektovém programování by konceptu CF odpovídaly definice tříd. Úroveň CF lze z mnoha důvodů chápat jako úplně základní strukturu v databázi Cassandra.
  • V analogii s objektovým programováním by úrovni řádků odpovídaly jednotlivé instance tříd.
  • Ve zmíněné analogii by jméno sloupce označovalo vlastnost/atribut/funkci objektu.
  • Nakonec hodnota reprezentuje uložené hodnoty. Kombinace keyspace, CF, řádek a sloupec jednoznačně určuje hodnotu

Jednotlivá keyspace a CF se musí explicitně založit. Později lze založená CF a keyspace zrušit. Keyspace a CF mají přiřazené různé atributy, jejichž nastavení je důležitou součástí návrhu databáze. Této problematice se bude seriál ještě věnovat. Jména řádků a sloupců nepodléhají žádnému dopředu navrženému schématu. Problematikou datových typů se rovněž bude zabývat až pokračování seriálu.

Různá doplnění datového modelu

Změna hloubky zobrazení

Datový model připouští snížení dimenze. Povoleny jsou "prázdné" keyspace, CF a řádky.

Někdy některé sloupce reprezentují související data a bylo by vhodné je sdružit do "rodičovského" sloupce. Pro tuto situaci umožňuje Cassandra nastavit u column family další dimenzi supersloupce. Vzniklá šestice se označuje jako keyspace, super column family (SCF), super row key (řádek), super columns (supersloupce), subcolumns (podsloupec) a value. Další zvyšování dimenze o "supersupersloupec" již není možné.

Časová razítka

Ke každému sloupci se přibaluje časové razítko timestamp, které odpovídá době vzniku záznamu. Hodnotu razítka může klient specifikovat při vkládání záznamu. Novější verze Cassandry zavádějí vedle časového razítka vzniku záznamu i antagonistické časové razítko zániku záznamu time to life (TTL). Po expiraci takto stanoveného intervalu se záznam automaticky považuje za smazaný. Nastavení razítek se hodí pro záznamy se známou dobou platnosti.

Sekundární indexy

Jméno řádku tvoří "primární index" pro přistupování ke sloupcům a na tento způsob vyhledávání je Cassandra optimalizováná. Kromě hledání podle primárního klíče zvládá Cassandra hledat i podle hodnoty výrazů stanovených z dat ve sloupcích. K optimalizaci takovýchto hledání novější verze Cassandry představily volitelné datové struktury tzv. sekundární indexy, které lze pro požadovaný výraz založit.

UUID

Pro předcházení kolizí jmen je nutné zunikátnit jména. Například typickou situací pro použití TimeUUID typu je loggovací aplikace, která řadí události podle času. Stejný klíč bez uuid be se snadno přiřadil více událostem.

Partitioner, komparátor a řazení

Algoritmus partitioner deterministicky převádí hodnotu klíče řádku na číslo, podle kterého databáze uspořádává řádky. Spočtené číslo je parametr replikační strategie, která z něj určuje, kam klíč "patří". Příkladem partitioneru je defaultní random partitioner, který spočítá MD5 hash a replikační strategie tak obdrží de facto (pseudo)náhodný parametr.

Volba komparátoru určuje řazení sloupců v řádku. Řazení supersloupců a podsloupců se může lišit. Supersloupce řadí komparátor a podsloupce subkomparátor.

V Cassandře se řazení neurčuje jednotlivými dotazy, ale řazení se definitivně zavádí již při návrhu modelu dat.

Práva

Cassandra podporuje přidělování uživatelských práv ro (pouze pro čtení) a rw (čtení a zápis) pro keyspace a column family. Základní metodou autentizace je zadání hesla. Nastavení práv určují konfigurační soubory instalace_cassandry/conf/acces.properties a instalace_cassandry/conf/passwd.properties.

Keyspace system

Zvláštním zabudovaný keyspace pojmenovaný system exportuje metainformace o databázi. Keyspace system není určený k ukládání uživatelských dat.

Ukládání dat na disk

Všech změny dat se nejprve zapisují do souboru s tzv. commit logem. Standardně se comit logy ukládají do adresáře /var/lib/cassandra/commitlog. Do memtablu jsou zpracovávány informace z comit logu. Tato datová struktura se nachází v operační paměti.

Do souborů ve formátu SSTable se přenáší data z memtable (flushing) při automatickém uvolňování paměti například po překročení limitní velikosti memtable. Flushing je neblokující operace. Vzniklé soubory jsou :

  • Soubor cesta/data/jméno_keyspace/jméno_CF-verze-Index.db obsahuje indexy.
  • Soubor cesta/data/jméno_keyspace/jméno_CF-verze-Data.db obsahuje hodnoty.
  • Soubor cesta/data/jméno_keyspace/jméno_CF-verze-Filtr.db ukládá asociovaný bloomův filtr.
Standardně je cesta nastavena na /var/lib/cassandra. Do vygenerovaných souborů ve formátu SSTable nelze přímo zapisovat.

Při procesu zkompaktnění (compaction) se do jedné nové SSTable slučují různé SSTable. Splnění nastavených podmínek automaticky spouští zkompaktnění, čímž se redukuje počet zpracovávaných SSTablů. K práci s SSTable slouží v předchozím dílu zmíněná utilita nodetool.

Data z SSTable umí exportovat do běžného JSON formátu mimo jiné utilita instalace_cassandry/bin/sstable2json. Import provádí utilita instalace_cassandry/bin/json2sstable.

Verze pro tisk

pridej.cz

 

DISKUZE

TTL 12.8.2011 16:38 Radim Kolář




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

8.5.2016 17:19 /Redakce Linuxsoft.cz
PR: Dne 26.5.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, cloudové služby, infrastruktura cloudu, efektivní využití cloudu, možné nástrahy cloudů a jak se jim vyhnout
Přidat komentář

21.4.2016 8:01 /František Kučera
Spolek OpenAlt zve na 127. distribuovaný sraz příznivců svobodného softwaru a otevřených technologií (hardware, 3D tisk, SDR, DIY, makers…), který se bude konat ve čtvrtek 28. dubna od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

2.3.2016 22:41 /Ondřej Čečák
Letošní ročník konference InstallFest již tento víkend!
Přidat komentář

14.2.2016 16:39 /Redakce Linuxsoft.cz
O víkendu 5. a 6. března 2016 proběhne na pražském Strahově 8. ročník tradiční konference InstallFest. Celkem za dva dny uvidíte ​30 přednášek​ a ​6 workshopů.
Přidat komentář

5.2.2016 17:38 /Petr Ježek
Utilitka z XFce "xfce4-power-manager" nejen umožňuje nastavení lhůty pro uspání či hybernaci, ale i zapínání a vypínání prezentačního módu pro nerušené sledování videí. Stačí ji nastavit v každém vybavenějším panelu a v jakémkoli nontiled WM/DE.
Přidat komentář

10.1.2016 11:32 /Pavel `Goldenfish' Kysilka
LinuxMarket změnil provozovatele. Nově jej provozuje Marek Pszczolka. Více info a detaily #1 a #2.
Přidat komentář

29.12.2015 11:38 /Ondřej Čečák
Ještě posledních pár dní můžete přidávat příspěvky nebo nápady na Install Fest 2016, který se bude konat 5. a 6. března 2016.
Přidat komentář

8.12.2015 11:36 /Petr Ježek
Logické se stává realitou. LibreOffice a Thunderbird se mají dle článku na Redditu stát protiváhou MS řešení (MS Office a Outlook).
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

10.6.2016 21:10 / pavel riha
FreeBSD 10.3 a virtualizace

8.6.2016 21:56 / Milan Gallas
Nevalidní prefix m

7.5.2016 14:58 / Teodor Komárek
Soubory

20.4.2016 0:07 / Jakub Cleing
Sázkový panel PHP FUSION

9.4.2016 9:43 / jiwopene@gmail.com
Re: problém s dpkg a nemožností instalovat

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2016) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze