වස්තු ගබඩා අපනයනය

ඉටු වූ එක් ඉලක්කයකට එක් JSON වස්තුවක්, ඔබට අයත් bucket එකක. BigQuery නොවන සෑම දත්ත ගබඩාවකටම මාර්ගය මෙයයි.

1. මෙයින් පුරවන හිඩැස

මෙතෙක් MousePlayer සිට දත්ත ගබඩාවකට තිබුණේ හරියටම එක් මාර්ගයක් වන අතර එය Google වෙත ගියේය. ඔබ Snowflake, Redshift හෝ ClickHouse ධාවනය කළේ නම් මාර්ගයක් තිබුණේ නැත – තුනම වස්තු ගබඩාවෙන් ගැටලුවක් නැතිව කියවුවත්.

එබැවින් bridge එක් එක් දත්ත ගබඩාවට වෙන වෙනම වෙනුවට වස්තු ගබඩාවට ලියයි. Snowflake S3 වෙතින්, Redshift S3 වෙතින්, ClickHouse S3 වෙතින් සහ BigQuery Google Cloud Storage වෙතින් ලබාගනී. එක් අපනයනයකින් සියල්ලට ළඟා වේ.

ස්ථානයආමන්ත්‍රණය කරන ආකාරය
Amazon S3Signature Version 4, සේවාදායක නමේ bucket
Cloudflare R2ඔබේ ගිණුම් endpoint වෙත Signature Version 4
Google Cloud Storageඑහි S3-අනුකූල API හරහා, HMAC යතුරක් සමඟ
MinIO, Wasabi, Backblaze B2 සහ වෙනත්ඔබේ endpoint වෙත Signature Version 4
Azure Blob Storageබහාලුම් SAS සබැඳියක් – අපේ පැත්තේ අත්සන් කිරීමක් කිසිසේත් නැත

2. Azure වෙනස් වන්නේ ඇයි සහ එය හොඳ වන්නේ ඇයි

Azure Blob Signature Version 4 භාවිත නොකරයි; SharedKey මඟින් අත්සන් කරයි. අපට දෙවන අත්සන් ක්‍රමයක් සෑදිය හැකිව තිබුණි. ඒ වෙනුවට bridge ගන්නේ බහාලුම් SAS සබැඳියකි – ඔබේම ගබඩා ගිණුමේ ජනනය කරන, දැනටමත් අත්සන අඩංගු URL එකකි.

එයින් අපේ පැත්තේ කේතත් ඔබේ පැත්තේ විශ්වාසයත් අඩු වේ. ගිණුම් යතුරක් අපි කිසිදා නොදකිමු: ඔබ දෙන්නේ ඔබම විෂය පථය සීමා කළ, එක් බහාලුමකට අදාළ, ඔබ තෝරන අවසන් දිනයක් ඇති, වෙනත් කිසිවක් වෙනස් නොකර ඕනෑම වේලාවක අවලංගු කළ හැකි අවසරයකි.

S3 පැත්තේද එම සීමාව යෙදීම වටී: ප්‍රවේශ යතුරට ලිවීමේ අවසර දෙන්න මෙම එක් උපසර්ගයට පමණක් , වෙනත් කිසිවකට නොවේ. පහතට පමණක් එක් කළ හැකි යතුරකට mouseplayer/goals/ කාන්දු වුවත් අනෙක් bucket කියවිය නොහැකිය.

3. ඉලක්කයකට එක් වස්තුවක්, යතුර දිනයකි

වස්තු ගබඩාවට අගට එක් කිරීමක් නැත. දෛනික ගොනුවක් සෑම වරක්ම සම්පූර්ණයෙන් නැවත ලිවීමට සිදුවන අතර එකවර ලැබෙන ඉලක්ක දෙකක් එකිනෙක මත ලියනු ඇත. එබැවින් ඉටු වූ සෑම ඉලක්කයක්ම වෙනම වස්තුවක් වේ.

