Ceļā uz bezserveru datubāzēm - kā un kāpēc

Sveiki visiem! Mani sauc Golovs Nikolajs. IepriekÅ” strādāju Avito un seÅ”us gadus vadÄ«ju datu platformu, tas ir, strādāju pie visām datu bāzēm: analÄ«tiskajām (Vertica, ClickHouse), straumÄ“Å”anas un OLTP (Redis, Tarantool, VoltDB, MongoDB, PostgreSQL). Å ajā laikā es nodarbojos ar ļoti daudzām datu bāzēm ā€“ ļoti dažādām un neparastām, un ar nestandarta to izmantoÅ”anas gadÄ«jumiem.

PaÅ”laik strādāju vietnē ManyChat. Pēc bÅ«tÄ«bas tas ir startup ā€“ jauns, ambiciozs un strauji augoÅ”s. Un, kad es pirmo reizi pievienojos uzņēmumam, radās klasisks jautājums: "Ko jaunam starta uzņēmumam tagad vajadzētu ņemt no DBVS un datu bāzu tirgus?"

Å ajā rakstā, pamatojoties uz manu ziņojumu plkst tieÅ”saistes festivāls RIT++2020, Es atbildÄ“Å”u uz Å”o jautājumu. Ziņojuma video versija ir pieejama vietnē YouTube.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

PlaŔi pazīstamās datu bāzes 2020

Ir 2020. gads, es paskatījos apkārt un ieraudzīju trīs veidu datu bāzes.

Pirmais veids - klasiskās OLTP datu bāzes: PostgreSQL, SQL Server, Oracle, MySQL. Tie tika uzrakstīti jau sen, taču joprojām ir aktuāli, jo izstrādātāju kopienai tie ir tik pazīstami.

Otrais veids ir bāzes no "nulles". Viņi mēģināja attālināties no klasiskajiem modeļiem, atsakoties no SQL, tradicionālajām struktÅ«rām un ACID, pievienojot iebÅ«vētu sadalÄ«Å”anu un citas pievilcÄ«gas funkcijas. Piemēram, tas ir Cassandra, MongoDB, Redis vai Tarantool. Visi Å”ie risinājumi vēlējās piedāvāt tirgum kaut ko principiāli jaunu un ieņēma savu niÅ”u, jo izrādÄ«jās ārkārtÄ«gi ērti noteiktu uzdevumu veikÅ”anai. Å Ä«s datu bāzes apzÄ«mÄ“Å”u ar jumta terminu NOSQL.

ā€œNullesā€ ir beiguŔās, mēs pieradām pie NOSQL datu bāzēm, un pasaule, no mana viedokļa, spēra nākamo soli - lai pārvaldÄ«tās datu bāzes. Å Ä«m datu bāzēm ir tāds pats kodols kā klasiskajām OLTP datu bāzēm vai jaunajām NoSQL datu bāzēm. Bet tiem nav nepiecieÅ”ama DBA un DevOps, un tie darbojas ar pārvaldÄ«tu aparatÅ«ru mākoņos. Izstrādātājam tā ir ā€œtikai bāzeā€, kas kaut kur darbojas, taču nevienam neinteresē, kā tā ir instalēta serverÄ«, kas konfigurēja serveri un kas to atjaunina.

Šādu datu bāzu piemēri:

  • AWS RDS ir pārvaldÄ«ts PostgreSQL/MySQL iesaiņojums.
  • DynamoDB ir AWS analogs dokumentiem balstÄ«tai datubāzei, lÄ«dzÄ«ga Redis un MongoDB.
  • Amazon Redshift ir pārvaldÄ«ta analÄ«tiskā datu bāze.

Tās pamatā ir vecas datu bāzes, bet izveidotas pārvaldÄ«tā vidē, bez nepiecieÅ”amÄ«bas strādāt ar aparatÅ«ru.

Piezīme. Piemēri ir ņemti par AWS vidi, taču to analogi pastāv arī Microsoft Azure, Google Cloud vai Yandex.Cloud.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Kas jauns par Å”o? 2020. gadā nekas no tā.

