အရာဝတ္ထုသိမ်းဆည်းမှု ထုတ်ပို့ခြင်း
ပြည့်မီပန်းတိုင်တစ်ခုလျှင် ကိုယ်ပိုင်သိမ်းဆည်းပုံးထဲ JSON အရာဝတ္ထုတစ်ခု။ ဤသည် BigQuery မဟုတ်သော ဒေတာသိုလှောင်ရုံတိုင်းသို့ လမ်းကြောင်းဖြစ်သည်။
1. ဖြည့်ပေးသောအဟ
ယခုအချိန်အထိ MousePlayer မှ ဒေတာသိုလှောင်ရုံသို့ လမ်းတစ်ခုသာရှိပြီး Google သို့ သွားသည်။ Snowflake, Redshift သို့မဟုတ် ClickHouse သုံးပါက လမ်းမရှိခဲ့ပါ - သုံးခုလုံးက အရာဝတ္ထုသိမ်းဆည်းမှုမှ ပြဿနာမရှိ ဖတ်နိုင်သော်လည်း ဖြစ်သည်။
ထို့ကြောင့် တံတားက သိုလှောင်ရုံတစ်ခုချင်းသို့မဟုတ်ဘဲ အရာဝတ္ထုသိမ်းဆည်းမှုသို့ ရေးသည်။ Snowflake က S3 မှ၊ Redshift က S3 မှ၊ ClickHouse က S3 မှ၊ BigQuery က Google Cloud Storage မှ ရယူသည်။ ထုတ်ပို့မှုတစ်ခုက အားလုံးသို့ ရောက်သည်။
| နေရာ | လိပ်စာသတ်မှတ်နည်း |
|---|---|
| Amazon S3 | Signature Version 4၊ သိမ်းဆည်းပုံးကို ဟို့စ်တွင် ထည့်ထားသည် |
| Cloudflare R2 | အကောင့်အဆုံးမှတ်သို့ Signature Version 4 ဖြင့် |
| Google Cloud Storage | S3 ကိုက်ညီ API မှ HMAC သော့ဖြင့် |
| MinIO, Wasabi, Backblaze B2 နှင့် အခြားများ | ကိုယ်ပိုင်အဆုံးမှတ်သို့ Signature Version 4 ဖြင့် |
| Azure Blob Storage | ကွန်တိန်နာ SAS လင့်ခ် - ဆာဗာဘက်တွင် လက်မှတ်ထိုးမှု လုံးဝမရှိ |
2. Azure ဘာကြောင့်ကွဲပြား၍ ပိုကောင်းသနည်း
Azure Blob သည် Signature Version 4 မသုံးဘဲ SharedKey ဖြင့် လက်မှတ်ထိုးသည်။ ဒုတိယလက်မှတ်ထိုးနည်း တည်ဆောက်နိုင်သော်လည်း ထိုအစား တံတားက ယူသည်မှာ ကွန်တိန်နာ SAS လင့်ခ် ဖြစ်သည် - ကိုယ်ပိုင်သိမ်းဆည်းအကောင့်တွင် ဖန်တီးသော URL ဖြစ်ပြီး အတွင်း၌ လက်မှတ်ပါပြီးဖြစ်သည်။
ဆာဗာဘက်တွင် ကုဒ်ပိုနည်းပြီး မိမိဘက်တွင် ယုံကြည်ပေးရမှုလည်း ပိုနည်းသည်။ အကောင့်သော့ကို လုံးဝမမြင်ပါ: ပေးသောအရာသည် ကွန်တိန်နာတစ်ခုအတွက် ကိုယ်တိုင်နယ်ပယ်သတ်မှတ်ထားသော ခွင့်ပြုချက်၊ ကိုယ်တိုင်ရွေးသောသက်တမ်းကုန်ရက်ဖြစ်ပြီး အခြားအရာမထိဘဲ အချိန်မရွေး ရုပ်သိမ်းနိုင်သည်။
အလားတူကန့်သတ်မှုကို S3 ဘက်၌လည်း သုံးသင့်သည်: ဝင်ရောက်သော့အား အောက်ပါအတွင်းသာ ရေးခွင့်ပေးပါ: ဤရှေ့ဆက်လမ်းကြောင်းတစ်ခု ၊ အခြားဘာမျှမပေးပါနှင့်။ အောက်ပါအတွင်းသာ ထပ်ထည့်နိုင်သောသော့သည် mouseplayer/goals/ ပေါက်ကြားသော်လည်း အခြားသိမ်းဆည်းပုံးများကို မဖတ်နိုင်ပါ။
3. ပန်းတိုင်တစ်ခုလျှင် အရာဝတ္ထုတစ်ခု၊ သော့မှာ ရက်စွဲဖြစ်သည်
အရာဝတ္ထုသိမ်းဆည်းမှုတွင် နောက်ဆက်ရေးခြင်း မရှိပါ။ နေ့စဉ်ဖိုင်ဆိုပါက အကြိမ်တိုင်း တစ်ခုလုံးပြန်ရေးရပြီး တစ်ပြိုင်နက်ပန်းတိုင်နှစ်ခုရောက်ပါက တစ်ခုကတစ်ခုကို ဖုံးရေးမည်။ ထို့ကြောင့် ပြည့်မီပန်းတိုင်တစ်ခုစီသည် ကိုယ်ပိုင်အရာဝတ္ထုတစ်ခု ဖြစ်သည်။
အားနည်းချက်မှာ အရာဝတ္ထုသေးများစွာ ရှိခြင်းဖြစ်ပြီး သော့ဖွဲ့စည်းပုံက အသုံးပြုနိုင်စေသည်:
prefix/YYYY/MM/DD/channel/session-goal.json
သိုလှောင်ရုံက တစ်ရက်ကို partition တစ်ခုအဖြစ် ဖတ်ပြီး နောက်ကြောင်းဖြည့်မှုသည် query အစား ရှေ့ဆက်လမ်းကြောင်းစစ်ဆေးမှုဖြစ်သည်။ ရက်စွဲအစား ပရောဂျက်အလိုက်ခွဲလိုပါက ချန်နယ် ID ကို ရှေ့ဆက်လမ်းကြောင်းထဲ ထည့်ပါ။
အရာဝတ္ထုတစ်ခုသည် JSON တစ်ကြောင်းဖြစ်သည်
အရာဝတ္ထုတစ်ခုစီဖွင့်စရာမလိုဘဲ ရှေ့ဆက်လမ်းကြောင်းတစ်ခုလုံးကို NDJSON အဖြစ် ဖတ်နိုင်ရန် ရည်ရွယ်ချက်ရှိရှိ မအင်ဒန့်ထားပါ။ အချိန်တံဆိပ်၊ ပရောဂျက်၊ ဆက်ရှင်၊ ဖောက်သည် ID၊ ပန်းတိုင်၊ တန်ဖိုး၊ ငွေကြေးနှင့် မှတ်တမ်းပြန်ဖွင့်လင့်ခ် ပါသည်။
ဗလာတန်ဖိုးသည် သုညမဟုတ်ဘဲ null ဖြစ်သည်
ငွေကြေးတန်ဖိုးမရှိသောပန်းတိုင် ရေးသည်မှာ nullဖြစ်သည်။ သိုလှောင်ရုံတွင် သုညဆိုပါက တကယ်မရှိခဲ့သောစုစုပေါင်းထဲ ပေါင်းမိမည် - “ပမာဏမသတ်မှတ်” နှင့် “သုညပမာဏ” ကွာခြားချက်ကို ထုတ်ပို့မှုတွင် ထိန်းထားသည်။
4. 403 ဖြေပါက ဤအပိုင်း အရင်ဖတ်ပါ
ငြင်းပယ် S3 တောင်းဆိုမှုသည် ဘာမျှနီးပါး မပြောပါ။ မှတ်တမ်းအမှားစာက S3 ထက် ပိုပြောရသည့်အကြောင်းရင်းမှာ: လက်မှတ်ထဲ ဒေသပါဝင်သည်။ ဒေသမှားနှင့် သော့မှား နှစ်မျိုးလုံးက တူညီသော 403 ဖြစ်စေသဖြင့် ပထမသံသယဖြစ်သော သော့သည် တစ်ဝက်သာမှန်သည်။
ဤအစီအစဉ်အတိုင်း သုံးချက်စစ်ပါ:
- ဒေသ၊ သိမ်းဆည်းပုံးပြောသည့်အတိုင်း အတိအကျဖြစ်ရမည်။ R2 နှင့် Google Cloud Storage က လက်ခံသည်မှာ
autoဖြစ်ပြီး မစစ်ပါ။ ကျန်အားလုံးက စစ်သည်။ - ရှေ့ဆက်လမ်းကြောင်းခွင့်ပြုချက်။ အောက်ပါသို့နယ်ပယ်ကန့်သတ်သောသော့သည်
mouseplayer/အောက်ပါသို့ မရေးနိုင်ပါ:mouseplayer-goals/- resource ARN တွင် နောက်ဆုံးမျဉ်းစောင်း အရေးကြီးသည်။ - အဆုံးမှတ်၊ R2 နှင့် S3 ကိုက်ညီသိမ်းဆည်းမှုများအတွက်။ ဟို့စ်ကို အောက်ပါမပါဘဲ ကူးထည့်ပါ:
https://။ မည်သို့ပင်ဖြစ်စေ ဖြတ်ပေးသော်လည်း နောက်တွဲလမ်းကြောင်းပါပါက အခြားသိမ်းဆည်းပုံး ဖြစ်သည်။
ဝင်ရောက်သော့ ID ကို ရည်ရွယ်ချက်ရှိရှိ ရိုးရိုးစာသားဖြင့် သိမ်းသည်။ ဒီဇိုင်းအရ လက်မှတ်ပါ တောင်းဆိုမှုတိုင်းတွင် ပါသောကြောင့် ကုဒ်ဝှက်ခြင်းက ကာကွယ်မှုမပေးဘဲ အားထုတ်ရုံ ဖြစ်မည်။ လျှို့ဝှက်ချက်ကို ကုဒ်ဝှက်ထား၊ ပြန်မပြဘဲ အလုပ်ပါသောအတွင်းတန်းစီစာရင်းထဲ လုံးဝမထည့်ပါ။
ဤနေရာရှိ ကုန်အမှတ်တံဆိပ်အားလုံးသည် သက်ဆိုင်ရာပိုင်ရှင်များနှင့် သက်ဆိုင်သည်။ MousePlayer နှင့် ဤဝန်ဆောင်မှုပေးသူများအကြား စီးပွားရေးဆက်ဆံမှု မရှိပါ။