Den hĂ€r artikeln Ă€r en översĂ€ttning av min artikel pĂ„ medium â , som visade sig vara ganska populĂ€r, kanske pĂ„ grund av sin enkelhet. DĂ€rför beslutade jag mig för att skriva den pĂ„ ryska och lĂ€gga till lite mer information, sĂ„ att en vanlig person som inte Ă€r specialist pĂ„ databehandling kan förstĂ„ vad datalager (DW) Ă€r, vad ett datalake (Data Lake) Ă€r och hur de tvĂ„ samexisterar.
Varför ville jag skriva om datalake? Jag har arbetat med data och analys i över 10 Är, och just nu arbetar jag med stordata inom Amazon Alexa AI i Cambridge, som ligger i Boston, Àven om jag sjÀlv bor i Victoria pÄ Vancouver Island och ofta Àr i Boston, Seattle och Vancouver, och ibland till och med i Moskva för att tala pÄ konferenser. Jag skriver ocksÄ dÄ och dÄ, men frÀmst pÄ engelska, och jag har redan , jag har Àven ett behov av att dela trender inom analys frÄn Nordamerika, och jag skriver ibland i .
Jag har alltid arbetat med datalager, och sedan 2015 har jag arbetat intensivt med Amazon Web Services och har överlag gÄtt över till molnanalys (AWS, Azure, GCP). Jag har bevittnat utvecklingen av analyslösningar sedan 2007 och har till och med arbetat för datalagervÀrlden Teradata och implementerat det i Sberbank, dÄ började Big Data med Hadoop. Alla började prata om att epoken för datalager var över och att nu var allt pÄ Hadoop, och sen började man tala om Data Lake, igen att nu var det verkligen slutet för datalager. Men lyckligtvis (kanske olyckligt för dem som tjÀnade mycket pengar pÄ att konfigurera Hadoop), har datalagret inte försvunnit.
I den hÀr artikeln kommer vi att titta pÄ vad ett datalake Àr. Artikeln Àr avsedd för personer med lite eller ingen erfarenhet av datalager.

PĂ„ bilden Ă€r det Bledsjön, en av mina favoritjöar, Ă€ven om jag bara har varit dĂ€r en gĂ„ng, men jag minns den för resten av mitt liv. Men vi kommer att prata om en annan typ av sjö â datalake. MĂ„nga av er har sĂ€kert hört denna term flera gĂ„nger, men ytterligare en definition skadar aldrig.
Först och frÀmst hÀr Àr de mest populÀra definitionerna av Datalake:
"en fillager av alla typer av rĂ„data, som Ă€r tillgĂ€ngliga för analys av vem som helst i organisationen" â Martin Fowler.
«Om du tĂ€nker att ett datalager Ă€r som en flaska vatten â ren, förpackad och lĂ€ttillgĂ€nglig, sĂ„ Ă€r ett datalager som en stor behĂ„llare med vatten i sin naturliga form. AnvĂ€ndare kan ta vatten för sig sjĂ€lva, dyka djupt och utforska» â James Dixon.
Nu vet vi sÀkert att ett datalager handlar om analys, det lÄter oss lagra stora mÀngder data i sin ursprungliga form och vi har den nödvÀndiga och bekvÀma Ätkomsten till datan.
Jag gillar ofta att förenkla saker; om jag kan förklara ett komplicerat begrepp med enkla ord, betyder det att jag har förstÄtt hur det fungerar och varför det Àr viktigt. PÄ nÄgot sÀtt granskade jag min iPhone i fotogalleriet, och jag insÄg att det verkligen Àr ett datalager, jag gjorde till och med en slide för konferenser:

Det Àr mycket enkelt. Vi tar en bild med telefonen, bilden sparas pÄ telefonen och kan ocksÄ sparas i iCloud (molnlagring). Telefonnummer samlar Àven in metadata om bilden: vad som avbildas, geotaggning, tid. Som resultat kan vi anvÀnda det bekvÀma grÀnssnittet i iPhone för att hitta vÄr bild och vi kan till och med se statistik, till exempel nÀr jag söker bilder med ordet eld, sÄ hittar jag 3 bilder med en brasa. För mig Àr detta som ett Business Intelligence-verktyg som fungerar snabbt och exakt.
Och sjÀlvklart fÄr vi inte glömma sÀkerheten (autentisering och auktorisering), annars kan vÄra data lÀtt hamna i offentligheten. Det finns mÄnga nyheter om stora företag och startups vars data har blivit offentliga pÄ grund av utvecklarens försumlighet och bristande efterlevnad av enkla regler.
Ăven en sĂ„ enkel bild hjĂ€lper oss att förstĂ„ vad ett datalager Ă€r, dess skillnader frĂ„n traditionell datalagring och dess grundlĂ€ggande element:
- Dataimport (Ingestion) â en nyckelkomponent i ett datalager. Data kan komma in i datalagret pĂ„ tvĂ„ sĂ€tt â batch (laddning med intervall) och streaming (datastreaming).
- Filarkiv (Storage) â huvudkomponenten i ett datalager. Vi behöver ett lagringssystem som Ă€r lĂ€tt skalbart, extremt pĂ„litligt och har lĂ„g kostnad. Till exempel, i AWS Ă€r detta S3.
- Katalog och Sök (Katalog och Sökning) â för att undvika datamyren (detta Ă€r nĂ€r vi slĂ€nger alla data i en hög, och sedan Ă€r de omöjliga att arbeta med) behöver vi skapa ett lager av metadata för att klassificera data, sĂ„ att anvĂ€ndarna enkelt kan hitta den data de behöver för analys. Dessutom kan vi anvĂ€nda ytterligare lösningar för sökning, till exempel ElasticSearch. Sökning hjĂ€lper anvĂ€ndaren att hitta den nödvĂ€ndiga datan genom ett enkelt grĂ€nssnitt.
- Bearbetning (Process) â detta steg ansvarar för bearbetning och transformation av data. Vi kan transformera data, Ă€ndra deras strukturer, rensa dem och mycket mer.
- SĂ€kerhet (SĂ€kerhet) â det Ă€r viktigt att avsĂ€tta tid för att utforma sĂ€kerhetslösningen. Till exempel data-kryptering vid lagring, bearbetning och överföring. Det Ă€r viktigt att anvĂ€nda autentiserings- och auktoriseringsmetoder. I slutĂ€ndan behövs ett revisionsverktyg.
FrÄn ett praktiskt perspektiv kan vi karakterisera datalÀget med tre attribut:
- Samla och lagra vad som helst â datalĂ€get innehĂ„ller all data, bĂ„de rĂ„a oprocessade data under vilken tidsperiod som helst samt bearbetade/rensade data.
- Djup analys â datalĂ€get gör det möjligt för anvĂ€ndarna att utforska och analysera data.
- Flexibel Ă„tkomst â datalĂ€get erbjuder flexibel Ă„tkomst till olika data och olika scenarier.
Nu kan vi prata om skillnaden mellan datalager och datalÀge. Vanligtvis undrar folk:
- Men vad sÀgs om datalagret?
- Byter vi ut datalagret mot datalÀget eller utökar vi det?
- Kan vi verkligen klara oss utan datalÀget?
I korthet, det finns inget klart svar. Allt beror pĂ„ den specifika situationen, kunskaperna i teamet och budgeten. Till exempel migrering av datalagret frĂ„n Oracle till AWS och att skapa ett datalĂ€ge av dotterföretaget Amazon â Woot â .
à andra sidan hÀvdar leverantören Snowflake att du inte lÀngre behöver tÀnka pÄ datalÀget, eftersom deras dataplattform (fram till 2020 var detta datalagret) lÄter dig kombinera bÄde datalÀge och datalager. Jag har jobbat lite med Snowflake, och det Àr faktiskt en unik produkt som kan göra sÄ. Kostnaden Àr en annan frÄga.
Avslutningsvis anser jag personligen att vi fortfarande behöver ett datalager som vĂ„r primĂ€ra datakĂ€lla för rapportering, och allt som inte fĂ„r plats lagrar vi i ett datalager. Hela roll för analys Ă€r att tillhandahĂ„lla enkel Ă„tkomst för företaget för beslutsfattande. FöretagsanvĂ€ndare arbetar helt enkelt mer effektivt med ett datalager Ă€n med ett datalager, till exempel i Amazon â dĂ€r finns Redshift (ett analytiskt datalager) och Redshift Spectrum/Athena (SQL-grĂ€nssnitt för datalagret i S3 baserat pĂ„ Hive/Presto). Detsamma gĂ€ller andra moderna analytiska datalagren.
LÄt oss titta pÄ en typisk arkitektur för ett datalager:

