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 4287×

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ů

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.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í, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

24.8.2016 6:44 /Ondřej Čečák
Poslední týden CFP LinuxDays 2016; pokud byste rádi přednášeli na LinuxDays 2016 8. a 9. října v Praze, můžete svůj příspěvek přihlásit, následovat bude veřejné hlasování.
Přidat komentář

9.8.2016 22:56 /Petr Ježek
Zařazení souborového systému reiser4 do jádra 4.7 znamená konečně konec patchování jádra jen kvůli možnosti použít reiser4.
Přidat komentář

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

11.7.2016 16:53 /Redakce Linuxsoft.cz
Konference LinuxDays hledá přednášející. Přihlášky poběží do konce prázdnin, v září bude hlasování a program. Více na https://www.linuxdays.cz/2016/cfp/.
Přidat komentář

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ář

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

> Poslední diskuze

9.11.2016 7:42 / Mane
hardwood floor waxing

8.11.2016 13:38 / Mira
Konfigurace maldet na Centos serveru

2.11.2016 11:06 / Warlock
Odkaz v PHP

20.10.2016 0:13 / Jan Kuba
Re: Basic

19.9.2016 21:04 / Marek Schoř
Poděkování

Více ...

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