Koncepcija bez servera

Tas, kas patieŔām jauns tirgÅ« 2020. gadā, ir risinājumi bez servera vai bez servera.

MēģināŔu paskaidrot, ko tas nozÄ«mē, izmantojot parastā pakalpojuma vai aizmugurprogrammas piemēru.
Lai izvietotu parastu aizmugurprogrammu, mēs iegādājamies vai nomājam serveri, iekopējam tajā kodu, publicējam galapunktu ārpusē un regulāri maksājam par īri, elektrību un datu centra pakalpojumiem. Šī ir standarta shēma.

Vai ir kāds cits veids? Izmantojot pakalpojumus bez serveriem, jūs varat.

Kas ir Ŕīs pieejas uzmanÄ«bas centrā: nav servera, nav pat virtuālas instances nomas mākonÄ«. Lai izvietotu pakalpojumu, kopējiet kodu (funkcijas) repozitorijā un publicējiet to galapunktā. Tad mēs vienkārÅ”i maksājam par katru Ŕīs funkcijas izsaukumu, pilnÄ«bā ignorējot aparatÅ«ru, kurā tā tiek izpildÄ«ta.

MēģināŔu ilustrēt Å”o pieeju ar attēliem.
Ceļā uz bezserveru datubāzēm - kā un kāpēc

Klasiskā izvietoÅ”ana. Mums ir serviss ar noteiktu slodzi. Mēs izvirzām divus gadÄ«jumus: fiziskos serverus vai gadÄ«jumus AWS. Ārējie pieprasÄ«jumi tiek nosÅ«tÄ«ti uz Ŕīm instancēm un apstrādāti.

Kā redzams bildē, serveri netiek izmesti vienādi. Viens ir 100% izmantots, ir divi pieprasījumi, un viens ir tikai 50% - daļēji dīkstāvē. Ja pienāk nevis trīs pieprasījumi, bet 30, tad visa sistēma nespēs tikt galā ar slodzi un sāks palēnināties.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

IzvietoÅ”ana bez serveriem. Bez servera vidē Ŕādam pakalpojumam nav gadÄ«jumu vai serveru. Ir noteikts apsildāmo resursu kopums - mazi sagatavoti Docker konteineri ar izvietotu funkciju kodu. Sistēma saņem ārējos pieprasÄ«jumus, un katram no tiem bezservera ietvars izceļ nelielu konteineru ar kodu: apstrādā Å”o konkrēto pieprasÄ«jumu un nogalina konteineru.

Viens pieprasÄ«jums - viens konteiners pacelts, 1000 pieprasÄ«jumu - 1000 konteineri. Un izvietoÅ”ana aparatÅ«ras serveros jau ir mākoņpakalpojumu sniedzēja darbs. To pilnÄ«bā paslēpj bezserveru sistēma. Å ajā koncepcijā mēs maksājam par katru zvanu. Piemēram, dienā atnāca viens zvans ā€“ maksājām par vienu zvanu, miljons atnāca minÅ«tē ā€“ maksājām par miljonu. Vai arÄ« tas notiek sekundē.

Bezvalsts funkcijas publicÄ“Å”anas koncepcija ir piemērota bezvalsts pakalpojumam. Un, ja jums ir nepiecieÅ”ams (Å”tata) statusfull pakalpojums, mēs pakalpojumam pievienojam datu bāzi. Å ajā gadÄ«jumā, kad runa ir par darbu ar stāvokli, katra statusa pilnā funkcija vienkārÅ”i raksta un nolasa no datu bāzes. Turklāt no jebkura no trÄ«s raksta sākumā aprakstÄ«to veidu datu bāzes.