Detta Àr en klassisk lösning. Vi har kÀllsystem, med hjÀlp av ETL/ELT kopierar vi data till det analytiska datalagret och kopplar det till en Business Intelligence-lösning (min favorit Àr Tableau, vad Àr din?).
Denna lösning har följande nackdelar:
- ETL/ELT-operationer krÀver tid och resurser.
- Som regel Àr lagring för data i det analytiska datalagret inte billigt (till exempel Redshift, BigQuery, Teradata), eftersom vi behöver köpa en hel kluster.
- FöretagsanvÀndare har tillgÄng till rengjorda och ofta aggregerade data och de har ingen möjlighet att fÄ rÄdata.
SjÀlvklart beror allt pÄ ditt fall. Om du inte har problem med ditt datalager, sÄ behöver du överhuvudtaget inte ett datalager. Men nÀr problem med brist pÄ utrymme, kapacitet eller kostnaden Àr avgörande kan man övervÀga ett datalager. Just dÀrför Àr datalagret mycket populÀrt. HÀr Àr ett exempel pÄ arkitekturen för ett datalager:

Genom att anvÀnda datalageransatsen laddar vi rÄdata till vÄrt datalager (batch eller streaming), och vi bearbetar data vid behov. Datalagret gör det möjligt för företagsanvÀndare att skapa sina egna datatransformationer (ETL/ELT) eller analysera data i Business Intelligence-lösningar (om rÀtt drivrutin finns).
MĂ„let med varje analytisk lösning Ă€r att tjĂ€na företagsanvĂ€ndare. DĂ€rför mĂ„ste vi alltid arbeta utifrĂ„n affĂ€rens krav. (I Amazon Ă€r detta en av principerna â arbeta baklĂ€nges).
Genom att arbeta med bÄde datalager och datalager kan vi jÀmföra bÄda lösningarna:

Den huvudsakliga slutsatsen man kan dra Àr att datalagret inte konkurrerar med datalÀget, utan snarare kompletterar det. Men det Àr upp till er att avgöra vad som Àr bÀst för ert fall. Det Àr alltid intressant att prova sjÀlv och dra rÀtt slutsatser.
Jag skulle ocksÄ vilja berÀtta om ett av de fall dÀr jag började anvÀnda datalÀgesmetoden. Allt Àr ganska banalt, jag försökte anvÀnda ett ELT-verktyg (vi hade Matillion ETL) och Amazon Redshift, min lösning fungerade, men den klarade inte kraven.
Jag behövde ta webbloggar, transformera dem och aggregera dem för att tillhandahÄlla data för tvÄ fall:
- Marknadsföringsteamet ville analysera botaktivitet för SEO
- IT ville se metrik för webbplatsers prestanda
Mycket enkelt, mycket enkla loggar. HÀr Àr ett exempel:
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" "-" "-"En fil vÀgde 1-4 megabyte.
Men det fanns ett problem. Vi hade 7 domÀner över hela vÀrlden, och pÄ en dag skapades 7000 filer. Det Àr inte en sÀrskilt stor mÀngd, totalt 50 gigabyte. Men storleken pÄ vÄr Redshift-kluster var ocksÄ liten (4 noder). Att ladda ett enda fil pÄ traditionellt sÀtt tog cirka en minut. SÄ, uppgiften kunde inte lösas direkt. Och det hÀr var det tillfÀllet nÀr jag beslutade att anvÀnda datalÀgesmetoden. Lösningen sÄg ut ungefÀr sÄ hÀr:

Den var ganska enkel (jag vill pÄpeka att fördelen med att arbeta i molnet Àr enkelheten). Jag anvÀnde:
- AWS Elastic Map Reduce (Hadoop) som datorkraft
- AWS S3 som filinfrastruktur med möjlighet till datakryptering och behörighetsindelning
- Spark som InMemory datorkraft och PySpark för logik och datatransformation
- Parquet som resultatet av Sparks arbete
- AWS Glue Crawler som metadata-insamlare om nya data och partitioner
- Redshift Spectrum som SQL-grÀnssnitt till datalÀget för befintliga anvÀndare av Redshift
Den minsta EMR+Spark-klustret bearbetade hela batchen av filer pÄ 30 minuter. Det finns ocksÄ andra fall för AWS, sÀrskilt mÄnga relaterade till Alexa, dÀr det finns mycket data.
Nyligen upptĂ€ckte jag en av nackdelarna med ett datalager â det Ă€r GDPR. Problemet Ă€r att nĂ€r en kund ber om att fĂ„ sina uppgifter raderade och informationen finns i en av filerna, kan vi inte anvĂ€nda Data Manipulation Language och DELETE-operationen som i en databas.
Jag hoppas att artikeln klargjorde skillnaden mellan datalager och datalake. Om det var intressant kan jag översÀtta fler av mina artiklar eller artiklar frÄn de yrkespersoner jag lÀser. Jag kan ocksÄ berÀtta om de lösningar jag arbetar med och deras arkitektur.
KĂ€lla: habr.com
