Allforio Storfa Wrthrychau
Un gwrthrych JSON fesul nod a gyflawnwyd, mewn bwced rydych yn berchen arno. Dyma’r llwybr i bob warws nad yw’n BigQuery.
1. Y Bwlch Mae Hyn yn Ei Lenwi
Hyd yn hyn roedd un ffordd yn union o MousePlayer i warws data, ac roedd yn arwain at Google. Os ydych yn rhedeg Snowflake, Redshift neu ClickHouse, nid oedd un – er bod y tri’n darllen o storfa wrthrychau heb gwyno.
Felly mae’r bont yn ysgrifennu i storfa wrthrychau yn hytrach nag i bob warws yn ei dro. Mae Snowflake yn derbyn o S3, mae Redshift yn derbyn o S3, mae ClickHouse yn derbyn o S3 ac mae BigQuery yn derbyn o Google Cloud Storage. Mae un allforio’n cyrraedd pob un ohonynt.
| Ble | Sut y’i cyfeirir |
|---|---|
| Amazon S3 | Signature Version 4, bwced yn y gwesteiwr |
| Cloudflare R2 | Signature Version 4 yn erbyn pwynt terfyn eich cyfrif |
| Google Cloud Storage | drwy ei API sy’n gydnaws ag S3, gydag allwedd HMAC |
| MinIO, Wasabi, Backblaze B2 ac eraill | Signature Version 4 yn erbyn eich pwynt terfyn |
| Azure Blob Storage | dolen SAS cynhwysydd – dim llofnodi ar ein hochr ni o gwbl |
2. Pam Mae Azure yn Wahanol, a Pham Mae Hynny’n Well
Nid yw Azure Blob yn siarad Signature Version 4; mae’n llofnodi gyda SharedKey. Gallem fod wedi adeiladu ail gynllun llofnodi. Yn lle hynny mae’r bont yn cymryd dolen SAS cynhwysydd – URL rydych yn ei gynhyrchu yn eich cyfrif storio eich hun, gyda’r llofnod eisoes ynddo.
Mae hynny’n llai o god ar ein hochr ni a llai o ymddiriedaeth ar eich ochr chi. Nid ydym byth yn gweld allwedd cyfrif o gwbl: caniatâd y gwnaethoch ei gwmpasu eich hun yw’r hyn rydych yn ei roi, i un cynhwysydd, gyda dyddiad dod i ben a ddewisoch, y gellir ei ddirymu ar unrhyw adeg heb gyffwrdd â dim arall.
Mae’r un cyfyngiad yn werth ei gymhwyso ar ochr S3: rhowch ganiatâd i’r allwedd mynediad ysgrifennu i’r un rhagddodiad hwn a dim arall. Ni all allwedd sy’n gallu ychwanegu at mouseplayer/goals/ yn unig ddarllen eich bwcedi eraill hyd yn oed os caiff ei gollwng.
3. Un Gwrthrych Fesul Nod, a Dyddiad Yw’r Allwedd
Nid oes ychwanegu at ddiwedd mewn storfa wrthrychau. Byddai’n rhaid ailysgrifennu ffeil ddyddiol yn gyfan bob tro, a byddai dau nod yn cyrraedd ar unwaith yn trosysgrifo ei gilydd. Felly daw pob nod a gyflawnwyd yn wrthrych ei hun.
Y pris yw llawer o wrthrychau bach; cynllun yr allwedd sy’n gwneud hynny’n ymarferol:
prefix/YYYY/MM/DD/channel/session-goal.json
Mae warws yn darllen un diwrnod fel un rhaniad, ac mae ôl-lenwi yn sgan rhagddodiad yn hytrach nag ymholiad. Os ydych am rannu fesul prosiect yn lle fesul dyddiad, rhowch ID y sianel yn y rhagddodiad.
Un Llinell JSON Yw Pob Gwrthrych
Yn fwriadol heb fewnoliad, fel bod rhagddodiad cyfan yn darllen fel NDJSON heb agor y gwrthrychau un ar y tro. Stamp amser, prosiect, sesiwn, ID cwsmer, nod, gwerth, arian cyfred a’r ddolen sy’n ailchwarae’r recordiad.
null Yw Gwerth Gwag, Nid Sero
Mae nod heb werth ariannol yn ysgrifennu null. Mewn warws byddai sero’n cael ei adio i gyfanswm na fodolai erioed – mae’r gwahaniaeth rhwng ‘dim swm wedi’i gytuno’ a ‘swm o sero’ yn goroesi’r allforio.
4. Os yw’n Ateb 403, Darllenwch Hwn yn Gyntaf
Nid yw cais S3 wedi’i wrthod yn dweud bron ddim, ac mae rheswm bod y neges gwall yn ein log yn dweud mwy nag S3: mae’r rhanbarth yn mynd i’r llofnod. Mae rhanbarth anghywir ac allwedd anghywir yn cynhyrchu’r un 403, felly dim ond hanner yr amser mae’r amheuaeth amlwg – yr allwedd – yn gywir.
Tri pheth i’w gwirio, yn y drefn hon:
- Y rhanbarth, yn union fel mae’r bwced yn ei adrodd. Mae R2 a Google Cloud Storage yn cymryd
autoac nid ydynt yn ei wirio; mae pawb arall yn gwneud hynny. - Caniatâd y rhagddodiad. Ni all allwedd wedi’i chwmpasu i
mouseplayer/ysgrifennu imouseplayer-goals/– mae’r slaes olaf o bwys mewn ARN adnodd. - Y pwynt terfyn, ar gyfer R2 a storfeydd sy’n gydnaws ag S3. Gludwch y gwesteiwr heb
https://; rydym yn ei dynnu beth bynnag, ond mae llwybr wedi’i ychwanegu ato yn fwced wahanol.
Cedwir ID yr allwedd mynediad yn glir yn fwriadol. Mae’n teithio ym mhob cais wedi’i lofnodi drwy ddyluniad, felly byddai ei amgryptio’n ymdrech heb amddiffyniad. Mae’r gyfrinach wedi’i hamgryptio, ni chaiff ei dangos eto ac nid yw byth yn mynd i’r ciw mewnol sy’n cario’r dasg.
Mae pob nod masnach a enwir yma yn perthyn i’w berchennog priodol. Nid oes gan MousePlayer berthynas fusnes â’r darparwyr hyn.