See artikkel on minu medium'i artikli tĂ”lge â , mis osutus ĂŒsna populaarseks, tĂ”enĂ€oliselt oma lihtsuse tĂ”ttu. SeetĂ”ttu otsustasin selle kirjutada eesti keeles ja veidi tĂ€iendada, et tavaline inimene, kes ei ole andmetöötluse spetsialist, mĂ”istaks, mis on andmehoidla (DW) ja mis on andmejĂ€rv (Data Lake), ning kuidas need koos eksisteerivad.
Miks ma tahtsin andmejĂ€rve kohta kirjutada? Olen töötanud andmete ja analĂŒĂŒtikaga ĂŒle 10 aasta ning praegu töötan kindlasti suurte andmete kallal Amazon Alexa AI-s Cambridge'is, mis asub Bostoni lĂ€hedal, kuigi elan ise Vancouveri saarel Victorias ja kĂ€in sageli nii Bostonis, Seattle'is kui ka Vancouveris, ning mĂ”nikord isegi Moskvas konverentsidel esinemas. Samuti kirjutan aeg-ajalt, kuid peamiselt inglise keeles, ja olen juba kirjutanud , mul on samuti soov jagada PĂ”hja-Ameerika analĂŒĂŒtika trende ning kirjutan mĂ”nikord .
Olen alati töötanud andmehoidlate kallal ja alates 2015. aastast olen intensiivselt töötanud Amazon Web Servicesiga, ĂŒldiselt olen ĂŒle lĂ€inud pilveanalĂŒĂŒtikale (AWS, Azure, GCP). Olen jĂ€lginud analĂŒĂŒtikalahenduste evolutsiooni alates 2007. aastast ning olen isegi töötanud andmehoidla tootemĂŒĂŒgis Teradata, rakendades seda Sberbankis, just siis ilmuski Big Data koos Hadoopiga. KĂ”ik hakkasid rÀÀkima, et andmehoidlate ajastu on möödas ja nĂŒĂŒd on kĂ”ik Hadoopis, ning hiljem hakati rÀÀkima Data Lake'ist, jĂ€lle vĂ€ideti, et nĂŒĂŒd on andmehoidla tĂ”eliselt lĂ”ppenud. Kuid Ă”nneks (vĂ”ib-olla mĂ”ne jaoks ka kahjuks, kes teenis palju raha Hadoopi seadistamise eest) pole andmehoidlad kadunud.
Selles artiklis vaatleme, mis on andmejĂ€rv. Artikkel on mĂ”eldud inimestele, kellel on andmehoidlate osas vĂ€he vĂ”i ĂŒldse mitte kogemusi.

Pildil on Bledi jĂ€rv, see on ĂŒks mu lemmikjĂ€rvi, kuigi olen seal kĂ€inud vaid korra, kuid mĂ€letan seda kogu elu. Kuid me rÀÀgime teisest jĂ€rve tĂŒĂŒbist â andmejĂ€rvest. VĂ”ib-olla olete paljusid neist juba korduvalt kuulnud, kuid veel ĂŒks mÀÀratlus ei tee kellelegi halba.
Esiteks on siin kÔige populaarsemad mÀÀratlused AndmejÀrve kohta:
«failihoidla kĂ”ikidest tĂŒĂŒpidest tooredate andmete, mis on kergesti analĂŒĂŒsitavad organisatsioonis kellegi poolt» â Martin Fowler.
«Kui te arvate, et andmevaade on veepudel â puhastatud, pakendatud ja mugavaks tarbimiseks valmis, siis andmejĂ€rv on tohutu reservuaar veega selle looduslikus vormis. Kasutajad saavad endale vett vĂ”tta, sĂŒgavale sukelduda ja uurida» â James Dickson.
NĂŒĂŒd teame kindlasti, et andmejĂ€rv on seotud analĂŒĂŒtikaga, see vĂ”imaldab meil salvestada suuri andmemahtusid nende algses vormis ja meil on vajalik ja mugav juurdepÀÀs andmetele.
Mulle meeldib sageli asju lihtsaks teha, kui ma saan keerulise termini lihtsate sĂ”nadega selgitada, siis olen ma endale selgeks teinud, kuidas see töötab ja miks see vajalik on. Ăks kord, kui ma kaevusin iPhone'i fotogaleriisse, tuli mulle mĂ”te, et see on tĂ”eline andmejĂ€rv, isegi tegin slaidi konverentside jaoks:

KÔik on vÀga lihtne. Teeme telefoniga foto, foto salvestatakse telefoni ja vÔib olla salvestatud ka iCloudi (pilvesalvestusteenus). Samuti kogub telefon foto metandmeid: mis on pildil, geotag, aeg. Tulemuseks on see, et saame kasutada mugavat iPhone'i liidest, et leida oma foto ja nÀeme isegi statistikat, nÀiteks kui ma otsin fotosid sÔnaga tuli (fire), siis leian 3 fotot lÔkketule pildist. Minu jaoks on see justkui Business Intelligence tööriist, mis töötab vÀga kiiresti ja tÀpselt.
Ja muidugi ei tohi me unustada turvalisust (autentimine ja autoriseerimine), vastasel juhul vÔivad meie andmed kergesti avalikuks saada. On palju uudiseid suurettevÔtetest ja idufirmadest, kelle andmed on ametlikult avalikuks saanud arendajate hooletuse ja lihtsate reeglite eiramise tÔttu.
Isegi selline lihtne pilt aitab meil mÔista, mis on andmejÀrv, selle erinevused traditsioonilisest andmehoidlast ja selle pÔhielemendid:
- Andmete laadimine (Ingestion) â andmejĂ€rve peamine komponent. Andmed vĂ”ivad jĂ”uda andmehoidlasse kahel viisil â batch (vahetustega laadimine) ja streaming (andmevoog).
- Failide salvestus (Storage) â andmejĂ€rve peamine komponent. Me vajame, et hoidlal oleks lihtne skaleeritavus, erakordselt usaldusvÀÀrsus ja madal hind. NĂ€iteks AWS-is on see S3.
- Kataloog ja Otsing (Kataloog ja Otsing) â et vĂ€ltida Meediate Pange (see on siis, kui me viskame kĂ”ik andmed ĂŒhte kuhja ja hiljem on nendega vĂ”imatu töötada), peame looma metaandmete kihi andmete klassifitseerimiseks, et kasutajad saaksid kergesti leida neid andmeid, mida nad vajavad analĂŒĂŒsimiseks. TĂ€iendavalt vĂ”ime kasutada lisalahendusi otsimiseks, nĂ€iteks ElasticSearch. Otsing aitab kasutajal otsida vajalikke andmeid mugavate liideste kaudu.
- Töötlemine (Protsess) â see samm vastutab andmete töötlemise ja transformatsiooni eest. Me saame andmeid transformeerida, nende struktuure muuta, puhastada ja palju muud.
- Turvalisus (Turvalisus) â on oluline kulutada aega lahenduse turvalisuse kujundamisele. NĂ€iteks andmete krĂŒptimine nende sĂ€ilitamise, töötlemise ja laadimise ajal. On oluline kasutada autentimise ja autoriseerimise meetodeid. KokkuvĂ”tteks on vajalik audititööriist.
Praktilisest vaatenurgast vÔime iseloomustada andmejÀrve kolme atribuudiga:
- Koguge ja hoidke kĂ”ike â andmejĂ€rv sisaldab kĂ”iki andmeid, nii tooreid töötlemata andmeid mis tahes ajavahemiku jooksul kui ka töödeldud/puhastatud andmeid.
- SĂŒgav analĂŒĂŒs â andmejĂ€rv vĂ”imaldab kasutajatel andmeid uurida ja analĂŒĂŒsida.
- Paindlik ligipÀÀs â andmejĂ€rv tagab paindliku ligipÀÀsu erinevatele andmetele ja erinevatele stsenaariumidele.
NĂŒĂŒd saame rÀÀkida andmehoidla ja andmejĂ€rve erinevustest. Inimesed kĂŒsivad sageli:
- Aga kuidas on andmehoidla olukord?
- Kas me asendame andmehoidla andmejÀrvega vÔi laiendame seda?
- Kas on vÔimalik siiski ilma andmejÀrve hakkama saada?
LĂŒhidalt, selget vastust ei ole. KĂ”ik sĂ”ltub konkreetsest olukorrast, meeskonna oskustest ja eelarvest. NĂ€iteks andmehoidla migreerimine Oracle'ist AWS-sse ja andmejĂ€rve loomine Amazon'i tĂŒtarettevĂ”tte Woot kaudu â .
Teiselt poolt, Snowflake vĂ€idab, et teie ei pea enam andmejĂ€rve pĂ€rast muretsema, kuna nende andmeplatvorm (kuni 2020, kui see oli andmehoidla) vĂ”imaldab teil liita nii andmejĂ€rve kui ka andmehoidla. Olen Snowflake'iga natuke töötanud ja see on tĂ”eliselt ainulaadne toode, mis suudab seda teha. Hinna kĂŒsimus on juba teine teema.
KokkuvĂ”ttes on minu isiklik arvamus, et meil on endiselt vaja andmehoidlat kui meie aruandluse peamist andmeallikat ning kĂ”ik, mis sinna ei mahu, salvestame andmejĂ€rve. AnalĂŒĂŒtika roll on pakkuda ettevĂ”ttele mugavat juurdepÀÀsu otsuste tegemiseks. ĂkskĂ”ik kuidas vĂ”tta, töötavad Ă€ri kasutajad andmehoidlaga tĂ”husamalt kui andmejĂ€rvega; nĂ€iteks Amazonis on olemas Redshift (analĂŒĂŒtiline andmehoidla) ja Redshift Spectrum/Athena (SQL liides andmejĂ€rvele S3-s, mis pĂ”hineb Hive/Presto). Sama kehtib ka teiste kaasaegsete analĂŒĂŒtiliste andmehoidlate kohta.
Vaadakem tĂŒĂŒpilist andmehoidla arhitektuuri:

See on klassikaline lahendus. Meil on allikate sĂŒsteemid, mille abil ETL/ELT kaudu kopeerime andmed analĂŒĂŒtilisse andmehoidlasse ja ĂŒhendame need Business Intelligence lahendusega (minu lemmik on Tableau, aga mis on teie?).
Sellisel lahendusel on jÀrgmised puudused:
- ETL/ELT operatsioonid nÔuavad aega ja ressursse.
- Reeglina ei ole andmete salvestamine analĂŒĂŒtilises andmehoidlas odav (nĂ€iteks Redshift, BigQuery, Teradata), kuna peame ostma terve klastrite komplekti.
- Ărikasutajatel on juurdepÀÀs puhastatud ja sageli aggregeeritud andmetele ning neil ei ole vĂ”imalust saada tooreid andmeid.
Muidugi sĂ”ltub kĂ”ik teie juhtumist. Kui teie andmehoidlas ei ole probleeme, siis ei ole teil andmejĂ€rve ĂŒldse vaja. Kuid kui tekivad probleemid koha, vĂ”imekuse vĂ”i hinna eest, siis on mĂ”ttekas kaaluda andmejĂ€rve varianti. SellepĂ€rast on andmejĂ€rv vĂ€ga populaarne. Siin on nĂ€ide andmejĂ€rve arhitektuurist:

AndmejĂ€rve lĂ€henemisviisi kasutades laadime toored andmed meie andmejĂ€rve (batch vĂ”i streaming) ja seejĂ€rel töötleme andmeid vastavalt vajadusele. AndmejĂ€rv vĂ”imaldab Ă€ri kasutajatel luua oma andmete transformatsioone (ETL/ELT) vĂ”i analĂŒĂŒsida andmeid Business Intelligence lahendustes (kui on vajalik draiver).
Iga analĂŒĂŒtilise lahenduse eesmĂ€rk on teenida Ă€ri kasutajaid. SeetĂ”ttu peame alati töötama Ă€ri nĂ”udmistest lĂ€htudes. (Amazonis on see ĂŒks pĂ”himĂ”tteid â töötama tagurpidi).
Töötades nii andmehoidla kui andmejÀrvega, saame vÔrrelda mÔlemat lahendust:

Peamine jÀreldus, mille vÔib teha, on see, et andmesalvestus ei konkureeri andmejÀrvega, vaid tÀiendab seda. Kuid teil on Ôigus otsustada, mis sobib teie juhtumiga. Alati on huvitav ise proovida ja Ôiged jÀreldused teha.
Tahan rÀÀkida ka ĂŒhest juhtumist, kui hakkasin kasutama andmejĂ€rve lĂ€henemist. KĂ”ik oli ĂŒsna banaalne, proovisin kasutada ELT tööriista (meil oli Matillion ETL) ja Amazon Redshift, minu lahendus toimis, kuid ei vastanud nĂ”uetele.
Mul oli vaja vÔtta veebilogid, neid transformeerida ja agregeerida, et esitada andmed kahe juhtumi jaoks:
- Turundusmeeskond soovis analĂŒĂŒsida botide tegevust SEO jaoks
- IT soovis vaadata veebisaitide töö statistikat
VÀga lihtsad, vÀga lihtsad logid. Siin on nÀide:
https 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188
192.168.131.39:2817 10.0.0.1:80 0.086 0.048 0.037 200 200 0 57
"GET https://www.example.com:443/ HTTP/1.1" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337281-1d84f3d73c47ec4e58577259" "www.example.com" "arn:aws:acm:us-east-2:123456789012:certificate/12345678-1234-1234-1234-123456789012"
1 2018-07-02T22:22:48.364000Z "authenticate,forward" "-" "-"Ăhe faili suurus oli 1-4 megabaiti.
Kuid oli ĂŒks raskus. Meil oli 7 domeeni ĂŒle kogu maailma, ja ĂŒhe pĂ€eva jooksul loodi 7000 faili. See pole vĂ€ga suur kogus, kokku 50 gigabaiti. Kuid meie Redshifti klaster oli ka vĂ€ike (4 sĂ”lme). Traditsiooniliste meetoditega ĂŒhe faili laadimine vĂ”ttis umbes minuti. See tĂ€hendab, et probleem ei lahendatud otse. See oli see juhtum, kui otsustasin kasutada andmejĂ€rve lĂ€henemist. Lahendus nĂ€gi vĂ€lja umbes nii:

See on piisavalt lihtne (tahan tÀhele panna, et pilveteenustes töötamise eelis on lihtsus). Kasutasin:
- AWS Elastic Map Reduce (Hadoop) kui arvutusvÔimsust
- AWS S3 kui failihoidla, millel on andmete krĂŒpteerimise ja juurdepÀÀsu piiramise vĂ”imalused
- Spark kui InMemory arvutusvÔimsus ja PySpark andmete loogika ja transformatsiooni jaoks
- Parquet kui Spark'i töö tulemus
- AWS Glue Crawler kui uute andmete ja partiide metaandmete kogum
- Redshift Spectrum kui SQL liides andmejÀrvele olemasolevatele Redshift kasutajatele
KÔige vÀiksem EMR+Spark klaster töötles kogu failipaki 30 minutiga. On ka teisi juhtumeid AWS jaoks, eriti palju, mis on seotud Alexaga, kus andmeid on vÀga palju.
Hiljuti sain teada ĂŒhe andmejĂ€rve puuduse â see on GDPR. Probleem on selles, et kui klient palub andmeid kustutada ja need on ĂŒhes faili, siis ei saa me kasutada Andmete Manipuleerimise Keelt ning DELETE kĂ€sku nagu andmebaasis.
Loodan, et artikkel selgitas andmehoidla ja andmejÀrve vahelisi erinevusi. Kui see oli huvitav, siis vÔin tÔlkida veel oma artikleid vÔi professionaalide artikleid, keda loen. Samuti vÔin rÀÀkida lahendustest, millega töötan, ja nende arhitektuurist.
Allikas: habr.com
