Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Tere kĂ”igile! Minu nimi on Nikolai Golov. Varem töötasin Avitos ja juhtisin kuus aastat Data Platformi, tegeledes kĂ”igi andmebaasidega: analĂŒĂŒtiliste (Vertica, ClickHouse), voogedastuse ning OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). Selle aja jooksul sain tuttavaks suure hulga andmebaasidega — igasuguste ja ebatavaliste ning nende mitte-standardsete kasutusjuhtumitega.

Praegu töötan ManyChats. Tegelikult on see idufirma — uus, ambitsioonikas ja kiiresti kasvav. Ja kui ma alles ettevĂ”ttesse tulin, tĂ”usis klassikaline kĂŒsimus: "Mida peaks noor idufirma praegu andmebaaside ja andmebaasisĂŒsteemide turult valima?".

Selles artiklis, mis pĂ”hineb minu ettekandel veebi festivalil RIT++2020, vastan sellele kĂŒsimusele. Ettekande videosilmus on saadaval YouTube.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Tuntud andmebaasid 2020. aastal

Aastal 2020 vaatasin ringi ja mĂ€rkasin kolme tĂŒĂŒpi andmebaase.

Esimene tĂŒĂŒp — klassikalised OLTP andmebaasid: PostgreSQL, SQL Server, Oracle, MySQL. Need on kirjutatud ammu, kuid on endiselt asjakohased, kuna on arendajate seas hĂ€sti tuntud.

Teine tĂŒĂŒp — andmebaasid 2000ndatest. Nad ĂŒritasid kĂ”rvale hiilida klassikalistest lahendustest, loobudes SQL-st, traditsioonilistest struktuuridest ja ACID-ist, lisades samas sisseehitatud jagamisfunktsioone ja muid atraktiivseid omadusi. NĂ€iteks Cassandra, MongoDB, Redis vĂ”i Tarantool. KĂ”ik need lahendused soovisid turule pakkuda midagi pĂ”himĂ”tteliselt uut ja leidsid oma nishi, kuna need osutusid teatud ĂŒlesannete puhul ÀÀrmiselt mugavaks. Nende andmebaase vĂ”ib nimetada katuseterminiks NOSQL.

«Nullaastad» on möödas, NOSQL andmebaasidega on harjutud, ja maailm, minu arvates, tegi jĂ€rgmise sammu — managed andmebaasid. Nende andmebaaside tuum on sama, mis klassikalistel OLTP andmebaasidel vĂ”i uutel NoSQL lahendustel. Kuid neil puudub vajadus DBA ja DevOps-i jĂ€rele ning nad töötavad hallatavates serverites pilves. Arendaja jaoks on see «lihtsalt andmebaas», mis kuskil töötab, ja nagu see serveris paigaldatud on, kes serverit seadistab ja seda uuendab, ei huvita kedagi.

NĂ€ited sellistest andmebaasidest:

  • AWS RDS — hallatav kattekiht PostgreSQL/i ĂŒle.
  • DynamoDB — AWS-i analoog dokumentide pĂ”hist andmebaasi, sarnane Redis-i ja MongoDB-ga.
  • Amazon Redshift — hallatav analĂŒĂŒtiline andmebaas.

PÔhjaks on need vanad andmebaasid, kuid proovitud hallatavas keskkonnas, ilma vajaduseta riistvaraga tegeleda.

MÀrkus. NÀidised on vÔetud AWS keskkonnast, kuid need on saadaval ka Microsoft Azure'is, Google Cloud'is vÔi Yandex.Cloud'is.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Mis selles uut on? 2020. aastal polnud sellest midagi uut.

Serverless kontseptsioon

TÔeliselt uus asi turul 2020. aastal on serverless vÔi serveriteta lahendused.

PĂŒĂŒan selgitada, mida see tĂ€hendab tavalise teenuse vĂ”i tagaplaanirakenduse nĂ€ite kaudu.
Tavalise tagaplaanirakenduse juurutamiseks ostame vÔi rentime serveri, kopeerime koodi sellele, avaldame vÀlisele endpoint'ile ja maksame regulaarselt renti, elektrit ja andmekeskuse teenuseid. See on standardne skeem.

Kas on vÔimalik kuidagi teisiti? Serveriteta teenustega on see vÔimalik.

