Útflutningur í hlutageymslu
Einn JSON-hlutur fyrir hvert uppfyllt markmið í gagnahólfi sem þú átt. Þetta er leiðin í öll gagnavöruhús önnur en BigQuery.
1. Bilið sem þetta fyllir
Hingað til var nákvæmlega ein leið úr MousePlayer í gagnavöruhús og hún lá til Google. Ef þú keyrðir Snowflake, Redshift eða ClickHouse var engin leið — þótt öll þrjú lesi úr hlutageymslu án vandræða.
Brúin skrifar því í hlutageymslu í stað hvers gagnavöruhúss fyrir sig. Snowflake les úr S3, Redshift les úr S3, ClickHouse les úr S3 og BigQuery les úr Google Cloud Storage. Einn útflutningur nær til þeirra allra.
| Hvar | Hvernig er vísað á það |
|---|---|
| Amazon S3 | Signature Version 4, gagnahólf í hýsli |
| Cloudflare R2 | Signature Version 4 gegn endapunkti reikningsins þíns |
| Google Cloud Storage | með S3-samhæfu API og HMAC-lykli |
| MinIO, Wasabi, Backblaze B2 og önnur | Signature Version 4 gegn endapunktinum þínum |
| Azure Blob Storage | SAS-tengill í gám — engin undirritun hjá okkur |
2. Hvers vegna Azure er öðruvísi og hvers vegna það er betra
Azure Blob notar ekki Signature Version 4; það undirritar með SharedKey. Við hefðum getað byggt annað undirritunarkerfi. Í staðinn tekur brúin við SAS-tengli í gám — vefslóð sem þú myndar í eigin geymslureikningi með undirskriftinni þegar inni.
Það er minni kóði hjá okkur og minna traust sem þarf frá þér. Við sjáum aldrei reikningslykil: þú afhendir heimild sem þú afmarkaðir sjálf(ur), á einn gám, með fyrningardagsetningu sem þú valdir og afturkallanlega hvenær sem er án annarra breytinga.
Sömu aðhalds er vert að gæta á S3-hliðinni: gefðu aðgangslyklinum skrifheimild aðeins undir þessu eina forskeyti og engu öðru. Lykill sem getur aðeins bætt við undir mouseplayer/goals/ getur ekki lesið önnur gagnahólf þótt hann leki.
3. Einn hlutur á markmið og lykillinn er dagsetning
Hlutageymsla styður ekki viðbætur. Dagleg skrá þyrfti að vera endurskrifuð að fullu í hvert sinn og tvö markmið sem berast samtímis myndu yfirskrifa hvort annað. Því verður hvert uppfyllt markmið að eigin hlut.
Kostnaðurinn er margir litlir hlutir; skipan lykilsins gerir það framkvæmanlegt:
prefix/YYYY/MM/DD/channel/session-goal.json
Gagnavöruhús les einn dag sem eina skiptingu og afturvirk fylling er forskeytisskönnun í stað fyrirspurnar. Ef þú vilt skipta eftir verkefni í stað dagsetningar skaltu setja rásarauðkennið í forskeytið.
Hver hlutur er ein JSON-lína
Viljandi án inndráttar svo allt forskeytið sé læsilegt sem NDJSON án þess að opna hvern hlut sérstaklega. Tímastimpill, verkefni, lota, viðskiptavinaauðkenni, markmið, gildi, gjaldmiðill og tengillinn sem spilar upptökuna.
Autt gildi er null en ekki núll
Markmið án peningagildis skrifar null. Í gagnavöruhúsi myndi núll leggjast í heild sem var aldrei til — munurinn á „engin upphæð ákveðin“ og „upphæðin núll“ helst í útflutningnum.
4. Ef svarið er 403 skaltu lesa þetta fyrst
Höfnuð S3-beiðni segir nánast ekkert og það er ástæða fyrir því að villuskilaboðin í annálnum okkar segja meira en S3: svæðið fer í undirskriftina. Rangt svæði og rangur lykill mynda sama 403 svo augljósi grunurinn — lykillinn — er aðeins réttur í helmingi tilvika.
Þrennt til að athuga í þessari röð:
- Svæðiðnákvæmlega eins og gagnahólfið gefur það upp. R2 og Google Cloud Storage nota
autoog athuga það ekki; öll önnur gera það. - Forskeytisheimildin. Lykill afmarkaður við
mouseplayer/getur ekki skrifað ímouseplayer-goals/— skástrikið í lokin skiptir máli í tilfangs-ARN. - Endapunkturinnfyrir R2 og S3-samhæfar geymslur. Límdu hýsilinn án
https://; við fjarlægjum það hvort eð er en slóð aftan við hann er annað gagnahólf.
Auðkenni aðgangslykils er viljandi geymt ódulkóðað. Það fylgir hverri undirritaðri beiðni samkvæmt hönnun svo dulkóðun þess væri fyrirhöfn án verndar. Leyndarmálið er dulkóðað, aldrei sýnt aftur og fer aldrei í innri biðröðina sem ber verkið.
Öll vörumerki sem nefnd eru hér tilheyra eigendum sínum. MousePlayer er ekki í viðskiptasambandi við þessa þjónustuaðila.