Programmering

Snowflake-gjennomgang: Et datalager som ble bedre i skyen

Datalager, også kalt enterprise data warehouse (EDW), er svært parallelle SQL- eller NoSQL-databaser designet for analyse. De lar deg importere data fra flere kilder og generere kompliserte rapporter raskt fra petabyte med data.

Forskjellen mellom et datalager og et datamart er at en datamart vanligvis er begrenset til et enkelt emne og en enkelt avdeling. Forskjellen mellom et datalager og et datasjø er at et datasjø lagrer data i sitt naturlige format, ofte blobs eller filer, mens et datalager lagrer data som en database.

Snøfnugg i korte trekk

Snowflake er et fullt relasjonelt ANSI SQL-datalager som ble bygget fra grunnen av for skyen. Arkitekturen skiller beregning fra lagring, slik at du kan skalere opp og ned på farten, uten forsinkelse eller forstyrrelse, selv mens spørsmål kjører. Du får den ytelsen du trenger akkurat når du trenger det, og du betaler bare for beregningen du bruker. Snowflake kjører for tiden på Amazon Web Services og Microsoft Azure.

Snowflake er en fullstendig søyledatabase med vektorisert utførelse, noe som gjør den i stand til å adressere selv de mest krevende analytiske arbeidsbelastningene. Snowflakes adaptive optimalisering sikrer at spørringer automatisk får best mulig ytelse, uten indekser, distribusjonsnøkler eller innstillingsparametere å administrere.

Snowflake kan støtte ubegrenset samtidighet med sin unike flerklynge, delte dataarkitektur. Dette gjør at flere databehandlingsklynger kan fungere samtidig på de samme dataene uten å forringe ytelsen. Snowflake kan til og med skaleres automatisk for å håndtere ulike samtidighetskrav med sin virtuelle lagerfunksjon i flere klynger, og legger til beregningsressurser på en transparent måte i toppbelastningsperioder og skaleres ned når belastningen avtar.

Snøfnuggkonkurrenter

Konkurrenter til Snowflake i skyen inkluderer Amazon Redshift, Google BigQuery og Microsoft Azure SQL Data Warehouse. Andre store konkurrenter, som Teradata, Oracle Exadata, MarkLogic og SAP BW / 4HANA, kan installeres i skyen, i lokalene og på apparater.

Amazon Redshift

Amazon Redshift er et raskt, skalerbart datalager som lar deg analysere alle dataene dine på tvers av datalageret og Amazon S3-datasjøen. Du spør Redshift ved hjelp av SQL. Et Redshift-datalager er en klynge som automatisk kan distribuere og fjerne kapasitet med samtidig spørringsbelastning. Imidlertid er alle klyngenodene klargjort i samme tilgjengelighetssone.

Microsoft Azure SQL Data Warehouse

Microsoft Azure SQL Data Warehouse er et skybasert datalager som bruker Microsoft SQL-motoren og MPP (massiv parallellbehandling) for raskt å kjøre komplekse spørsmål på tvers av petabytes med data. Du kan bruke Azure SQL Data Warehouse som en nøkkelkomponent i en stordataløsning ved å importere stordata til SQL Data Warehouse med enkle PolyBase T-SQL-spørsmål, og deretter bruke kraften til MPP til å kjøre høyytelsesanalyser.

Azure SQL Data Warehouse er tilgjengelig i 40 Azure-regioner over hele verden, men en gitt lagerserver eksisterer bare i en enkelt region. Du kan skalere ytelsen til datalageret ditt på forespørsel, men alle aktuelle spørsmål blir kansellert og rullet tilbake.

Google BigQuery

Google BigQuery er et serverfritt, svært skalerbart og kostnadseffektivt datadatalager med GIS-spørringer, en innebygd BI Engine og maskinlæring innebygd. BigQuery kjører raske SQL-spørsmål på gigabyte til petabyte data og gjør det enkelt å bli offentlig eller kommersielle datasett med dataene dine.

Du kan bare angi den geografiske plasseringen til et BigQuery-datasett ved opprettelsestidspunktet. Alle tabeller det henvises til i et spørsmål, må lagres i datasett på samme sted. Det gjelder også eksterne datasett og lagringsbøtter. Det er ytterligere begrensninger for plasseringen av eksterne Google Cloud Bigtable-data. Forespørsler kjøres som standard i samme region som dataene.

Steder kan være spesifikke steder, som Nord-Virginia, eller store geografiske områder, som EU eller USA. For å flytte et BigQuery-datasett fra en region til en annen, må du eksportere det til en Google Cloud Storage-bøtte på samme sted som datasettet ditt, kopiere bøtta til det nye stedet og laste det inn i BigQuery på det nye stedet.

Snøfnuggarkitektur

Snowflake bruker virtuelle beregningsinstanser for sine beregningsbehov og en lagringstjeneste for vedvarende lagring av data. Snowflake kan ikke kjøres på private skyinfrastrukturer (lokalt eller vert).

Det er ingen installasjon å utføre, og ingen konfigurasjon. Alt vedlikehold og tuning håndteres av Snowflake.

Snowflake bruker et sentralt datalager for vedvarende data som er tilgjengelig fra alle beregningsnoder i datalageret. Samtidig behandler Snowflake spørringer ved hjelp av MPP (massivt parallell prosessering) beregningsklynger der hver node i klyngen lagrer en del av hele datasettet lokalt.