Mis on selle lÀhenemise fookus: ei ole serverit, isegi mitte virtuaalse instantsi rendile vÔtmist pilves. Teenuse juurutamiseks kopeerime koodi (funktsioonid) repertuaari ja avaldame vÀlisele endpoint'ile. Edasi maksame lihtsalt iga selle funktsiooni kutsumise eest, tÀielikult ignoreerides riistvara, kus see tÀidetakse.

PĂŒĂŒan seda lĂ€henemist illustreerida piltide kaudu.
Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Klassikaline juurutamine. Meil on teenus, millel on teatud koormus. KĂ€ivitame kaks instantsi: fĂŒĂŒsilised serverid vĂ”i instantsid AWS-is. Nendele instantsidele suunatakse vĂ€lised pĂ€ringud, mida seal töödeldakse.

Nagu pildilt nĂ€ha, on serverid erinevalt Ă€ra kasutatud. Üks on kasutatud 100% ulatuses, seal on kaks pĂ€ringut, ja ĂŒks ainult 50% ulatuses — osaliselt seiskunud. Kui tuleb mitte kolm pĂ€ringut, vaid 30, siis kogu sĂŒsteem ei suuda koormust taluda ja hakkab aeglustuma.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Serverivaba juurutus. Serverivabas keskkonnas ei ole sellisel teenusel instantsid ega servereid. On mĂ”ningane kuumendatud ressursside hulk — vĂ€ikesed ettevalmistatud Docker-konteinerid koos funktsiooni koodiga. SĂŒsteem saab vĂ€lised pĂ€ringud ja igaĂŒhe jaoks serverivaba raamistik tĂ”stab vĂ€ikese konteineri koodiga: töötleb just selle pĂ€ringu ja lĂ”petab konteineri.

Üks pĂ€ring — ĂŒks kĂ€ivitatud konteiner, 1000 pĂ€ringut — 1000 konteinerit. Ja juurutamine raua serverites on juba pilveteenuse pakkuja töö. See on tĂ€ielikult peidetud serverivaba raamistikuga. Selle kontseptsiooni raames maksame iga vĂ€ljakutse eest. NĂ€iteks, kui tuleb ĂŒks vĂ€ljakutse pĂ€evas — maksame ĂŒhe vĂ€ljakutse eest, tuleb miljon minutis — maksame miljoni eest. VĂ”i sekundis, nii ka juhtub.

Serverivaba funktsiooni avaldamise kontseptsioon sobib stateeless teenusele. Aga kui vajate (state) statefull teenust, siis lisame teenusele andmebaasi. Sellisel juhul, kui jĂ”uame state'iga töötamiseni, kirjutab iga statefull funktsioon lihtsalt andmebaasi ja loeb sealt. Ja seejuures vĂ”ib olla ĂŒhe kolmest tĂŒĂŒbi andmebaasist, millest me artikli alguses rÀÀkisime.

Milline on kĂ”igi nende andmebaaside ĂŒldine piirang? See on pidevalt kasutatava pilve- vĂ”i riistvaraserveri (vĂ”i mitme serveri) kulud. Olgu need klassikalised andmebaasid vĂ”i hallatud, olgu DevOps ja administraator olemas vĂ”i mitte, maksame ikkagi 24/7 riistvara, elektri ja andmekeskuse ĂŒĂŒri eest. Kui meil on klassikaline andmebaas, maksame masteri ja slave'i eest. Kui meil on kĂ”rgelt koormatud jagatud andmebaas, maksame 10, 20 vĂ”i 30 serveri eest ning maksame pidevalt.

Pidevalt reserveeritud serverite olemasolu kulustruktuuris peeti varem vĂ€ltimatuks kurjuseks. Tavalistel andmebaasidel on ka muid raskusi, nagu ĂŒhenduste piirangud, skaleerimise piirangud ja geograafiline konsensus — neid saab teatud andmebaasides lahendada, kuid mitte kĂ”iki korraga ja mitte ideaalselt.

Serverless andmebaas — teooria

KĂŒsimus 2020. aastast: kas andmebaas vĂ”idakse ka serverless'iks muuta? KĂ”ik on kuulnud serverless'ist tagaplaanist ... aga proovime ka andmebaasi serverless'iks muuta?

See kĂ”lab kummaliselt, sest andmebaas on stateful teenus, mis ei sobi eriti serveriteta infrastruktuuri. Samuti on andmebaasi olek vĂ€ga suur: gigabaitidest, terabaitidest, kuni analĂŒĂŒsibaasides isegi petabaitideni. Sellist ei saa lihtsalt kergetesse Docker-konteineritesse tĂ”sta.

Teiselt poolt on peaaegu kÔik kaasaegsed andmebaasid tohutu hulga loogikast ja komponentidest: tehingud, konsistentsi tagamine, protseduurid, suhtelised sÔltuvused ja palju loogikat. Suure osa andmebaasi loogikast vajab suhteliselt vÀikest olekut. Gigabaitidest ja terabaitidest kasutatakse otse ainult vÀhest osa andmebaasi loogikast, mis on seotud pÀringute otse tÀitmisega.

Seega on idee, et kui osa loogikast lubab stateless tÀitmist, miks mitte jagada andmebaasi stateful ja stateless osadeks.

Serveriteta lahendused OLAP-i jaoks

Vaadakem, milline vÔiks vÀlja nÀha andmebaaside jagamine stateful ja stateless osadeks praktiliste nÀidete kaudu.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

NĂ€iteks meil on analĂŒĂŒsibaas: vĂ€lised andmed (punane silindril vasakul), ETL-protsess, mis laadib andmed andmebaasi, ja analĂŒĂŒtik, kes esitab andmebaasile SQL-kĂŒsitlusi. See on klassikaline andmehoidla töö skeem.

Selles skeemis, tinglikult, tĂ€idetakse ETL ĂŒks kord. Edasi tuleb pidevalt maksta serverite eest, kus andmebaas töötab, kuhu on ETL-iga andmeid laaditud, et oleks, kuhu kĂŒsitlusi esitada.

Vaatame alternatiivset lÀhenemist, mida rakendab AWS Athena Serverless andmebaas. Siin pole pidevalt mÀÀratud riistvara, millel andmed on salvestatud. Selle asemel:

  • Kasutaja esitab SQL-kĂŒsitluse Athendale. Athena optimeerija analĂŒĂŒsib SQL-kĂŒsitlust ja otsib metainformatsiooni (Metadata) salvestusest konkreetseid andmeid, mis on vajalikud kĂŒsitluse tĂ€itmiseks.
  • Optimeerija, tuginedes kogutud andmetele, laadib vajalikud andmed vĂ€lisest allikast ajutisse ladustamisse (ajutisse andmebaasi).
  • Ajutises ladustamises tĂ€idetakse kasutaja SQL-kĂŒsitlus, tulemused tagastatakse kasutajale.
  • Ajutine ladustamine tĂŒhjendatakse, ressursid vabastatakse.

Selles arhitektuuris maksame ainult kĂŒsitluse tĂ€itmise protsessi eest. Pole kĂŒsitlusi — pole kulusid.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

See on töömeetod, mis rakendub mitte ainult Athena Serverlessis, vaid ka Redshift Spectrumis (AWS-is).

Athena nĂ€ite pĂ”hjal on Serverless andmebaas tĂ”eliselt töödelda pĂ€ringuid, mis sisaldavad kĂŒmneid ja sadu terabaitide suuruseid andmeid. Sada terabaiti andmeid vajab sadu serveereid, kuid me ei pea nende eest maksma — me maksame pĂ€ringute eest. Iga pĂ€ringu kiirus on vĂ”rreldamatult madalam spetsialiseeritud analĂŒĂŒtiliste andmebaaside, nagu Vertica, seas, ent me ei maksa ka seisakute eest.

Selline andmebaas sobib haruldaste analĂŒĂŒtiliste ad-hoc pĂ€ringute jaoks. NĂ€iteks, kui otsustame spontaanselt kontrollida hĂŒpoteesi mĂ”ne hiiglasliku andmemahu kohta. Nendes olukordades sobib Athena ideaalselt. Regulaarsete pĂ€ringute puhul on see sĂŒsteem kallis. Sellisel juhul salvestage andmed mĂ”nes spetsialiseeritud lahenduses.

Serverless OLTP lahenduste jaoks

Eelnevas nĂ€ites kĂ€sitlesime OLAP-ĂŒlesandeid (analĂŒĂŒtilised). NĂŒĂŒd vaatleme OLTP-ĂŒlesandeid.

Esitame skaleeritavat PostgreSQL vĂ”i MySQL. Alustame tavalise hallatava PostgreSQL vĂ”i MySQL instantsi seadistamisega minimaalsete ressursside abil. Kui instantsile tuleb suurem koormus, ĂŒhendame tĂ€iendavad koopiad, millele jagame osa lugemisekoormusest. Kui pĂ€ringute ja koormuse ei ole, lĂŒlitame koopiad vĂ€lja. Esimene instants on meister ja ĂŒlejÀÀnud on koopiad.

Seda ideed ellu viib andmebaas nimega Aurora Serverless AWS. PĂ”himĂ”te on lihtne: vĂ€listest rakendustest tulevad pĂ€ringud vĂ”tab vastu proxy fleet. NĂ€ha koormuse suurenemist, eraldab ta arvutusressursse eelsoojendatud minimaalsetest instantsidest — ĂŒhendamine toimub maksimaalselt kiiresti. Instantside vĂ€ljalĂŒlitamine toimub samuti.

Aurora raames on mĂ”isted Aurora Capacity Unit, ACU. See on (tinglikult) instants (server). Iga konkreetselt ACU vĂ”ib olla meister vĂ”i orjand. Igal Capacity Unit'il on oma töömĂ€lu, protsessor ja minimaalne ketas. Seega on ĂŒks meister ja ĂŒlejÀÀnud on ainult lugemiseks mĂ”eldud koopiad.

Needlike töötavate Aurora mahtuvuse ĂŒksuste arv on kohandatav parameeter. Miinimum vĂ”ib olla ĂŒks vĂ”i null (siis andmebaas ei tööta, kui pĂ€ringuid pole).

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Kui andmebaas saab pĂ€ringud, tĂ”stab proxy fleet Aurora mahtuvuse ĂŒksusi, suurendades sĂŒsteemi tootmisressursse. Ressursside suurendamise ja vĂ€hendamise vĂ”imalus vĂ”imaldab sĂŒsteemil ressursse 'pöörlevat' — automaatselt vĂ€lja lĂŒlitada ĂŒksikud ACU-d (asendades need uutega) ja rakendada vĂ€lja lĂŒlitatud ressurssidele kĂ”ik aktuaalsed uuendused.

Aurora Serverless andmebaas suudab skaleerida lugemise koormust. Kuid selles ei ole dokumentatsioonis otseselt öeldud. VÔib tekkida tunne, et nad saavad tÔsta multi-masteri. Kuid mingit imet ei ole.

See andmeid sobivad hĂ€sti, et mitte investeerida suuri summasid sĂŒsteemidesse, mille kĂ€ttesaadavus on ettearvamatu. NĂ€iteks MVP vĂ”i turunduslike visiitkaartide loomisel ei oota me tavaliselt stabiilset koormust. Vastavalt sellele, kui juurdepÀÀs puudub, ei maksa me instantside eest. Kui ootamatult tekib koormus, nĂ€iteks pĂ€rast konverentsi vĂ”i reklaamikampaaniat, voolab suures koguses inimesi veebisaidile ja koormus tĂ”useb jĂ€rsult, siis Aurora Serverless vĂ”tab selle koormuse automaatselt ĂŒle ja kiiresti liidab vajalikke ressursse (ACU). PĂ€rast konverentsi unustatakse prototĂŒĂŒp ja serverid (ACU) kustutatakse, kulud langevad nulli — mugav.

See lahendus ei sobi stabiilsete kĂ”rge koormusega olukordade jaoks, kuna see ei oska skaleerida kirjutamiskoormust. KĂ”ik need ressursside ĂŒhendamised ja lahutamised toimuvad nn 'scale point'-i hetkel — ajal, mil andmebaasi ei hoia tehing ega ajutised tabelid. NĂ€iteks vĂ”ib scale point'i nĂ€dalas mitte toimuda, ja andmebaas töötab ĂŒhel ja samal ressursil ning ei suuda ei laieneda ega kokku tĂ”mbuda.

Minge pole, see on tavaline PostgreSQL. Kuid masinate lisamise ja eemaldamise protsess on osaliselt automatiseeritud.

Serverless disainiga

