Cassandra Sbírky: Set, List & Map v CQL s příkladem
⚡ Chytré shrnutí
Cassandra Kolekce ukládají několik hodnot v jednom sloupci pomocí typů set, list a map. Tato stránka vysvětluje každý typ, syntaxi CQL pro jejich vytváření a naplňování, jak aktualizovat prvky a omezení velikosti, která rozhodují o tom, kdy je kolekce špatnou volbou.

Jaké jsou Cassandra sbírky?
Cassandra kolekce jsou dobrým způsobem pro řešení úkolů. V kolekcích lze uložit více prvků. Existují omezení v Cassandra řadu.
- Sloupec kolekce nemůže v jedné hodnotě uložit více než 64 KB dat.
- Udržujte kolekci malou, abyste předešli režijním nákladům na dotazování kolekce, protože celá kolekce se čte, i když je potřeba pouze jeden prvek.
- Uložení více než 64 KB znamená, že lze dotazovat pouze prvních 64 KB, což má za následek ztrátu dat.
- Nezmrazená kolekce je omezena na zhruba 65 535 prvků a každý prvek je čten dohromady jako jedna jednotka.
Tato omezení poukazují na jedno pravidlo: kolekce vyhovují hrstce atributů připojených k řádku, nikoli otevřenému seznamu, který se s používáním rozrůstá. Všechno, co neustále roste, patří do shlukujících se sloupců vlastní tabulky.
Druhy Cassandra Kolekce
Existují především tři typy kolekcí, které Cassandra podporuje:
- sada
- Seznam
- Mapa
Cassandra Set Collection
Sada ukládá skupinu prvků, které při dotazování vrací seřazené prvky.
Syntax
Zde je syntaxe kolekce Set, která ukládá více e-mailových adres pro učitele.
CREATE TABLE University.Teacher ( id int, Name text, Email set<text>, PRIMARY KEY (id) );
Příklad
Zde je snímek, kde je vytvořena tabulka „Učitel“ se sloupcem „E-mail“ jako kolekcí.
Zde je snímek, kde jsou data vkládána do kolekce.
INSERT INTO University.Teacher (id, Name, Email) VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});
Jednotlivé prvky se přidávají nebo odebírají bez přepisování celé sady, což je hlavní výhoda ponechání kolekce nezmrazené.
UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1; UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;
Cassandra Kolekce seznamu
Pokud na pořadí prvků záleží, použije se seznam.
Příklad
Zde je snímek, kde je v tabulce „Učitel“ přidán sloupec kurzů typu seznam.
ALTER TABLE University.Teacher ADD coursenames list<text>;
Zde je snímek, kde jsou data vkládána do sloupce „názvy kurzů“.
INSERT INTO University.Teacher (id, Name, Email, coursenames) VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);
Zde je snímek, který ukazuje aktuální stav databáze po vložení.
Prvky lze přidávat nebo zařazovat, ačkoli zařazování a aktualizace indexem vyžadují Cassandra nejdříve si přečíst seznam, což je zpomaluje než přidávání.
UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2; UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;
Cassandra Sbírka map
Mapa je typ kolekce, který se používá k ukládání párů klíč-hodnota. Jak už název napovídá, mapuje jednu věc na druhou.
Chcete-li například uložit název kurzu s názvem požadovaného kurzu, lze použít kolekci map.
Příklad
Zde je snímek, kde je vytvořen typ mapy pro název kurzu a název jeho předpokladu.
CREATE TABLE University.Course ( id int, prereq map<text, text>, PRIMARY KEY (id) );
Zde je snímek, kde se vkládají data v typu kolekce map.
INSERT INTO University.Course (id, prereq) VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});
Jeden záznam se nastaví nebo odstraní, aniž by se dotkl zbytku mapy.
UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1; DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;
Sada vs. seznam vs. mapa: Výběr kolekce
Tyto tři typy vypadají zaměnitelné, ale liší se zárukami objednání a náklady na aktualizaci.
| Vzhled | sada | Seznam | Mapa |
|---|---|---|---|
| Řazení | Seřazeno podle hodnoty | Objednávka vložení zachována | Seřazeno podle klíče |
| Duplikáty | Není povoleno | Povoleno | Unikátní klíče |
| Aktualizovat cenu | Levné, není potřeba nic číst | Přidat levně; předřazení a aktualizace indexu vyžadují čtení | Levné za klíč |
| Nejlepší pro | Štítky, e-mailové adresy, unikátní štítky | Seřazené kroky, kde jsou duplikáty smysluplné | Pojmenované atributy s nepředvídatelnými klíči |
Upřednostňujte sadu před seznamem, pokud na pořadí skutečně nezáleží, protože operace s indexy seznamů vytvářejí náhrobky a mohou při souběžných zápisech vést k překvapivým výsledkům. zmrazené do kterékoli ze tří ukládá ji jako jednu neměnnou hodnotu, což umožňuje kolekci zobrazit se v primárním klíči, ale odstraňuje aktualizace na úrovni elementů.
CREATE TABLE University.Enrolment ( id int, tags frozen<set<text>>, PRIMARY KEY (id, tags) );
Pokud by kolekce překročila několik desítek prvků, modelujte ji jako samostatnou tabulku s prvkem jako shlukovacím sloupcem podle přístupu v Cassandra pravidla datového modeluFiltrování obsahu kolekce vyžaduje index, který je popsán v vytvořit a smazat index výukový program.