Kāds ir visu Å”o datu bāzu kopējais ierobežojums? Tās ir pastāvÄ«gi izmantota mākoņa vai aparatÅ«ras servera (vai vairāku serveru) izmaksas. NeatkarÄ«gi no tā, vai mēs izmantojam klasisku vai pārvaldÄ«tu datu bāzi, vai mums ir Devops un administrators vai nav, mēs joprojām maksājam par aparatÅ«ru, elektrÄ«bu un datu centra nomu 24 stundas diennaktÄ«. Ja mums ir klasiska bāze, mēs maksājam par saimnieku un vergu. Ja tā ir ļoti noslogota sadalÄ«ta datu bāze, mēs maksājam par 7, 10 vai 20 serveriem, un mēs maksājam pastāvÄ«gi.

PastāvÄ«gi rezervētu serveru klātbÅ«tne izmaksu struktÅ«rā iepriekÅ” tika uztverta kā nepiecieÅ”ams ļaunums. Tradicionālajām datu bāzēm ir arÄ« citas grÅ«tÄ«bas, piemēram, savienojumu skaita ierobežojumi, mērogoÅ”anas ierobežojumi, Ä£eogrāfiski sadalÄ«ta vienprātÄ«ba - tos var kaut kā atrisināt noteiktās datubāzēs, bet ne visas uzreiz un ne ideāli.

Bez serveru datubāze - teorija

2020. gada jautājums: vai ir iespējams datubāzi padarÄ«t arÄ« bez servera? Visi ir dzirdējuÅ”i par bezserveru aizmuguri... mēģināsim padarÄ«t datubāzi bez servera?

Tas izklausās dÄ«vaini, jo datu bāze ir pilnvērtÄ«gs pakalpojums, kas nav Ä«paÅ”i piemērots infrastruktÅ«rai bez serveriem. Tajā paŔā laikā datu bāzes stāvoklis ir ļoti liels: gigabaiti, terabaiti un analÄ«tiskajās datu bāzēs pat petabaiti. To nav tik vienkārÅ”i pacelt vieglos Docker konteineros.

No otras puses, gandrÄ«z visās mÅ«sdienu datubāzēs ir milzÄ«gs daudzums loÄ£ikas un komponentu: transakcijas, integritātes koordinācija, procedÅ«ras, relāciju atkarÄ«bas un daudz loÄ£ikas. Diezgan lielai datubāzes loÄ£ikai pietiek ar nelielu stāvokli. Gigabaitus un terabaitus tieÅ”i izmanto tikai neliela daļa no datu bāzes loÄ£ikas, kas iesaistÄ«ta tieŔā vaicājumu izpildē.

AttiecÄ«gi ideja ir Ŕāda: ja daļa loÄ£ikas pieļauj bezpavalstniecÄ«bas izpildi, kāpēc gan nesadalÄ«t bāzi Stateful un BezvalstniecÄ«bas daļās.

Bez servera OLAP risinājumiem

ApskatÄ«sim, kā varētu izskatÄ«ties datu bāzes sadalÄ«Å”ana daļās ar statusu un bezvalsts, izmantojot praktiskus piemērus.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Piemēram, mums ir analītiska datu bāze: ārējie dati (sarkanais cilindrs kreisajā pusē), ETL process, kas ielādē datus datu bāzē, un analītiķis, kas nosūta datu bāzei SQL vaicājumus. Šī ir klasiska datu noliktavas darbības shēma.

Šajā shēmā ETL nosacīti tiek veikts vienu reizi. Tad pastāvīgi jāmaksā par serveriem, kuros darbojas datubāze ar ETL aizpildītiem datiem, lai būtu uz ko nosūtīt vaicājumus.

Apskatīsim alternatīvu pieeju, kas ieviesta AWS Athena Serverless. Nav pastāvīgi paredzētas aparatūras, kurā tiek glabāti lejupielādētie dati. Tā vietā:

  • Lietotājs iesniedz SQL vaicājumu Athena. Athena optimizētājs analizē SQL vaicājumu un metadatu krātuvē (Metadati) meklē konkrētus datus, kas nepiecieÅ”ami vaicājuma izpildei.
  • Optimizētājs, pamatojoties uz savāktajiem datiem, lejupielādē nepiecieÅ”amos datus no ārējiem avotiem pagaidu krātuvē (pagaidu datu bāzē).
  • Lietotāja SQL vaicājums tiek izpildÄ«ts pagaidu krātuvē, un rezultāts tiek atgriezts lietotājam.
  • Pagaidu krātuve ir notÄ«rÄ«ta un resursi tiek atbrÄ«voti.

Šajā arhitektūrā mēs maksājam tikai par pieprasījuma izpildes procesu. Nav pieprasījumu - nav izmaksu.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Šī ir darba pieeja un tiek ieviesta ne tikai Athena Serverless, bet arī Redshift Spectrum (AWS).

Athena piemērs parāda, ka datu bāze bez serveriem darbojas reālos vaicājumos ar desmitiem un simtiem terabaitu datu. Simtiem terabaitu prasÄ«s simtiem serveru, taču mums par tiem nav jāmaksā ā€“ mēs maksājam par pieprasÄ«jumiem. Katra pieprasÄ«juma ātrums ir (ļoti) zems salÄ«dzinājumā ar specializētām analÄ«tiskām datu bāzēm, piemēram, Vertica, taču mēs nemaksājam par dÄ«kstāves periodiem.

Šāda datu bāze ir piemērota retiem analÄ«tiskiem ad-hoc vaicājumiem. Piemēram, kad mēs spontāni nolemjam pārbaudÄ«t hipotēzi par kādu milzÄ«gu datu apjomu. Atēna ir lieliski piemērota Å”iem gadÄ«jumiem. Regulāriem pieprasÄ«jumiem Ŕāda sistēma ir dārga. Å ajā gadÄ«jumā saglabājiet datus keÅ”atmiņā kādā specializētā risinājumā.

Bez servera OLTP risinājumiem

IepriekŔējā piemērā tika aplÅ«koti OLAP (analÄ«tiskie) uzdevumi. Tagad apskatÄ«sim OLTP uzdevumus.

Iedomāsimies mērogojamu PostgreSQL vai MySQL. Izveidosim parasto pārvaldÄ«to instanci PostgreSQL vai MySQL ar minimāliem resursiem. Kad instance saņems lielāku slodzi, pievienosim papildu replikas, kurām sadalÄ«sim daļu no lasÄ«Å”anas slodzes. Ja nav pieprasÄ«jumu vai ielādes, mēs izslēdzam kopijas. Pirmā instance ir galvenais, bet pārējās ir kopijas.

Å Ä« ideja tiek Ä«stenota datu bāzē ar nosaukumu Aurora Serverless AWS. Princips ir vienkārÅ”s: pieprasÄ«jumus no ārējām lietojumprogrammām pieņem starpniekserveru flote. Redzot slodzes pieaugumu, tas pieŔķir skaitļoÅ”anas resursus no iepriekÅ” uzsildÄ«tām minimālajām instancēm - savienojums tiek izveidots pēc iespējas ātrāk. GadÄ«jumu atspējoÅ”ana notiek tādā paŔā veidā.

Aurorā ir Aurora kapacitātes vienības, ACU, koncepcija. Tas ir (nosacīti) gadījums (serveris). Katrs konkrētais ACU var būt galvenais vai palīgs. Katrai ietilpības vienībai ir sava RAM, procesors un minimālais disks. Attiecīgi viens ir meistars, pārējās ir tikai lasāmas kopijas.

Å o Aurora jaudas vienÄ«bu skaits ir konfigurējams parametrs. Minimālais daudzums var bÅ«t viens vai nulle (Å”ajā gadÄ«jumā datu bāze nedarbojas, ja nav pieprasÄ«jumu).

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Kad bāze saņem pieprasÄ«jumus, starpniekservera flote palielina Aurora CapacityUnits, palielinot sistēmas veiktspējas resursus. Iespēja palielināt un samazināt resursus ļauj sistēmai ā€œÅ¾onglētā€ ar resursiem: automātiski parādÄ«t atseviŔķus ACU (aizstāt tos ar jauniem) un izvērst visus paÅ”reizējos izņemto resursu atjauninājumus.

Aurora Serverless bāze var mērogot lasÄ«Å”anas slodzi. Bet dokumentācijā tas tieÅ”i nav teikts. Var Ŕķist, ka viņi var pacelt multi-masteri. Nav nekādas maÄ£ijas.

Å Ä« datu bāze ir labi piemērota, lai izvairÄ«tos no milzÄ«gu naudas lÄ«dzekļu tērÄ“Å”anas sistēmām ar neparedzamu piekļuvi. Piemēram, veidojot MVP vai mārketinga vizÄ«tkarÅ”u vietnes, mēs parasti negaidām stabilu slodzi. AttiecÄ«gi, ja nav piekļuves, mēs par gadÄ«jumiem nemaksājam. Kad notiek negaidÄ«ta slodze, piemēram, pēc konferences vai reklāmas kampaņas, vietni apmeklē cilvēku pūļi un slodze dramatiski palielinās, Aurora Serverless automātiski uzņem Å”o slodzi un ātri savieno trÅ«kstoÅ”os resursus (ACU). Tad konference paiet, visi aizmirst par prototipu, serveri (ACU) kļūst tumÅ”i, un izmaksas nokrÄ«tas lÄ«dz nullei - ērti.

Å is risinājums nav piemērots stabilai lielai slodzei, jo tas nesamazina rakstÄ«Å”anas slodzi. Visi Å”ie resursu savienojumi un atvienojumi notiek tā sauktajā ā€œmēroga punktāā€ - brÄ«dÄ«, kad datu bāzi neatbalsta transakcija vai pagaidu tabulas. Piemēram, nedēļas laikā skalas punkts var nenotikt, un bāze darbojas ar tiem paÅ”iem resursiem un vienkārÅ”i nevar paplaÅ”ināties vai sarukt.

Nav nekādas maÄ£ijas ā€“ tā ir parasta PostgreSQL. Bet maŔīnu pievienoÅ”anas un atvienoÅ”anas process ir daļēji automatizēts.

Bez servera pēc dizaina

Aurora Serverless ir veca datu bāze, kas pārrakstÄ«ta mākonim, lai izmantotu dažas no Serverless priekÅ”rocÄ«bām. Un tagad es jums pastāstÄ«Å”u par bāzi, kas sākotnēji tika rakstÄ«ta mākonim, bezserveru pieejai - Serverless-by-design. Tas tika nekavējoties izstrādāts bez pieņēmuma, ka tas darbosies uz fiziskajiem serveriem.

Šo bāzi sauc par Snowflake. Tam ir trīs atslēgu bloki.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Pirmais ir metadatu bloks. Å is ir ātrs atmiņā saglabāts pakalpojums, kas atrisina problēmas ar droŔību, metadatiem, darÄ«jumiem un vaicājumu optimizāciju (parādÄ«ts attēlā pa kreisi).

Otrais bloks ir virtuālo skaitļoÅ”anas klasteru kopums aprēķiniem (attēlā ir zilu apļu komplekts).

TreÅ”ais bloks ir datu uzglabāŔanas sistēma, kuras pamatā ir S3. S3 ir bezdimensiju objektu krātuve AWS, lÄ«dzÄ«gi kā bezizmēra Dropbox biznesam.

ApskatÄ«sim, kā darbojas Snowflake, pieņemot aukstu palaiÅ”anu. Tas nozÄ«mē, ka ir datu bāze, tajā tiek ielādēti dati, nedarbojas vaicājumi. AttiecÄ«gi, ja datu bāzei nav pieprasÄ«jumu, tad esam pacēluÅ”i ātro atmiņā esoÅ”o metadatu pakalpojumu (pirmais bloks). Un mums ir S3 krātuve, kurā tiek glabāti tabulu dati, kas sadalÄ«ti tā sauktajās mikrosadaļās. VienkārŔības labad: ja tabulā ir transakcijas, tad mikropartÄ«cijas ir darÄ«jumu dienas. Katra diena ir atseviŔķs mikrosadalÄ«jums, atseviŔķs fails. Un, kad datubāze darbojas Å”ajā režīmā, jÅ«s maksājat tikai par vietu, ko aizņem dati. Turklāt likme uz vienu sēdekli ir ļoti zema (jo Ä«paÅ”i ņemot vērā ievērojamo kompresiju). ArÄ« metadatu pakalpojums darbojas pastāvÄ«gi, taču jums nav nepiecieÅ”ams daudz resursu, lai optimizētu vaicājumus, un pakalpojumu var uzskatÄ«t par koplietoÅ”anas programmatÅ«ru.

Tagad iedomāsimies, ka lietotājs ieradās mÅ«su datubāzē un nosÅ«tÄ«ja SQL vaicājumu. SQL vaicājums nekavējoties tiek nosÅ«tÄ«ts Metadatu pakalpojumam apstrādei. AttiecÄ«gi, saņemot pieprasÄ«jumu, Å”is pakalpojums analizē pieprasÄ«jumu, pieejamos datus, lietotāju atļaujas un, ja viss ir kārtÄ«bā, sastāda pieprasÄ«juma apstrādes plānu.

Pēc tam pakalpojums sāk skaitļoÅ”anas klastera palaiÅ”anu. SkaitļoÅ”anas klasteris ir serveru kopa, kas veic aprēķinus. Tas ir, tas ir klasteris, kurā var bÅ«t 1 serveris, 2 serveri, 4, 8, 16, 32 ā€” tik daudz, cik vēlaties. JÅ«s iesniedzat pieprasÄ«jumu, un Ŕī klastera palaiÅ”ana nekavējoties sākas. Tas tieŔām aizņem sekundes.

Ceļā uz bezserveru datubāzēm - kā un kāpēc

Pēc tam, kad klasteris ir palaists, jÅ«su pieprasÄ«juma apstrādei nepiecieÅ”amie mikrosadaļas tiek kopētas klasterÄ« no S3. Tas ir, iedomāsimies, ka, lai izpildÄ«tu SQL vaicājumu, ir nepiecieÅ”ami divi nodalÄ«jumi no vienas tabulas un viens no otrās. Å ajā gadÄ«jumā klasterÄ« tiks kopēti tikai trÄ«s nepiecieÅ”amie nodalÄ«jumi, nevis visas tabulas. TieÅ”i tāpēc, un tieÅ”i tāpēc, ka viss atrodas vienā datu centrā un ir savienots ar ļoti ātriem kanāliem, viss pārsÅ«tÄ«Å”anas process notiek ļoti ātri: sekundēs, ļoti reti minÅ«tēs, ja vien mēs nerunājam par kādiem zvērÄ«giem pieprasÄ«jumiem. AttiecÄ«gi mikrosadaļas tiek kopētas skaitļoÅ”anas klasterÄ«, un pēc pabeigÅ”anas Å”ajā skaitļoÅ”anas klasterÄ« tiek izpildÄ«ts SQL vaicājums. Å Ä« pieprasÄ«juma rezultāts var bÅ«t viena rindiņa, vairākas rindiņas vai tabula ā€“ tās tiek nosÅ«tÄ«tas lietotājam ārēji, lai viņŔ to varētu lejupielādēt, parādÄ«t savā BI rÄ«kā vai izmantot kādā citā veidā.

Katrs SQL vaicājums var ne tikai nolasÄ«t apkopojumus no iepriekÅ” ielādētiem datiem, bet arÄ« ielādēt/Ä£enerēt jaunus datus datu bāzē. Tas ir, tas var bÅ«t vaicājums, kas, piemēram, ievieto jaunus ierakstus citā tabulā, kā rezultātā skaitļoÅ”anas klasterÄ« parādās jauns nodalÄ«jums, kas, savukārt, tiek automātiski saglabāts vienā S3 krātuvē.