එහි මිල කුඩා වස්තු බොහෝ ගණනකි; එය ප්‍රායෝගික කරන්නේ යතුරු සැලැස්මයි:

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

දත්ත ගබඩාව එක් දිනයක් එක් කොටසක් ලෙස කියවන අතර පසුපිරවීම විමසුමක් වෙනුවට උපසර්ග පිරික්සුමකි. දිනය වෙනුවට ව්‍යාපෘතිය අනුව බෙදීමට නම් channel ID උපසර්ගයට එක් කරන්න.

සෑම වස්තුවක්ම JSON එක් පේළියකි

හිතාමතා ඇතුළට නොතල්ලු කර ඇත; එවිට වස්තු එකින් එක විවෘත නොකර සම්පූර්ණ උපසර්ගයක් NDJSON ලෙස කියවිය හැකිය. වේලා සටහන, ව්‍යාපෘතිය, සැසිය, පාරිභෝගික අංකය, ඉලක්කය, වටිනාකම, මුදල් ඒකකය සහ පටිගත කිරීම නැවත ධාවනය කරන සබැඳිය.

හිස් අගයක් null ය, ශුන්‍යය නොවේ

මුදල් වටිනාකමක් නැති ඉලක්කයක් ලියන්නේ null. දත්ත ගබඩාවක ශුන්‍යයක් කිසිදා නොතිබූ එකතුවකට එක් වනු ඇත – “මුදලක් එකඟ වී නැත” සහ “ශුන්‍ය මුදලක්” අතර වෙනස අපනයනයේද රැකේ.

4. 403 පිළිතුර ලැබේ නම් මුලින් මෙය කියවන්න

ප්‍රතික්ෂේප වූ S3 ඉල්ලීමක් කිසිවක් පාහේ නොකියන අතර අපේ සටහනේ දෝෂ පණිවිඩය S3 ට වඩා විස්තර කියන්නට හේතුවක් ඇත: කලාපය අත්සනට ඇතුළත් වේ. වැරදි කලාපයක් සහ වැරදි යතුරක් එකම 403 ලබා දෙයි; එබැවින් පැහැදිලි සැකය – යතුර – නිවැරදි වන්නේ අඩක් වරක් පමණි.

මෙම අනුපිළිවෙළින් දේවල් තුනක් පරීක්ෂා කරන්න:

  • කලාපය, bucket වාර්තා කරන අයුරින්ම. R2 සහ Google Cloud Storage පිළිගන්නේ auto සහ එය පරීක්ෂා නොකරයි; අනෙක් සියල්ල පරීක්ෂා කරයි.
  • උපසර්ග අවසරය. පහතට සීමා කළ යතුරකට mouseplayer/ ලිවිය නොහැකිය: mouseplayer-goals/ – resource ARN හි අවසාන බෙදුම් ඉර වැදගත්ය.
  • endpoint, R2 සහ S3-අනුකූල ගබඩා සඳහා. පහත නැතිව සේවාදායක නම අලවන්න: https://; අපි කෙසේ වුවත් එය ඉවත් කරන්නෙමු, එහෙත් එයට මාර්ගයක් එක් කළහොත් වෙනත් bucket එකකි.

ප්‍රවේශ යතුරු අංකය හිතාමතා සාමාන්‍ය පෙළෙන් ගබඩා කරයි. සැලසුම අනුව සෑම අත්සන් කළ ඉල්ලීමකම එය යන බැවින් එය සංකේතනය කිරීම ආරක්ෂාවක් නැති උත්සාහයකි. රහස් යතුර සංකේතනය කර නැවත නොපෙන්වන අතර කාර්යය රැගෙන යන අභ්‍යන්තර පෝලිමට කිසිදා නොයයි.

මෙහි සඳහන් සියලු වෙළඳ ලකුණු ඒවායේ අයිතිකරුවන් සතුය. MousePlayer මෙම සැපයුම්කරුවන් සමඟ ව්‍යාපාරික සම්බන්ධතාවක් නැත.