← l-artikli kollha

Databases

SQL jew NoSQL? Kif Naħseb dwar l-Għażla

Il-mistoqsija mhix liema database hija aħjar. Hija jekk nafx il-patterns tal-aċċess tiegħi minn qabel, u jekk id-dejta għandhiex relazzjonijiet li neħtieġ li d-database innifisha tipproteġi.

SQL jew NoSQL? Kif Naħseb dwar l-Għażla

Għal żmien twil ħsibt li din kienet mistoqsija dwar l-iskala: SQL għal apps normali, NoSQL ladarba ssir kbir. Din mhix verament il-verità. Iż-żewġ proġetti fejn verament għamilt din l-għażla deliberatament għallmuni li hija dwar xi ħaġa kompletament differenti.

Il-mistoqsija li verament nistaqsi l-ewwel

Naf kif din id-dejta tinqara qabel niddisinjaha?

Dan jinstema' lura, peress li f'SQL tiddisinja l-iskema madwar id-dejta u mbagħad tagħmel il-query kif teħtieġ aktar tard. Dik il-flessibbiltà hija l-punt kollu ta' database relazzjonali, u għalhekk hija d-default it-tajjeb meta għadni ma nafx kull mod li d-dejta se tintuża.

NoSQL l-aktar jinverti dan. Tiddisinja madwar il-queries li se tħaddem, u l-forma tal-ħażna ssegwi mill-pattern tal-aċċess.

Fejn dan għamel id-deċiżjoni għalija

L-URL shortener li bnejt huwa l-eżempju l-aktar ċar. Jagħmel biss ħaġa waħda dejjem: mogħti kodiċi qasir, irritorna l-URL oriġinali. Lookup wieħed, b'key wieħed, għal dejjem. L-ebda joins, l-ebda queries ta' rappurtar, l-ebda "urini l-URLs kollha maħluqa nhar it-Tlieta li għadda mqassma skont domain."

Dak huwa pattern ta' aċċess li kont naf kompletament qabel ma ktibt linja ta' kodiċi, li huwa eżatt il-każ fejn Cassandra tagħmel sens. Hija mibnija għal lookups b'key u tifrex id-dejta fost in-nodi hekk kif tikber.

Il-payment orchestrator mar id-direzzjoni l-oħra, fuq SQL, u r-raġuni ma kinitx l-iskala lanqas. Pagament għandu tentattivi, u flags ta' frodi, u dawk ir-relazzjonijiet jeħtieġu jiġu infurzati. Tentattiv li jirreferi għal pagament li ma jeżistix huwa dejta korrotta, u rrid li d-database tiċħdu minflok tafda l-kodiċi tiegħi li qatt ma jagħmel dak l-iżball.

Ir-relazzjonijiet u t-transazzjonijiet huma l-linja reali ta' diviżjoni

Dak l-eżempju tal-pagament huwa l-verżjoni ġenerali. Meta l-korrettezza tad-dejta tiegħi tiddependi fuq diversi rows jinbidlu flimkien jew xejn minnhom, database relazzjonali jagħtini dik il-garanzija direttament.

Il-każ tat-trasferiment tal-flus huwa dak ovvju, fejn li tiddebita kont wieħed u tikkredita ieħor jridu t-tnejn jirnexxu jew it-tnejn jfallu. Iżda huwa aktar komuni minn hekk. Li toħloq ordni u l-line items tiegħu, taġġorna pagament u tirreġistra t-tentattiv li biddlu. Kull fejn "nofs dan ġara" huwa stat mhux aċċettabbli, it-transazzjonijiet qed jagħmlu xogħol reali għalija.

Il-foreign keys huma l-istess idea applikata għar-relazzjonijiet. Id-database tirrifjuta li tħalliani noħloq orfni, għalhekk dik il-klassi kollha ta' bug qatt ma tilħaq il-produzzjoni irrispettivament minn x'jagħmel il-kodiċi tal-applikazzjoni tiegħi.

Fejn verament kont nersaq lejn NoSQL

Ftit każi fejn naħseb li hija ċarament tajba, lil hinn minn dak tal-lookup b'key:

Dejta mingħajr forma fissa, fejn rekords differenti leġittimament għandhom oqsma differenti u li tġagħalhom f'kolonni tfisser jew tabella wiesgħa ħafna mimlija nulls jew munzell ta' tabelli kważi vojta konnessi.

Volum ta' kitba għoli ħafna fejn il-kitbiet huma indipendenti minn xulxin, bħal event logs jew telemetrija, fejn xejn m'għandu bżonn ikun konsistenti ma' xejn ieħor fil-mument li jinkiteb.

Caching, li hija verament ħaġa separata iżda toqgħod fl-istess familja. Redis quddiem l-URL shortener mhix għażla ta' database, hija saff li jżomm dejta "sħuna" li d-database attwali għandha wkoll.

X'kont ngħid lili nnifsi sena ilu

Default għal SQL. Mhux għax hija aħjar, iżda għax hija dik li ma teħtieġx tkun korrett dwar il-patterns tal-aċċess tiegħek minn qabel, u bħala junior developer fuq proġett ġdid normalment m'iniex.

Ersaq lejn NoSQL meta tista' ssemmi r-raġuni speċifika. "Tiskala aħjar" mhix raġuni, peress li database relazzjonali fuq server normali tittratta ħafna aktar traffiku milli l-biċċa l-kbira tal-proġetti qatt jaraw. "Dan huwa lookup wieħed b'key wieħed u neħtieġu mifrux fost in-nodi" hija raġuni. "Dawn ir-rekords verament ma jaqsmux forma" hija raġuni.

L-iżball li kont nagħmel mingħajr ma nibni t-tnejn huwa li nassumi li l-għażla hija dwar id-daqs. Hija dwar jekk nafx il-patterns tal-aċċess minn qabel, u jekk id-dejta għandhiex relazzjonijiet li rrid li d-database innifisha tipproteġi.