Výhody a nevýhody různých datových formátů: klíč-hodnota vs n-tice

Jak jsou data formátována pod kapotou

Foto Franki Chamaki na Unsplash

Práce na Vasern (klientská databáze pro React Native) mi poskytla příležitost vyzkoušet různé formáty dat, které zahrnují klíč-hodnota, sloupec, dokument a n-tice. Každý formát byl navržen tak, aby vyhovoval různým scénářům.

Kritéria těchto testů se zaměřují na výkon, schopnost vyhledávat hodnoty a efektivitu prostoru. Kromě toho není nutné mít na disku tříděné klíče a indexy. Budou načteny do paměti pro rychlé vyhledávání.

V tomto příspěvku shrnu výhody a nevýhody dvou běžných formátů: klíč-hodnota a formát n-tice. Také představím označené klíče a hodnoty, což je rozšíření párů a hodnot s vyhledáváním indexů, které těží z formátu n-tic.

Obchod klíč-hodnota

Kolekce úložiště klíč-hodnota

Klíč-hodnoty ukládají kolekci párů klíč-hodnota, kde hodnota někdy představuje více než jednu hodnotu, oddělenou oddělovači (tj. Čárkou). Tyto páry jsou uspořádány do bloků s pevnou délkou (pro rychlý posuv mezi záznamy).

Příklad rozložení úložiště klíč-hodnota s jedním blokem („\ 0“ představuje hodnotu null / empty)

Výhody úložiště klíč-hodnota:

  • Díky jednoduchému formátu dat jsou operace zápisu a čtení rychlé
  • Hodnota může být cokoli, včetně JSON, flexibilních schémat

Nevýhody:

  • Optimalizováno pouze pro data s jediným klíčem a hodnotou. K uložení více hodnot je vyžadován analyzátor.
  • Není optimalizováno pro vyhledávání. Hledání vyžaduje skenování celé kolekce nebo vytvoření samostatných hodnot indexu

Úložiště dat Tuples (RDBMS)

Formát dat n-tic existuje již mnoho desetiletí. Používá se v relačních databázích, jako je MySQL, Postgres atd.

Příklad formátu dat n-tic v relační databázi

Na rozdíl od formátu klíč-hodnota spoléhá na předdefinované schéma k uspořádání záznamů do řádků a jejich hodnot ve sloupcích s pevnou délkou. Každá hodnota pouze / obvykle představuje jednu informaci.

Výhody ukládání dat n-tice:

  • Strukturovaný datový formát pomáhá rychle procházet hodnotami záznamů
  • Optimalizováno pro vyhledávání (běžné použití SQL pro záznamy dotazování)

Nevýhody:

  • Omezeno strukturou schématu
  • Změna schématu obvykle vyžaduje přepsání celé databáze

Označené úložiště klíč-hodnota

Uhmm, TKVF (formát s hodnotou klíče se značkou)

Tagged Key-Value je rozšířená verze úložiště Key-Value - má více než jeden klíč pro jednu hodnotu. Jinými slovy, pro každý záznam má klíč, indexy (nebo značky) a tělesnou hodnotu. Kde:

  • Klíč a indexy budou při spuštění načteny do paměti
  • Hodnota těla může být cokoli z prostého řetězce, BSON / JSON nebo hodnoty oddělené čárkami.

Výhody úložiště Tagged Key-Value:

  • Polostrukturovaný, což pomáhá rychle procházet záznamy a indexy
  • Optimalizováno pro vyhledávání (pomocí klíčů a indexů)
  • Tělo záznamu může být cokoli, ideální pro flexibilní schémata
  • Efektivita prostoru (klíč, indexy jsou uspořádány v těsných sloupcích)

Nevýhody:

  • Změna schématu, která zahrnuje indexy, může vyžadovat migraci dat
Příklad formátu hodnoty značkovaného klíče

Vasern s označeným klíčovým obchodem

Vasern je databáze klientů pro React Native. Nejnovější verze byla vydána pod beta verzí pro testování a používá úložiště klíč-hodnota.

V nadcházející verzi 0.3.0-RC se Vasern přepíná na rozvržení úložiště označeného klíčem a hodnotou. Důraz je kladen na jeho výkonnou funkci vyhledávání a efektivitu prostoru.

Níže je ukázkový dotaz. Je to krásné, že?

Ukázka Vasernova dotazu

Závěr

Existuje mnoho databází s různými datovými formáty, které si můžete vybrat pro aplikaci. Dva běžné formáty jsou:

  • Páry klíč-hodnota - rychlé čtení a zápis, ale nejsou optimalizovány pro vyhledávání. Často se používá jako jednoduché ukládání dat, NoSQL.
  • Tuples - podporují hodnoty více typů, indexy, optimalizované pro vyhledávání, ale nedostatek flexibility schématu. Běžně se používá pro relační databáze.

Kombinováním výše uvedených silných stránek je formát tagged-key-Values ​​flexibilní s datovým schématem a je schopen vyhledávat záznamy pomocí klíčů a indexů. To je často vhodnější pro klientskou databázi.

Pokud vám tento článek připadá užitečný, několikrát klikněte na tlačítko to, abyste ostatním pomohli tento článek najít a ukázat svou podporu!

Děkuji za přečtení!