ئوبيېكت ساقلاش ئېكسپورتى

ھەر ئەمەلگە ئاشقان نىشان ئۈچۈن، ئۆزىڭىزنىڭ bucket ىدا بىر JSON ئوبيېكتى. بۇ BigQuery دىن باشقا بارلىق ئامبارلارغا كىرىش يولى.

1. تولدۇرۇلىدىغان بوشلۇق

ھازىرغىچە MousePlayer دىن سانلىق مەلۇمات ئامبىرىغا بارىدىغان دەل بىر يول بار ئىدى، ئۇ Google غا باراتتى. Snowflake، Redshift ياكى ClickHouse ئىشلەتسىڭىز، ئۈچىسىمۇ ئوبيېكت ساقلاشتىن ئاسان ئوقۇيالايدىغان تۇرۇپ، ھېچقانداق يول يوق ئىدى.

شۇڭا كۆۋرۈك ھەر ئامبارغا ئايرىم يېزىشنىڭ ئورنىغا ئوبيېكت ساقلاشقا يازىدۇ. Snowflake S3 تىن، Redshift S3 تىن، ClickHouse S3 تىن، BigQuery Google Cloud Storage دىن ئالىدۇ. بىر ئېكسپورت ھەممىسىگە يېتىدۇ.

ئورۇنئادرېسلاش ئۇسۇلى
Amazon S3Signature Version 4، bucket host نىڭ ئىچىدە
Cloudflare R2ھېسابات ئاخىرقى نۇقتىڭىزغا قارىتا Signature Version 4
Google Cloud StorageHMAC ئاچقۇچى بىلەن ئۇنىڭ S3 غا ماس API سى ئارقىلىق
MinIO، Wasabi، Backblaze B2 ۋە باشقىلارئاخىرقى نۇقتىڭىزغا قارىتا Signature Version 4
Azure Blob Storagecontainer SAS ئۇلىنىشى — بىزنىڭ تەرەپتە ھېچقانداق ئىمزا قويۇش يوق

2. نېمىشقا Azure باشقىچە، بۇ نېمىشقا ياخشىراق

Azure Blob Signature Version 4 نى قوللىمايدۇ؛ SharedKey بىلەن ئىمزا قويىدۇ. بىز ئىككىنچى ئىمزا تۈزۈمى قۇرالايتتۇق. ئەكسىچە كۆۋرۈك container SAS ئۇلىنىشى ئالىدۇ — ئۆز ساقلاش ھېساباتىڭىزدا ھاسىل قىلىدىغان، ئىمزاسى ئىچىدە بار URL.

بۇ بىزنىڭ تەرەپتە كودنى، سىزنىڭ تەرەپتە ئىشەنچ ئېھتىياجىنى ئازايتىدۇ. بىز ھېسابات ئاچقۇچىنى ئەسلا كۆرمەيمىز: سىز بەرگىنىڭىز ئۆزىڭىز دائىرىسىنى بەلگىلىگەن، بىر container غا، ئۆزىڭىز تاللىغان توشۇش ۋاقتى بىلەن چەكلەنگەن، باشقا نەرسىگە تەگمەي خالىغان ۋاقىتتا بىكار قىلغىلى بولىدىغان ھوقۇق.

S3 تەرەپتىمۇ شۇ چەكلىمىنى قوللىنىشقا ئەرزىيدۇ: زىيارەت ئاچقۇچىغا پەقەت مۇشۇ ئالدى قوشۇمچىغا يېزىش ھوقۇقى بېرىڭ. پەقەت mouseplayer/goals/ غا قوشالايدىغان ئاچقۇچ سىزىپ كەتسىمۇ باشقا bucket لىرىڭىزنى ئوقۇيالمايدۇ.

3. ھەر نىشانغا بىر ئوبيېكت، ئاچقۇچى بولسا چېسلا

ئوبيېكت ساقلاشتا ئاخىرىغا قوشۇش يوق. كۈندىلىك ھۆججەتنى ھەر قېتىم پۈتۈنلەي قايتا يېزىش كېرەك بولاتتى، بىرلا ۋاقىتتا كەلگەن ئىككى نىشان بىر-بىرىنى قاپلاپ كېتەتتى. شۇڭا ھەر ئەمەلگە ئاشقان نىشان ئۆز ئوبيېكتىغا ئايلىنىدۇ.

بۇنىڭ بەدىلى نۇرغۇن كىچىك ئوبيېكت؛ ئاچقۇچ ئورۇنلاشتۇرۇشى شۇنى ئىشلەتكىلى بولىدىغان قىلىدۇ:

prefix/YYYY/MM/DD/channel/session-goal.json

ئامبار بىر كۈننى بىر partition قىلىپ ئوقۇيدۇ، قايتا تولۇقلاش سۈرۈشتۈرۈش ئەمەس، ئالدى قوشۇمچە سايىلىشى بولىدۇ. چېسلا ئورنىغا تۈر بويىچە ئايرىماقچى بولسىڭىز، channel كىملىكىنى ئالدى قوشۇمچىغا قويۇڭ.

ھەر ئوبيېكت بىر قۇر JSON

قەستەن چېكىندۈرۈلمىگەن، شۇڭا پۈتۈن ئالدى قوشۇمچىنى ئوبيېكتلارنى بىرمۇبىر ئاچماي NDJSON قىلىپ ئوقۇغىلى بولىدۇ. ۋاقىت تامغىسى، تۈر، سېسىيە، خېرىدار كىملىكى، نىشان، قىممەت، پۇل ۋە خاتىرىنى قويىدىغان ئۇلىنىش بار.

بوش قىممەت نۆل ئەمەس، null

پۇل قىممىتى يوق نىشان null يازىدۇ. ئامباردا نۆل ئەسلا بولمىغان ئومۇمىي سانغا قوشۇلاتتى — «سومما پۈتۈشۈلمىگەن» بىلەن «سومما نۆل» نىڭ پەرقى ئېكسپورتتىمۇ ساقلىنىدۇ.

4. 403 قايتۇرسا، ئالدى بىلەن بۇنى ئوقۇڭ

رەت قىلىنغان S3 تەلىپى ھېچنېمە دېگۈدەك ئېيتمايدۇ، خاتىرىمىزدىكى ئۇچۇرنىڭ S3 تىن كۆپرەك ئېيتىشىنىڭ سەۋەبى بار: رايون ئىمزاغا كىرىدۇ. خاتا رايون ۋە خاتا ئاچقۇچ ئوخشاش 403 نى بېرىدۇ، شۇڭا روشەن گۇمان — ئاچقۇچ — پەقەت يېرىم ھالەتتە توغرا.

مۇشۇ تەرتىپتە ئۈچ نەرسىنى تەكشۈرۈڭ:

  • رايون، bucket دوكلات قىلغاندەك دەل بولسۇن. R2 ۋە Google Cloud Storage auto ئالىدۇ ۋە تەكشۈرمەيدۇ؛ باشقىلارنىڭ ھەممىسى تەكشۈرىدۇ.
  • ئالدى قوشۇمچە ھوقۇقى. دائىرىسى mouseplayer/ بىلەن چەكلەنگەن ئاچقۇچ mouseplayer-goals/ غا يازالمايدۇ — بايلىق ARN دىكى ئاخىرقى يانتۇ سىزىق مۇھىم.
  • ئاخىرقى نۇقتا، R2 ۋە S3 غا ماس ساقلىغۇچلار ئۈچۈن. host نى https:// سىز چاپلاڭ؛ ھەر ھالدا ئۇنى ئېلىۋېتىمىز، ئەمما ئۇنىڭغا قوشۇلغان يول باشقا bucket نى بىلدۈرىدۇ.

زىيارەت ئاچقۇچى كىملىكى قەستەن ئوچۇق ساقلىنىدۇ. ئۇ لايىھە بويىچە ھەر ئىمزالانغان تەلەپتە بارىدۇ؛ ئۇنى شىفىرلاش قوغداشسىز ئەمگەك بولاتتى. مەخپىي ئاچقۇچ شىفىرلىنىدۇ، قايتا كۆرسىتىلمەيدۇ ۋە ۋەزىپىنى توشۇيدىغان ئىچكى قاتارغا ھەرگىز كىرمەيدۇ.

بۇ يەردە ئاتالغان بارلىق تاۋار ماركىلىرى ئۆز ئىگىلىرىگە تەۋە. MousePlayer نىڭ بۇ تەمىنلىگۈچىلەر بىلەن سودا مۇناسىۋىتى يوق.