IepriekÅ” aprakstÄ«tais scenārijs no lietotāja ieraÅ”anās lÄ«dz klastera celÅ”anai, datu ielādei, vaicājumu izpildei, rezultātu iegÅ«Å”anai tiek apmaksāts pēc likmes par paceltā virtuālā skaitļoÅ”anas klastera, virtuālās noliktavas izmantoÅ”anas minÅ«tēm. Likme mainās atkarÄ«bā no AWS zonas un klastera lieluma, bet vidēji tas ir daži dolāri stundā. Četru maŔīnu kopa ir divreiz dārgāka nekā divu maŔīnu kopa, un astoņu maŔīnu kopa joprojām ir divreiz dārgāka. AtkarÄ«bā no pieprasÄ«jumu sarežģītÄ«bas ir pieejamas 16, 32 iekārtas. Bet jÅ«s maksājat tikai par tām minÅ«tēm, kad klasteris faktiski darbojas, jo, kad nav pieprasÄ«jumu, jÅ«s kaut kā noņemat rokas, un pēc 5-10 minÅ«Å”u gaidÄ«Å”anas (konfigurējams parametrs) tas pats nodzisÄ«s, atbrÄ«vojiet resursus un kļūstiet brÄ«vi.

PilnÄ«gi reālistisks scenārijs ir tāds, ka, nosÅ«tot pieprasÄ«jumu, klasteris uznirst, nosacÄ«ti runājot, minÅ«tes laikā, tiek skaitÄ«ta vēl viena minÅ«te, pēc tam piecas minÅ«tes, lai izslēgtu, un galu galā jÅ«s maksājat par septiņām Ŕī klastera darbÄ«bas minÅ«tēm, un ne mēneÅ”iem un gadiem.

Pirmais scenārijs, kas aprakstīts, izmantojot Snowflake viena lietotāja iestatījumā. Tagad iedomāsimies, ka ir daudz lietotāju, kas ir tuvāk reālajam scenārijam.

Pieņemsim, ka mums ir daudz analÄ«tiÄ·u un Tableau ziņojumu, kas pastāvÄ«gi bombardē mÅ«su datubāzi ar lielu skaitu vienkārÅ”u analÄ«tisko SQL vaicājumu.

Turklāt, pieņemsim, ka mums ir izgudrojoÅ”i datu zinātnieki, kuri mēģina ar datiem izdarÄ«t zvērÄ«gas lietas, darbojas ar desmitiem terabaitu, analizē miljardus un triljonus datu rindu.

Diviem iepriekŔ aprakstītajiem darba slodzes veidiem Snowflake ļauj izveidot vairākas neatkarīgas dažādas jaudas skaitļoŔanas kopas. Turklāt Ŕīs skaitļoŔanas kopas darbojas neatkarīgi, bet ar kopīgiem konsekventiem datiem.

Lielam skaitam vieglu vaicājumu varat izveidot 2ā€“3 mazus kopas, katrā aptuveni 2 maŔīnas. Å o darbÄ«bu cita starpā var Ä«stenot, izmantojot automātiskos iestatÄ«jumus. Tātad jÅ«s sakāt: "Sniegpārsliņa, paceliet mazu puduri. Ja slodze uz to palielinās virs noteikta parametra, paceliet lÄ«dzÄ«gu otro, treÅ”o. Kad slodze sāk kristies, nodzēsiet lieko. Lai arÄ« cik analÄ«tiÄ·u atnāktu un sāktu skatÄ«t atskaites, visiem pietiek resursu.

Tajā paŔā laikā, ja analītiķi guļ un neviens neskatās pārskatus, kopas var pilnībā aptumŔot, un jūs pārtraucat par tiem maksāt.

Tajā paŔā laikā smagiem vaicājumiem (no Data Scientists) varat izveidot vienu ļoti lielu kopu 32 iekārtām. ArÄ« Å”is klasteris tiks apmaksāts tikai par tām minÅ«tēm un stundām, kad tur darbojas jÅ«su milzu pieprasÄ«jums.

IepriekÅ” aprakstÄ«tā iespēja ļauj sadalÄ«t ne tikai 2, bet arÄ« vairāku veidu darba slodzi klasteros (ETL, monitorings, atskaites materializācija,...).

Apkoposim Snowflake. Bāze apvieno skaistu ideju un praktisku realizāciju. Vietnē ManyChat mēs izmantojam Snowflake, lai analizētu visus mÅ«su rÄ«cÄ«bā esoÅ”os datus. Mums nav trÄ«s kopu, kā tas ir piemērā, bet gan no 5 lÄ«dz 9, dažāda izmēra. Dažiem uzdevumiem mums ir parastās 16, 2 un arÄ« ļoti mazas 1 maŔīnas. Viņi veiksmÄ«gi sadala slodzi un ļauj mums daudz ietaupÄ«t.

Datu bāze veiksmÄ«gi mērogo lasÄ«Å”anas un rakstÄ«Å”anas slodzi. Tā ir milzÄ«ga atŔķirÄ«ba un milzÄ«gs izrāviens salÄ«dzinājumā ar to paÅ”u ā€œAuroraā€, kas nesa tikai lasÄ«Å”anas slodzi. Snowflake ļauj palielināt rakstÄ«Å”anas slodzi, izmantojot Ŕīs skaitļoÅ”anas klasterus. Tas ir, kā jau minēju, ManyChat mēs izmantojam vairākus klasterus, mazie un Ä«paÅ”i mazie klasteri galvenokārt tiek izmantoti ETL, datu ielādei. Un analÄ«tiÄ·i jau dzÄ«vo uz vidējiem klasteriem, kurus ETL slodze absolÅ«ti neietekmē, tāpēc viņi strādā ļoti ātri.

AttiecÄ«gi datu bāze ir labi piemērota OLAP uzdevumiem. Tomēr diemžēl tas vēl nav piemērojams OLTP darba slodzēm. Pirmkārt, Ŕī datu bāze ir kolonnveida ar visām no tā izrietoÅ”ajām sekām. Otrkārt, pati pieeja, kad katram pieprasÄ«jumam, ja nepiecieÅ”ams, izceļ skaitļoÅ”anas klasteri un pārpludina to ar datiem, diemžēl vēl nav pietiekami ātra OLTP ielādei. Sekunžu gaidÄ«Å”ana OLAP uzdevumiem ir normāla parādÄ«ba, bet OLTP uzdevumiem tas ir nepieņemami; 100 ms bÅ«tu labāk vai 10 ms bÅ«tu vēl labāk.

Kopsavilkums

Datubāze bez servera ir iespējama, sadalot datu bāzi bezvalstniecÄ«bas un statusa daļās. JÅ«s, iespējams, pamanÄ«jāt, ka visos iepriekÅ” minētajos piemēros Stateful daļa, nosacÄ«ti runājot, ir mikrosadalÄ«jumu glabāŔana S3, un Stateless ir optimizētājs, kas strādā ar metadatiem, risina droŔības problēmas, kuras var izvirzÄ«t kā neatkarÄ«gus vieglus bezvalstnieku pakalpojumus.

SQL vaicājumu izpildi var uztvert arÄ« kā vieglā stāvokļa pakalpojumus, kas var parādÄ«ties bezservera režīmā, piemēram, Snowflake skaitļoÅ”anas klasteri, lejupielādēt tikai nepiecieÅ”amos datus, izpildÄ«t vaicājumu un ā€œizietā€.

Bezserveru ražoÅ”anas lÄ«meņa datu bāzes jau ir pieejamas lietoÅ”anai, tās strādā. Å Ä«s datu bāzes bez serveriem jau ir gatavas OLAP uzdevumu veikÅ”anai. Diemžēl OLTP uzdevumiem tie tiek izmantoti... ar niansēm, jo ā€‹ā€‹ir ierobežojumi. No vienas puses, tas ir mÄ«nuss. Bet, no otras puses, Ŕī ir iespēja. Iespējams, kāds no lasÄ«tājiem atradÄ«s veidu, kā padarÄ«t OLTP datubāzi pilnÄ«gi bez servera, bez Aurora ierobežojumiem.

Ceru, ka jums tas likās interesanti. Bez servera ir nākotne :)

Avots: www.habr.com

Pievieno komentāru