Uhamishaji kwenye hifadhi ya vitu
Kitu kimoja cha JSON kwa kila lengo lililofikiwa, katika bucket unayomiliki. Hii ndiyo njia ya kufikia kila ghala ambalo si BigQuery.
1. Pengo linalozibwa
Hadi sasa kulikuwa na njia moja tu kutoka MousePlayer kwenda ghala la data, nayo ilielekea Google. Ukiendesha Snowflake, Redshift au ClickHouse, hakukuwa na njia, ingawa zote tatu husoma kutoka hifadhi ya vitu bila tatizo.
Kwa hiyo daraja huandika kwenye hifadhi ya vitu badala ya kila ghala kwa zamu. Snowflake hupokea kutoka S3, Redshift hupokea kutoka S3, ClickHouse hupokea kutoka S3, na BigQuery hupokea kutoka Google Cloud Storage. Uhamishaji mmoja huzifikia zote.
| Mahali | Jinsi inavyofikiwa |
|---|---|
| Amazon S3 | Signature Version 4, bucket katika host |
| Cloudflare R2 | Signature Version 4 dhidi ya endpoint ya akaunti yako |
| Google Cloud Storage | kupitia API yake inayolingana na S3, kwa ufunguo wa HMAC |
| MinIO, Wasabi, Backblaze B2 na nyingine | Signature Version 4 dhidi ya endpoint yako |
| Azure Blob Storage | kiungo cha SAS cha kontena; hakuna utiaji saini upande wetu kabisa |
2. Kwa nini Azure ni tofauti, na kwa nini hilo ni bora
Azure Blob haitumii Signature Version 4; hutia saini kwa SharedKey. Tungeweza kujenga mfumo wa pili wa utiaji saini. Badala yake daraja hupokea kiungo cha SAS cha kontena — URL unayotengeneza katika akaunti yako mwenyewe ya hifadhi, ikiwa na saini tayari ndani yake.
Huo ni msimbo mchache upande wetu na imani ndogo inayohitajika upande wako. Hatuoni ufunguo wa akaunti kabisa: unachotoa ni ruhusa uliyoiwekea wigo mwenyewe, kwa kontena moja, yenye tarehe ya kuisha uliyochagua, inayoweza kubatilishwa wakati wowote bila kugusa kingine.
Uzuiaji huohuo unafaa kutumika upande wa S3: upe ufunguo wa ufikiaji ruhusa ya kuandika katika kiambishi hiki kimoja cha mwanzo na si kingine. Ufunguo unaoweza kuongeza tu kwenye mouseplayer/goals/ hauwezi kusoma bucket zako nyingine hata ukivuja.
3. Kitu kimoja kwa kila lengo, na ufunguo ni tarehe
Hifadhi ya vitu haina kuongeza mwishoni. Faili la kila siku lingehitaji kuandikwa upya lote kila wakati, na malengo mawili yakifika pamoja yangefutiana. Kwa hiyo kila lengo lililofikiwa huwa kitu chake chenyewe.
Gharama yake ni vitu vingi vidogo; mpangilio wa ufunguo ndio unaofanya hilo liwezekane:
prefix/YYYY/MM/DD/channel/session-goal.json
Ghala husoma siku moja kama kizigeu kimoja, na kujaza nyuma ni ukaguzi wa kiambishi cha mwanzo badala ya hoja. Ukitaka kugawa kwa mradi badala ya tarehe, weka ID ya chaneli katika kiambishi cha mwanzo.
Kila kitu ni mstari mmoja wa JSON
Kwa makusudi bila ujongezaji, ili kiambishi kizima cha mwanzo kisomeke kama NDJSON bila kufungua vitu kimoja kimoja. Muhuri wa muda, mradi, kipindi, ID ya mteja, lengo, thamani, sarafu na kiungo kinachocheza rekodi tena.
Thamani tupu ni null, si sifuri
Lengo lisilo na thamani ya fedha huandika null kama thamani. Katika ghala, sifuri ingejumlishwa katika jumla ambayo haikuwahi kuwepo; tofauti kati ya “hakuna kiasi kilichokubaliwa” na “kiasi cha sifuri” hubaki baada ya uhamishaji.
4. Ikijibu 403, soma hili kwanza
Ombi la S3 lililokataliwa halisemi karibu chochote, na kuna sababu ujumbe wa hitilafu katika kumbukumbu yetu husema zaidi kuliko S3: eneo huingizwa katika saini kama sehemu yake. Eneo lisilo sahihi na ufunguo usio sahihi huzalisha 403 ileile, hivyo dhana iliyo wazi, yaani ufunguo, huwa sahihi nusu ya wakati tu.
Vitu vitatu vya kukagua, kwa mpangilio huu:
- Eneo, kama linavyoripotiwa na bucket. R2 na Google Cloud Storage hutumia
autona havilikagui; wengine wote hulikagua. - Ruhusa ya kiambishi cha mwanzo. Ufunguo wenye wigo wa
mouseplayer/hauwezi kuandika kwenyemouseplayer-goals/— mkwaju wa mwisho ni muhimu katika ARN ya rasilimali. - Endpoint, kwa R2 na hifadhi zinazolingana na S3. Bandika host bila
https://; tunaiondoa kwa njia yoyote, lakini njia iliyoambatishwa nayo ni bucket tofauti.
ID ya ufunguo wa ufikiaji huhifadhiwa wazi kwa makusudi. Husafiri katika kila ombi lililotiwa saini kwa muundo wake, hivyo kuisimba fiche kungekuwa juhudi bila ulinzi. Siri husimbwa fiche, haionyeshwi tena kamwe na haiingii kamwe katika foleni ya ndani inayobeba kazi.
Alama zote za biashara zilizotajwa hapa ni mali ya wamiliki wake. MousePlayer haina uhusiano wa kibiashara na watoa huduma hawa.