Aurora Serverless on vana andmebaas, ĂŒmber kirjutatud pilvetoetamiseks, et kasutada serverless lĂ€henemise eripĂ€ra. RÀÀgin nĂŒĂŒd andmebaasist, mis on algselt loodud pilve jaoks, serverless lĂ€henemist silmas pidades — Serverless-by-design. Seda arendati kohe, arvestamata, et see töötab fĂŒĂŒsilistel serveritel.

See andmebaas on nimega Snowflake. Selles on kolm olulist komponenti.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

Esimene on metaandmete plokk. See on kiire in-memory teenus, mis lahendab turvalisuse, metaandmete, tehingute ja pĂ€ringute optimeerimise kĂŒsimusi (vasakul illustratsioonil).

Teine plokk on hulk virtuaalseid arvutusklastreid arvutuste jaoks (illustratsioonil — rida siniseid ringe).

Kolmas plokk on andmete salvestamise sĂŒsteem S3 pĂ”hjal. S3 on AWS-is paisumatu objektipank, midagi nagu piiramatud Dropboxi lahendused ettevĂ”tetele.

Vaatame, kuidas Snowflake töötab, eeldades kĂŒlma kĂ€ivitust. See tĂ€hendab, et baas on olemas, andmed on laaditud, kuid töövalmiduse pĂ€ringud puuduvad. Seega, kui andmebaasile pĂ€ringuid ei ole, tĂ”stame kiire in-memory metadata teenuse (esimene plokk). Meil on ka S3 salvestus, kuhu on salvestatud tabeli andmed, jagatud nn mikropartiidesse. Lihtsuse huvides: kui tabelis on tehingud, siis mikropartiid on tehingute pĂ€evad. Iga pĂ€ev on eraldi mikropartii, eraldi fail. Ja kui andmebaas töötab sellises reĆŸiimis, maksate ainult andmete ocuparitud koha eest. Samuti on koha hind vĂ€ga madal (eriti arvestades suurt tihendust). Metadata teenus töötab pidevalt, kuid pĂ€ringute optimeerimiseks ei ole palju ressursse vaja, seega vĂ”ib teenust pidada tingimuslikult tasuta.

Kujutame nĂŒĂŒd ette, et meie andmebaasi tuli kasutaja ja esitas SQL pĂ€ringu. SQL pĂ€ring saadetakse kohe töötlemiseks metadata teenusele. Seega, pĂ€rast pĂ€ringu saamist analĂŒĂŒsib see teenus pĂ€ringut, saadaval olevaid andmeid, kasutaja Ă”igusi ja kui kĂ”ik on korras, koostab pĂ€ringutöötluse plaani.

SeejĂ€rel teenus kĂ€ivitab arvutusklötĆĄi. Arvutusklöts koosneb serveritest, mis teostavad arvutusi. See tĂ€hendab, et klöts vĂ”ib sisaldada 1 serverit, 2 serverit, 4, 8, 16, 32 — palju iganes soovite. Te esitate pĂ€ringu ja selle alusel algab koheselt klötsi kĂ€ivitamine. See tĂ”esti vĂ”tab sekundeid.

Teekonnal serverivabade andmebaaside suunas — kuidas ja miks

PĂ€rast klastrite kĂ€ivitamist hakkavad S3-st klastrisse kopeerima mikropartiid, mis on vajalikud just teie pĂ€ringu töötlemiseks. Oletame, et SQL-pĂ€ringu tĂ€itmiseks on vaja kahte partiid ĂŒhest tabelist ja ĂŒhte teiselt. Sellisel juhul kopeeritakse klastrisse vaid need kolm vajalikku partiid, mitte kĂ”ik tabelid tervikuna. Just seetĂ”ttu, et kĂ”ik asub ĂŒhes andmekeskuses ja on ĂŒhendatud vĂ€ga kiirete kanalitega, toimub kogu ĂŒlekandeprotsess vĂ€ga kiiresti: sekundi jooksul, harva — minutitega, kui tegemist ei ole mĂ”ningate tohutute pĂ€ringutega. Seega kopeeritakse mikropartiid arvutusklastrisse ja pĂ€rast selle lĂ”petamist tĂ€idetakse SQL-pĂ€ring selles arvutusklastris. Selle pĂ€ringu tulemuseks vĂ”ib olla ĂŒks rida, mitu rida vĂ”i tabel — need saadetakse kasutajale, et ta saaks need alla laadida, kuvada oma BI-otsingus vĂ”i muul moel kasutada.

Iga SQL pĂ€ring suudab mitte ainult arvutada aggregaatandmeid varasemalt laaditud andmetest, vaid ka laadida ja/vĂ”i luua uusi andmeid andmebaasis. See tĂ€hendab, et tegemist vĂ”ib olla pĂ€ringuga, mis nĂ€iteks sisestab teise tabelisse uusi kirjeid, mis toob kaasa uue pariti moodustumise arvutusklastris, mis omakorda salvestatakse automaatselt ĂŒhte S3 salvestusse.

Ülaltoodud stsenaarium, alates kasutaja sisenemisest kuni klastrite loomise, andmete laadimise, pĂ€ringute tĂ€itmise ja tulemuste saamiseni, arvestatakse virtuaalse arvutusklaastri, virtuaalse andmehoidla tunnitasu alusel. Tasu varieerub vastavalt AWS tsoonile ja klastrite suurusele, kuid keskmiselt on see paar dollarit tunnis. Neli masinat maksab kaks korda rohkem kui kaks masinat, kaheksa masinat maksab veel kaks korda rohkem. Saadaval on ka variandid 16 ja 32 masinat, olenevalt pĂ€ringute keerukusest. Kuid maksate ainult nende minutite eest, mil klaster tĂ”eliselt töötab, kuna pĂ€ringute puudumisel eemaldatakse kĂ€ed ja pĂ€rast 5-10 minutit ootamist (kohandatav parameeter) lĂŒlitub see ise vĂ€lja, vabastab ressursid ja muutub tasuta.

On tĂ€iesti reaalne stsenaarium, kus teete pĂ€ringu, klaster tĂ”useb, ĂŒtleme, minutiga, veel minut kalkuleerib, seejĂ€rel viis minutit vĂ€ljalĂŒlitamiseks, ja kokku maksate seitsme minuti töö eest, mitte kuude ja aastate eest.

Esimene stsenaarium kirjeldas Snowflake'i kasutamist ĂŒhe kasutaja variandina. NĂŒĂŒd kujutame ette, et kasutajaid on palju, mis on lĂ€hemal reaalsele stsenaariumile.

Oletame, et meil on palju analĂŒĂŒtikuid ja Tableau aruandeid, mis pidevalt pommitavad meie andmebaasi suure hulga lihtsate analĂŒĂŒtiliste SQL-pĂ€ringutega.

Lisaks eeldame, et meil on leidlikud and teadlased, kes pĂŒĂŒavad andmetega teha keerulisi asju, hallates kĂŒmneid terabaiti, analĂŒĂŒsides miljardeid ja triljoneid andmerekke.

Ülaltoodud kahe koormuse tĂŒĂŒbi jaoks vĂ”imaldab Snowflake tĂ”sta mitmeid sĂ”ltumatuid arvutusklastreid erineva jĂ”udlusega. Need arvutusklastrid töötavad iseseisvalt, kuid jagavad ĂŒhte ja sama kooskĂ”lastatud andmebaasi.

Palju lihtsate pĂ€ringute jaoks on vĂ”imalik luua 2-3 vĂ€ikest klastrit, igaĂŒhes umbes 2 seadet. Selline toimimine on teostatav ka automaatsete seadistuste kaudu. Toimimiseks vĂ”ite öelda: "Snowflake, tĂ”sta ĂŒles vĂ€ike klaster. Kui koormus sellele ĂŒletab teatud vÀÀrtuse, tĂ”sta ĂŒles sarnane teine vĂ”i kolmas klaster. Kui koormus hakkab langema, lĂŒlita liigne vĂ€lja." Nii tagate, et olenemata sellest, kui palju analĂŒĂŒtikuid tuleb ja alustab aruannete vaatamist, jĂ€tkub kĂ”igile piisavalt ressursse.

Kui aga analĂŒĂŒtikud magavad ja keegi ei vaata aruandeid, vĂ”ivad klastrid tĂ€ielikult vĂ€lja lĂŒlituda ning te lĂ”petate nende eest maksmise.

Raskete pĂ€ringute korral (andmete teadlased) vĂ”ite tĂ”sta ĂŒles ĂŒhe vĂ€ga suure klastrit, kus on tinglikult 32 seadet. Ka selle klastriga maksate ainult nende minutite ja tundide eest, mil teie tohutu pĂ€ring seal töötab.

Ülaltoodud vĂ”imalus vĂ”imaldab jagada klastreid mitte ainult kahe, vaid ka rohkemate koormustĂŒĂŒpide vahel (ETL, jĂ€lgimine, aruannete materialiseerimine,
).

Teeme kokkuvĂ”tte Snowflake'ist. Platvorm ĂŒhendab kauni idee ja toimiva rakenduse. Meie ManyChat'is kasutame Snowflake'i kĂ”igi olemasolevate andmete analĂŒĂŒsiks. Meil on klastreid mitte kolm, nagu nĂ€ites, vaid viiest kuni ĂŒheksast, erineva suurusega. Meil on kuue masinaga, kaheteist masinaga ja supervĂ€ikse ĂŒhe masinaga teatud ĂŒlesannete jaoks. Need jagavad koormust edukalt ja vĂ”imaldavad meil palju sÀÀsta.

Platvorm suudab edukalt skaleerida lugemis- ja kirjutamiskoormust. See on tohutu erinevus ja suur lĂ€bimurre vĂ”rreldes nĂ€iteks 'Aurora'ga, mis said vaid lugemisekoormust hoidma. Snowflake vĂ”imaldab nende arvutusklastrite abil skaleerida ka kirjutamiskoormust. Nagu ma mainisin, kasutatakse ManyChat's mitmeid klastreid, vĂ€ikseid ja supervĂ€ikseid klastreid, peamiselt ETL-ide jaoks, andmete laadimiseks. AnalĂŒĂŒtikud töötavad juba keskmistes klastrites, mis ei ole ETL-koormusest mĂ”jutatud, seega töötavad nad vĂ€ga kiiresti.

Seega sobib andmebaas hĂ€sti OLAP ĂŒlesannete jaoks. Kahjuks ei ole see siiski veel rakendatav OLTP koormustele. Esiteks on see kolonniline andmebaas, koos kĂ”ikide sellest tulenevate tagajĂ€rgedega. Teiseks, lĂ€henemine, kus tĂ”state iga pĂ€ringu korral vajadusel ĂŒles arvutusklastri ja voolutate sinna andmed, ei ole kahjuks OLTP koormuste jaoks piisavalt kiire. Sekundite ootamine OLAP ĂŒlesannete puhul on normaalne, aga OLTP koormuste puhul on see vastuvĂ”etamatu, pigem peaks olema 100 ms, veel parem — 10 ms.

KokkuvÔte

Serverless andmebaas on vĂ”imalik tĂ€nu andmebaasi jagamisele venituseta ja olekuga osadeks. Olete kindlasti mĂ€rganud, et kĂ”ikides toodud nĂ€idetes on olekuga osa — tinglikult öeldes, mikropartiide sĂ€ilitamine S3-s, samas kui venituseta on optimeerija, töö metaandmetega, turvakĂŒsimuste kĂ€sitlemine, mida saab tĂ”sta iseseisvate kergete venituseta teenustena.

SQL-pĂ€ringute tĂ€itmist vĂ”ib samuti mĂ”ista kui kerge olekuga teenuseid, mis vĂ”ivad ilmuda serverivabas reĆŸiimis, nagu Snowflake arvutusklastrid, laadides alla ainult vajalikud andmed, tehes pĂ€ringu ja "sammutades" end.

Serverless tootetase on nĂŒĂŒd saadaval ja töötab. Need serverless andmebaasid on juba valmis OLAP-ĂŒlesannete tĂ€itmiseks. Kahjuks kasutatakse neid OLTP-ĂŒlesannete jaoks
 teatud piirangutega, mis on keeruline teema. Ühest kĂŒljest on see miinus. Kuid teiselt poolt on see vĂ”imalus. VĂ”ib-olla leiab mĂ”ni lugeja viisi, kuidas teha OLTP-andmebaas tĂ€iesti serverless, ilma piiranguteta Aurora.

Loodan, et see oli teile huvitav. Serverless tuleviku nimel 🙂

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster