Programovanie

Ako zvoliť správny typ databázy pre váš podnik

Existujú stovky technologicky náročných recenzií databáz, ktoré však nie vždy poskytujú jasný návod na prvý krok pri výbere databázy: výber najlepšieho všeobecného typu pre konkrétnu aplikáciu. Všetky databázy nie sú vytvorené rovnako. Každá z nich má konkrétne silné a slabé stránky. Aj keď je pravda, že existujú riešenia, ktoré umožňujú, aby obľúbená databáza fungovala pre väčšinu projektov, použitie týchto trikov pridáva zbytočnú zložitosť.

Pred zvážením konkrétnej databázy si nejaký čas rozmyslite, aký typ by najlepšie podporil daný projekt. Otázka ide hlbšie ako „SQL vs. NoSQL“. Prečítajte si základné informácie o najbežnejších typoch databáz, ich relatívnych výhodách a o tom, ako zistiť, ktorá z nich je najvhodnejšia.

Relačné systémy správy databáz (Oracle, MySQL, MS Server, PostgreSQL)

Relačné databázy boli vyvinuté v 70. rokoch 20. storočia s cieľom zvládnuť narastajúci príval produkovaných údajov. Majú pevnú základnú teóriu a ovplyvnili takmer každý databázový systém, ktorý sa dnes používa.

Relačné databázy ukladajú dátové súbory ako „vzťahy“: tabuľky s riadkami a stĺpcami, kde sú všetky informácie uložené ako hodnota konkrétnej bunky. Dáta v RDBMS sú spravované pomocou SQL. Aj keď existujú rôzne implementácie, SQL je štandardizovaný a poskytuje úroveň predvídateľnosti a užitočnosti.

Keď sa skorá záplava dodávateľov pokúsila využiť popularitu systému u nie celkom relačných produktov, autor E. F. Codd načrtol súbor pravidiel, ktoré musia dodržiavať všetky systémy správy relačných databáz. Coddových 12 pravidiel sa točí okolo zavedenia prísnych protokolov vnútornej štruktúry, zaistenia spoľahlivého vyhľadávania požadovaných údajov a zabránenia štrukturálnym zmenám (prinajmenšom zo strany používateľov). Rámec zabezpečil, aby boli relačné databázy konzistentné a spoľahlivé dodnes.

Silné stránky

Relačné databázy vynikajú v práci s vysoko štruktúrovanými údajmi a poskytujú podporu pre transakcie ACID (Atomicity, Consistency, Isolation a Durability). Dáta sa ľahko ukladajú a získavajú pomocou dotazov SQL. Štruktúru je možné rýchlo zväčšiť, pretože pridávanie údajov bez úpravy existujúcich údajov je jednoduché.

Vytváranie obmedzení k tomu, k čomu môžu určité typy používateľov pristupovať alebo upravovať, je zabudované do štruktúry RDBMS. Z tohto dôvodu sú relačné databázy vhodné pre aplikácie, ktoré vyžadujú viacúrovňový prístup. Zákazníci si napríklad mohli pozrieť svoje účty, zatiaľ čo agenti si mohli pozrieť aj vykonať potrebné zmeny.

Slabé stránky

Najväčšou slabinou relačných databáz je zrkadlo ich najväčšej sily. Akokoľvek dobre zvládajú štruktúrované dáta, s neštruktúrovanými dátami to majú ťažké. Reprezentácia subjektov reálneho sveta v kontexte je v medziach RDBMS zložitá. „Krájané“ údaje musia byť znova zostavené z tabuliek do niečoho čitateľnejšieho a rýchlosť môže byť negatívne ovplyvnená. Opravená schéma tiež na zmeny nereaguje dobre.

Cena je úvahou s relačnými databázami. Zvyčajne sú nákladnejšie na založenie a rast. Horizontálne škálovanie alebo škálovanie pridaním ďalších serverov je zvyčajne rýchlejšie a ekonomickejšie ako vertikálne škálovanie, ktoré zahŕňa pridanie ďalších zdrojov na server. Štruktúra relačných databáz však proces komplikuje. Na horizontálne zväčšenie relačnej databázy je potrebné rozdelenie (kde sú údaje horizontálne rozdelené a distribuované cez kolekciu strojov). Rozdelenie relačných databáz pri zachovaní súladu s ACID môže byť výzvou.

Relačnú databázu použite na:

  • Situácie, keď je integrita údajov úplne prvoradá (t. J. Pre finančné aplikácie, obranu a bezpečnosť a súkromné ​​zdravotné informácie)
  • Vysoko štruktúrované údaje
  • Automatizácia interných procesov

Sklad dokumentov (MongoDB, Couchbase)

Sklad dokumentov je nerelačná databáza, ktorá uchováva údaje v dokumentoch JSON, BSON alebo XML. Majú flexibilnú schému. Na rozdiel od databáz SQL, kde musia používatelia pred vložením údajov deklarovať schému tabuľky, obchody dokumentov nevynucujú štruktúru dokumentu. Dokumenty môžu obsahovať akékoľvek požadované údaje. Majú páry kľúč - hodnota, ale tiež vkladajú metadáta atribútov, aby uľahčili dopytovanie.

Silné stránky

Obchody s dokumentmi sú veľmi flexibilné. S pološtruktúrovanými a neštruktúrovanými údajmi narábajú dobre. Používatelia nemusia počas nastavovania vedieť, aké typy údajov sa budú ukladať, takže je to dobrá voľba, keď vopred nie je jasné, aký druh údajov bude prichádzať.

Používatelia môžu vytvoriť požadovanú štruktúru v konkrétnom dokumente bez ovplyvnenia všetkých dokumentov. Schéma sa dá upraviť bez toho, aby spôsobovala výpadky, čo vedie k vysokej dostupnosti. Rýchlosť zápisu je tiež všeobecne vysoká.

Okrem flexibility majú vývojári radi obchody s dokumentmi, pretože ich horizontálne zväčšenie je jednoduché. Rozdelenie potrebné pre horizontálne zmeny mierky je oveľa intuitívnejšie ako pri relačných databázach, takže obchody s dokumentmi sa rýchlo a efektívne zväčšujú.

Slabé stránky

Databázy dokumentov obetujú súlad s ACID kvôli flexibilite. Aj keď je možné dotazovať v dokumente, nie je to možné v dokumentoch.

Databázu dokumentov použite na:

  • Neštruktúrované alebo pološtruktúrované údaje
  • Obsahový management
  • Hĺbková analýza údajov
  • Rapídne prototypovanie

Úložisko kľúč - hodnota (Redis, Memcached)

Uloženie kľúča a hodnoty je typom nerelačnej databázy, kde je každá hodnota spojená s konkrétnym kľúčom. Je tiež známe ako asociatívne pole.

„Kľúč“ je jedinečný identifikátor spojený iba s hodnotou. Kľúče môžu byť čokoľvek, čo umožňuje systém DBMS. Napríklad v Redis môže byť kľúčom človek binárna sekvencia do 512 MB.

„Hodnoty“ sú uložené ako objekty blob a nepotrebujú preddefinovanú schému. Môžu mať takmer akúkoľvek formu: čísla, reťazce, počítadlá, JSON, XML, HTML, PHP, binárne súbory, obrázky, krátke videá, zoznamy a dokonca aj ďalší pár kľúč - hodnota zapuzdrený v objekte. Niektoré DBMS umožňujú špecifikovať dátový typ, ale nie je to povinné.

Silné stránky

Tento štýl databázy má veľa pozitív. Je neuveriteľne flexibilný a dokáže ľahko spracovať veľmi širokú škálu dátových typov. Klávesy sa používajú na prechod priamo na hodnotu bez indexového prehľadávania alebo pripájania, takže výkon je vysoký. Prenosnosť je ďalšou výhodou: obchody kľúč - hodnota je možné presúvať z jedného systému do druhého bez prepisovania kódu. Nakoniec sú vysoko horizontálne škálovateľné a celkovo majú nižšie prevádzkové náklady.

Slabé stránky

Flexibilita má svoju cenu. Nie je možné dopytovať hodnoty, pretože sú uložené ako blob a je možné ich vrátiť iba ako také. To sťažuje vykonávanie prehľadov alebo úpravu častí hodnôt. Nie všetky objekty sa dajú ľahko modelovať ako páry kľúč - hodnota.

Sklad kľúčov a hodnôt použite na:

  • Odporúčania
  • Profily používateľov a nastavenia
  • Neštruktúrované údaje, ako sú recenzie produktov alebo komentáre k blogom
  • Riadenie relácií v rozsahu
  • Údaje, ku ktorým sa bude pristupovať často, ale nie často sa aktualizujú

Obchod so širokým stĺpcom (Cassandra, HBase)

Úložiská so širokým stĺpcom, nazývané tiež stĺpcové úložiská alebo rozšíriteľné úložiská záznamov, sú dynamické stĺpcovo orientované nerelačné databázy. Niekedy sa považujú za typ úložiska kľúč - hodnota, ale majú tiež atribúty tradičných relačných databáz.

V obchodoch so širokým stĺpcom sa namiesto schém používa koncept kľúčového priestoru. Kľúčový priestor obsahuje rodiny stĺpcov (podobné tabuľkám, ale majú flexibilnejšiu štruktúru), z ktorých každý obsahuje viac riadkov s odlišnými stĺpcami. Každý riadok nemusí mať rovnaký počet alebo typ stĺpca. Časová pečiatka určuje najnovšiu verziu údajov.

Silné stránky

Tento typ databázy má niektoré výhody ako z relačných, tak z nerelačných databáz. Zaoberá sa lepšie ako štruktúrovanými, tak pološtruktúrovanými údajmi ako iné nepríbuzné databázy a je ľahšie sa aktualizovať. V porovnaní s relačnými databázami je horizontálne škálovateľnejšia a rýchlejšia.

Stĺpcové databázy sa komprimujú lepšie ako systémy založené na riadkoch. Tiež je ľahké preskúmať veľké súbory údajov. Obchody so širokým stĺpcom sú obzvlášť dobré napríklad pri agregačných dotazoch.

Slabé stránky

Písanie je v malom nákladné. Aj keď sa aktualizácia dá robiť hromadne, nahrávanie a aktualizácia jednotlivých záznamov je náročná. Navyše obchody so širokými stĺpcami sú pri spracovávaní transakcií pomalšie ako relačné databázy.

Obchod so širokými stĺpmi použite na:

  • Analýza veľkých dát, kde je dôležitá rýchlosť
  • Skladovanie dát o veľkých dátach
  • Veľké projekty (tento štýl databázy nie je dobrým nástrojom pre priemerné transakčné aplikácie)

Vyhľadávač (Elasticsearch)

Môže sa zdať čudné zahrnúť vyhľadávacie nástroje do článku o typoch databáz. Elasticsearch však zaznamenal v tejto sfére zvýšenú popularitu, pretože vývojári hľadajú inovatívne spôsoby, ako obmedziť oneskorenie vyhľadávania. Elastisearch je nerelačné dokumentové riešenie na ukladanie a načítanie údajov, ktoré je špeciálne usporiadané a optimalizované na ukladanie a rýchle načítanie údajov.

Silné stránky

Elastisearch je veľmi škálovateľný. Vyznačuje sa flexibilnou schémou a rýchlym načítaním záznamov s pokročilými možnosťami vyhľadávania vrátane fulltextového vyhľadávania, návrhov a komplexných výrazov vyhľadávania.

Jedna z najzaujímavejších funkcií vyhľadávania je ukončená. Stemming analyzuje koreňovú formu slova a vyhľadáva príslušné záznamy, aj keď sa použije iná forma. Napríklad používateľ, ktorý prehľadáva v databáze zamestnaní výraz „platiace práce“, by tiež našiel pozície označené ako „platené“ a „platiť“.

Slabé stránky

Elastisearch sa používa skôr ako sprostredkovateľský alebo doplnkový obchod ako primárna databáza. Má nízku životnosť a slabé zabezpečenie. Neexistuje vrodená autentifikácia ani kontrola prístupu. Elastisearch tiež nepodporuje transakcie.

Použite vyhľadávací nástroj ako Elastisearch na:

  • Zlepšenie používateľskej skúsenosti s rýchlejšími výsledkami vyhľadávania
  • Protokolovanie

Záverečné úvahy

Niektoré aplikácie zapadajú do silných stránok jedného konkrétneho typu databázy, ale pre väčšinu projektov sa prekrývajú dve alebo viac. V týchto prípadoch môže byť užitočné zistiť, ktoré konkrétne databázy v navrhovaných štýloch sú vhodnými kandidátmi. Predajcovia ponúkajú široké spektrum funkcií na prispôsobenie svojej databázy individuálnym štandardom. Niektoré z nich môžu pomôcť vyriešiť neistotu ohľadne faktorov, ako sú bezpečnosť, škálovateľnosť a náklady.

$config[zx-auto] not found$config[zx-overlay] not found