Når data blir lastet inn i Snowflake, omorganiserer Snowflake dataene i sitt interne komprimerte, søyleformat. De interne dataobjektene er bare tilgjengelige via SQL-spørringer. Du kan koble til Snowflake via nettgrensesnittet sitt, gjennom en CLI (SnowSQL), gjennom ODBC- og JDBC-drivere fra applikasjoner som Tableau, gjennom innfødte kontakter for programmeringsspråk og gjennom tredjepartskontakter for BI- og ETL-verktøy.

Snøfnugg

Snowflake-funksjoner

Sikkerhet og databeskyttelse. Sikkerhetsfunksjonene som tilbys i Snowflake varierer etter utgave. Selv standardutgaven tilbyr automatisk kryptering av alle data og støtte for flerfaktorautentisering og enkel pålogging. Enterprise-tillegget legger til periodisk nøkkelring av krypterte data, og Enterprise for Sensitive Data-utgaven legger til støtte for HIPAA og PCI DSS. Du kan velge hvor dataene dine lagres, noe som hjelper med å overholde EUs GDPR-regelverk.

Standard og utvidet SQL-støtte. Snowflake støtter mest DDL og DML definert i SQL: 1999, pluss transaksjoner, noen avanserte SQL-funksjoner og deler av SQL: 2003 analytiske utvidelser (vindusfunksjoner og grupperingssett). Den støtter også sidevisninger og materialiserte visninger, samlede funksjoner, lagrede prosedyrer og brukerdefinerte funksjoner.

Verktøy og grensesnitt. Spesielt lar Snowflake deg kontrollere dine virtuelle lagre fra GUI eller kommandolinje. Det inkluderer å opprette, endre størrelse (uten nedetid), suspendere og slippe lagre. Å endre størrelse på et lager mens en forespørsel kjører er veldig praktisk, spesielt når du trenger å øke hastigheten på et spørsmål som tar for mye tid. Så vidt jeg vet er ikke implementert i noen annen EDW-programvare.

Tilkobling Snowflake har kontakter og / eller drivere for Python, Spark, Node.js, Go, .Net, JDBC, ODBC og dplyr-snowflakedb, en åpen kildekode dplyr-pakkeutvidelse vedlikeholdt på GitHub.

Dataimport og eksport. Snowflake kan laste inn et bredt spekter av data og filformater. Det inkluderer komprimerte filer; avgrensede datafiler; JSON-, Avro-, ORC-, Parkett- og XML-formater; Amazon S3 datakilder; og lokale filer. Det kan gjøre masseinnlasting og lossing til og ut av tabeller, samt kontinuerlig masseinnlasting fra filer.

Datadeling. Snowflake har støtte for sikker deling av data med andre Snowflake-kontoer. Dette strømlinjeformes ved bruk av tabellkloner med null kopi.

Snøfnugg

Snowflake tutorials

Snowflake tilbyr ganske mange opplæringsprogrammer og videoer. Noen hjelper deg med å komme i gang, andre utforsker spesifikke emner og andre viser funksjoner.

Jeg anbefaler å arbeide gjennom den praktiske oversikten som er beskrevet i Hands-on Lab Guide for Snowflake Free Trial.) Det tok meg under en time og kostet mindre enn fem studiepoeng. Det etterlot ytterligere 195 studiepoeng i den gratis prøveperioden, noe som burde være nok til å importere noen reelle data og teste ut noen spørsmål.

Opplæringen gjør tung bruk av Snowflake-regneark, en praktisk måte å kjøre kommandoer og SQL på nettet. Den dekker blant annet datainnlasting; spørring, resultatbufring og kloning; semistrukturerte data; og tidsreise for å gjenopprette databaseobjekter.

Samlet sett synes jeg Snowflake er ganske imponerende. Jeg forventet at det skulle være klumpete, men det er ikke tilfelle i det hele tatt. Faktisk går mange av datalagerdriftene mye raskere enn jeg forventet, og når det er en som ser ut til å krype, kan jeg gripe inn og øke størrelsen på datalageret uten å forstyrre det som skjer.

Mye av skaleringen kan automatiseres. Når du lager et datalager (se skjermbilde ovenfor), er det et alternativ å tillate flere klynger, et alternativ for å angi skaleringspolitikken, et alternativ for automatisk suspendering og et alternativ for å gjenoppta automatisk. Standardperioden for automatisk suspensjon er 10 minutter, noe som hindrer lageret i å forbruke ressurser når det er inaktiv lenger enn det. Automatisk gjenopptaking er nesten øyeblikkelig og skjer når det er spørsmål mot lageret.

Gitt at Snowflake tilbyr en 30-dagers gratis prøveperiode med en kreditt på $ 400, og det ikke er behov for å installere noe, bør du kunne avgjøre om Snowflake passer dine formål uten kontantutgifter. Jeg vil anbefale å snu det.

Koste: $ 2 / kreditt pluss $ 23 / TB / måned lagring, standardabonnement, forhåndsbetalt lagring. Én kreditt tilsvarer en node * time, fakturert av den andre. Planer på høyere nivå er dyrere.

Plattformer: Amazon Web Services, Microsoft Azure