Co jsou vyhledávací tabulky v sql a k čemu se používají?


Nejlepší odpověď

Vyhledávací tabulky nejsou natolik „věcí SQL“, protože se používají v designu databáze. Obvykle se používají jako pomoc při normalizaci databáze u dat, která jsou relativně statická, jako jsou tabulky obsahující názvy zemí, států, měst atd.

Nejsem si jistý, jestli existuje v kontextu návrhu databáze formální akademická definice „vyhledávacích tabulek“, ale když o nich přemýšlím, obvykle myslím na tabulky s následujícími vlastnostmi:

  • Mají v sobě konfigurační nebo popisná data versus data týkající se jednotlivých událostí aplikace.
  • Jsou relativně malé vzhledem k tabulkám souvisejícím s událostmi.
  • Jsou insert-and- číst tabulky a pokud k nim dojde, jsou vzácné.
  • Spojení většinou začíná nebo končí v nich.
  • Často je považuji za analogii k „Dictionary“ in Algoritmy komprese slovníku .

Některé příklady vyhledávacích tabulek:

  • Konfigurační tabulky aplikací.
  • Geografické (jak je uvedeno výše) nebo jiné popisné tabulky s uch jako seznam prodejců a dodavatelů, tabulka katalogu produktů pro webový obchod atd.
  • Seznamy názvů strojů a vlastností hardwaru strojů pro aplikaci spravující datové centrum.
  • Seznam uživatelů a data uživatelského profilu (obrázek, popis uživatele atd.) Pro web. Věci jako naposledy navštívená stránka by \_byly ve vyhledávacích tabulkách.

Odpověď

Rychlost není ve skutečnosti hnacím faktorem přechodu na databázi NoSQL. Pokud vezmete databázi SQL a NoSQL vedle sebe a porovnáte jednoduché aktualizace a čtení z tabulky, obě by měly na tyto dotazy reagovat velmi rychle.

Klíčový rozdíl je v tom, že databáze NoSQL jsou navrženy speciálně pro zpracování jednoduchých nízkoúrovňové dotazy, umožňují získat, nastavit a možná i několik dalších jednoduchých věcí, jako jsou rozsahy nebo třídění. Velkou nevýhodou je, že se musíte rozhodnout, jak použijete data, která jste tam vložili, a předem navrhnout vhodné schéma, které vám umožní přístup k datům ve formátu, který požadujete.

SQL na druhou stranu, za předpokladu, že data, která zadáte, jsou správně denormalizována, dokáže zpracovat enormně složité dotazy. Nemusíte navrhovat schéma kolem konkrétního případu použití a má enormní flexibilitu dotazovacího jazyka, který dokáže vrátit libovolná data v jakémkoli formátu, aniž byste museli upravovat základní schéma.

Důvod, že SQL má tuto pověst pomalé, spočívá v tom, že zpracování složitého dotazu na velké datové sadě nevyhnutelně zabere čas, zatímco NoSQL jednoduše neposkytuje schopnost spouštět pomalé složité dotazy.

Neexistuje žádný důvod, proč jste nemohli použít databázi SQL přesně stejným způsobem jako databázi NoSQL. Vložte všechna svá data do velkých tabulek a použijte jen ty nejzákladnější dotazy. Pak by fungovalo velmi dobře vedle ekvivalentní databáze NoSQL, ale evidentně plýtvá většinou jeho nejužitečnějších funkcí. To je ve skutečnosti případ mnoha velkých databází SQL. Denormalizace se naruší a flexibilita se obětuje „optimalizaci“ pro konkrétní dotazy.

Existují však určité nevýhody SQL a za určitých okolností se tyto nevýhody stávají takovým problémem, že jsme ochotni obětovat flexibilitu, kterou poskytuje překonat je.

Zaprvé, nemá dobré měřítko vodorovně. Pokus o rozdělení dat mezi mnoho menších strojů, i když to není nemožné, může mít obrovský dopad na výkon. Velké databáze SQL mají tendenci běžet na vysoce výkonném, velmi nákladném hardwaru, který se snaží udržet odpovídající výkon, zatímco databáze NoSQL mají tendenci snadno a levně škálovat na libovolnou velikost jednoduše přidáním dalšího komoditního hardwaru do klastru.

Druhý a co je nejdůležitější, SQL není odolný vůči chybám. Ano, je možné replikovat vaše data na druhém zálohovacím stroji, ale pak zdvojnásobíte své náklady na specializovaný hardware s vysokým výkonem a tento hardware musí být ještě silnější, aby zvládl další zátěž jejich synchronizace. Porovnejte to například s clusterem Cassandra a můžete provozovat tucet menších počítačů s replikací dat, dokonce i rozložených do více datových center, pokud si přejete. Zátěž se distribuuje automaticky, aktualizace se vytlačují napříč klastrem a koncový uživatel si nevšimne ztráty jakéhokoli počítače.

To jsou skutečné důvody, proč byste si měli vybrat mezi těmito dvěma technologiemi. Pokud je vaše databáze dostatečně malá, aby se vešla na jeden počítač, a občasné prostoje při obnově ze zálohy nejsou problém, použijte SQL, výrazně to zjednoduší váš vývoj a bude mít flexibilitu přizpůsobit se, pokud se vaše potřeby změní. Pokud bude vaše datová sada obrovská, nebo máte přísné SLA, které chcete zasáhnout, přejděte na NoSQL. Kdekoli mezi tím musíte zavolat úsudek, ale mějte na paměti, že právě teď jsou velmi žádané dovednosti NoSQL.Možná by stálo za to jít tímto způsobem, jen abyste získali zkušenosti.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *