Mitä hakutaulukot ovat sql: ssä ja mihin niitä käytetään?


Paras vastaus

Hakutaulukot eivät ole niin paljon ”SQL-juttuja” kuin niitä käytetään tietokannan suunnittelussa. Niitä käytetään yleensä auttamaan tietokannan normalisoinnissa suhteellisen staattisille tiedoille, kuten taulukoille, jotka sisältävät maiden, osavaltioiden, kaupunkien jne.

En ole varma, onko tietokannan suunnittelukontekstissa muodollinen akateeminen määritelmä ”hakutaulukoille”, mutta kun ajattelen niitä, ajattelen yleensä taulukoita, joilla on seuraavat ominaisuudet:

  • Niissä on määritys- tai kuvaustietoja verrattuna yksittäisiin sovellustapahtumiin.
  • Ne ovat pieniä verrattuna tapahtumiin liittyviin taulukoihin.
  • Ne ovat insert-and- lukea taulukoita, ja jos päivityksiä tapahtuu, ne ovat harvinaisia.
  • Liittymät alkavat tai loppuvat suurimmaksi osaksi niissä.
  • Ajattelen niitä usein analogisina ”Sanakirja” sanakirjan pakkausalgoritmeissa .

Joitakin esimerkkejä hakutaulukoista:

  • Sovelluksen määritystaulukot.
  • Maantieteelliset (kuten edellä mainittiin) tai muut kuvaavat taulukot kuten toimittajien ja toimittajien luettelo, verkkokaupan tuoteluettelotaulukko jne.
  • Luettelot konekeskuksia hallinnoivan sovelluksen konenimistä ja konelaitteiston ominaisuuksista.
  • Sivuston käyttäjäluettelo ja käyttäjäprofiilitiedot (kuva, käyttäjän kuvaus jne.). Sellaiset asiat kuin viimeksi vierailtu sivu \_ei olisi hakutaulukoissa.

Vastaus

Nopeus ei todellakaan ole tekijä siirtymisessä NoSQL-tietokantaan. Jos otat SQL- ja NoSQL-tietokannat vierekkäin ja verrataan yksinkertaisia ​​päivityksiä ja lukuja taulukosta, molempien tulisi vastata hyvin nopeasti tällaisiin kyselyihin.

Tärkein ero on, että NoSQL-tietokannat on suunniteltu nimenomaan käsittelemään yksinkertaisia matalan tason kyselyiden avulla voit saada, asettaa ja ehkä muutamia muita yksinkertaisia ​​asioita, kuten alueet tai lajittelu. Suuri haittapuoli on, että sinun on päätettävä, miten aiot käyttää sinne lisäämiäsi tietoja, ja suunnitella etukäteen sopiva malli, jonka avulla voit käyttää tietoja haluamassasi muodossa.

Toisaalta, SQL, jos lisäämäsi tiedot on denormalisoitu oikein, pystyy käsittelemään erittäin monimutkaisia ​​kyselyitä. Sinun ei tarvitse suunnitella mallia tietyn käyttötapasi ympärille, ja sillä on valtava joustavuus kyselykielellä, joka voi palauttaa minkä tahansa datan missä tahansa muodossa tarvitsematta muokata taustalla olevaa kaavaa.

Syy siihen, että SQL: llä on tämä maine hidastumisesta, että monimutkaisen kyselyn käsittely suuressa tietojoukossa vie väistämättä aikaa, kun taas NoSQL ei yksinkertaisesti tarjoa mahdollisuutta suorittaa hitaita monimutkaisia ​​kyselyjä.

Ei ole syystä et voinut käyttää SQL-tietokantaa täsmälleen samalla tavalla kuin NoSQL-tietokantaa. Laita kaikki tietosi isoihin taulukoihin ja käytä vain peruskyselyjä. Sitten se toimisi erittäin hyvin vastaavan NoSQL-tietokannan rinnalla, mutta ilmeisesti tuhlaa suurimman osan hyödyllisimmistä ominaisuuksista. Näin on itse asiassa monissa suurissa SQL-tietokannoissa. Denormalisointi rikkoutuu ja joustavuus uhrataan ”optimoimiseksi” tiettyihin kyselyihin.

SQL: llä on kuitenkin tiettyjä haittoja, ja joissakin olosuhteissa näistä haitoista tulee niin suuri ongelma, että olemme valmiita uhraamaan sen tarjoaman joustavuuden voittaa ne.

Ensinnäkin se ei skaalaa hyvin vaakasuunnassa. Yritettäessä jakaa tietoja monille pienemmille koneille, vaikka se ei ole mahdotonta, voi olla valtava vaikutus suorituskykyyn. Suurilla SQL-tietokannoilla on taipumus toimia suuritehoisilla, erittäin kalliilla laitteistoilla riittävän suorituskyvyn varmistamiseksi, kun taas NoSQL-tietokannoilla on taipumus skaalata helposti ja edullisesti mihin tahansa kokoon yksinkertaisesti lisäämällä ylimääräistä hyödykelaitteistoa klusteriin.

ja mikä tärkeintä, SQL ei ole vikasietoinen. Kyllä, on mahdollista kopioida tietosi toisella varmuuskopiokoneella, mutta tällöin kaksinkertaiset kustannukset suuritehoisille erikoislaitteille, ja laitteiston on oltava vielä tehokkaampi käsittelemään ylimääräistä kuormitusta pitääkseen itsensä synkronoituna. Vertaa sitä esimerkiksi Cassandra-klusteriin, ja voisit käyttää kymmenkunta pienempää konetta tietojen replikoinnilla, jopa haluttaessa useille konesaleille. Kuormitus jaetaan automaattisesti, päivitykset työnnetään ulos klusterista, eikä loppukäyttäjä huomaa minkään koneen katoamista.

Nämä kaksi ovat todellisia syitä, miksi sinun pitäisi valita kahden tekniikan välillä. Jos tietokanta on tarpeeksi pieni, jotta se mahtuu yhteen koneeseen, ja ajoittaiset seisokit, kun palautat varmuuskopiosta, ei ole ongelma, käytä SQL: ää, se yksinkertaistaa kehitystäsi huomattavasti ja sopeutuu joustavasti, jos tarpeesi muuttuvat. Se, että tietojoukko tulee olemaan valtava, tai sinulla on tiukkoja palvelutasosopimuksia, mene NoSQL: lle. Missä tahansa välissä sinun on tehtävä arvostelukutsu, mutta pidä mielessä, että NoSQL-taitoja on tällä hetkellä paljon.Se voi olla kannattavaa mennä tuolle vain kokemuksen saamiseksi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *