Eksport objektimällu
JSON-objekt täidetud eesmärgi kohta teie ämbris. Tee igasse andmelattu peale BigQuery.
1. Puuduv ühendus
Seni viis MousePlayerist andmelattu täpselt üks tee ning see viis Google’isse. Snowflake’i, Redshifti või ClickHouse’i kasutajale teed polnud, kuigi kõik kolm loevad probleemideta objektimälu.
Seetõttu kirjutab sild objektimällu, selle asemel et toetada iga andmeladu eraldi. Snowflake, Redshift ja ClickHouse loevad S3-st ning BigQuery Google Cloud Storage’ist. Üks eksport jõuab kõigini.
| Sihtkoht | Adresseerimine |
|---|---|
| Amazon S3 | Signature Version 4, ämber hostis |
| Cloudflare R2 | Signature Version 4 teie konto lõpp-punkti |
| Google Cloud Storage | S3-ühilduv API HMAC-võtmega |
| MinIO, Wasabi, Backblaze B2 ja muud | Signature Version 4 teie lõpp-punkti |
| Azure Blob Storage | konteineri SAS-link, meie ei allkirjasta |
2. Miks Azure erineb ja on parem
Azure Blob ei kasuta Signature Version 4 allkirjastamist, vaid SharedKeyd. Oleksime võinud ehitada teise allkirjastusskeemi. Selle asemel võtab sild vastu konteineri SAS-lingi – URL-i, mille loote oma mälukontol ja mis juba sisaldab allkirja.
See tähendab meie poolel vähem koodi ning teie poolel väiksemat usaldusvajadust. Me ei näe üldse konto võtit: annate üle enda määratud õiguse ühele konteinerile, enda valitud aegumistähtajaga. Selle saab igal ajal tühistada, ilma midagi muud muutmata.
S3-s sama: lubage kirjutada ainult sellesse prefiksisse. Ainult mouseplayer/goals/ alla lisav võti ei loe lekkimiselgi teisi ämbreid.
3. Objekt eesmärgile, võti kuupäev
Objektimälu ei toeta lõppu lisamist. Päevafail tuleks iga kord tervikuna ümber kirjutada ning kaks korraga saabuvat eesmärki kirjutaksid teineteise üle. Seetõttu saab igast täidetud eesmärgist eraldi objekt.
Palju pisikesi objekte, võtmekuju teeb hallatavaks:
prefix/YYYY/MM/DD/channel/session-goal.json
Andmeladu loeb ühe päeva ühe partitsioonina ning tagantjärele täitmine toimub päringu asemel prefiksi skannimisega. Kui soovite jaotada projekti, mitte kuupäeva järgi, lisage kanali ID prefiksisse.
Iga objekt üks JSON-rida
Tahtlikult ilma taandeta, et tervet prefiksit saaks lugeda NDJSON-ina, objekte ükshaaval avamata. Ajatempel, projekt, seanss, kliendi ID, eesmärk, väärtus, valuuta ning salvestise taasesituse link.
Tühi väärtus null, mitte nullarv
Rahaväärtuseta eesmärk kirjutab null. Andmelaos liidetaks null kogusummasse, mida pole kunagi olnud. Nii säilib ekspordis erinevus „summat pole kokku lepitud“ ja „summa on null“ vahel.
4. Vastuse 403 korral lugege esmalt
Tagasilükatud S3 päring ütleb peaaegu mitte midagi. Meie logi veateade ütleb rohkem kui S3 ning sellel on põhjus: piirkond kuulub allkirja. Vale piirkond ja vale võti annavad mõlemad vastuse 403, mistõttu on kõige ilmsem kahtlusalune – võti – süüdi ainult pooltel kordadel.
Kontrollige järjest:
- Piirkond täpselt ämbri järgi. R2 ja Google Cloud Storage kasutavad
autokontrollimata; teised kontrollivad. - Prefiksiõigus. Võti ulatusega
mouseplayer/ei saa kirjutadamouseplayer-goals/: lõpuslash oluline ressursi ARN-is. - Lõpp-punkt R2 ja S3-ühilduvale. Host ilma
https://osata. Eemaldame selle niikuinii, kuid lisatud teekond tähendaks teist ämbrit.
Pääsuvõtme ID salvestatakse teadlikult avatekstina. See liigub protokolli kohaselt iga allkirjastatud päringuga kaasa, seega annaks selle krüptimine tööd ilma kaitseta. Saladus krüptitakse, seda ei näidata enam kunagi ega lisata ülesannet kandvasse sisemisse järjekorda.
Kaubamärgid kuuluvad omanikele. MousePlayeril pole pakkujatega ärisuhet.