অবজেক্ট সংৰক্ষণলৈ ৰপ্তানি

প্ৰতিটো পূৰণ হোৱা লক্ষ্যৰ বাবে এটা JSON অবজেক্ট, আপোনাৰ নিজা বাকেটত। BigQuery ৰ বাহিৰৰ সকলো ৱেৰহাউছলৈ যোৱাৰ পথ এইটো।

1. ই পূৰণ কৰা ব্যৱধান

এতিয়ালৈকে MousePlayer ৰ পৰা ডেটা ৱেৰহাউছলৈ ঠিক এটাহে পথ আছিল, আৰু সেয়া Google লৈ গৈছিল। Snowflake, Redshift বা ClickHouse ব্যৱহাৰ কৰিলে কোনো পথ নাছিল — অথচ তিনিওটাই অবজেক্ট সংৰক্ষণৰ পৰা সহজে পঢ়ে।

সেয়ে সংযোগে প্ৰতিটো ৱেৰহাউছত পৃথককৈ লিখাৰ সলনি অবজেক্ট সংৰক্ষণত লিখে। Snowflake এ S3 ৰ পৰা, Redshift এ S3 ৰ পৰা, ClickHouse এ S3 ৰ পৰা আৰু BigQuery এ Google Cloud Storage ৰ পৰা গ্ৰহণ কৰে। এটা ৰপ্তানিয়ে সকলোকে পায়।

ক’তঠিকনা দিয়াৰ পদ্ধতি
Amazon S3Signature Version 4, হোষ্টত বাকেট
Cloudflare R2আপোনাৰ একাউণ্টৰ এণ্ডপইণ্টৰ বিপৰীতে Signature Version 4
Google Cloud StorageHMAC কীৰ সৈতে ইয়াৰ S3-সঙ্গত API ৰ জৰিয়তে
MinIO, Wasabi, Backblaze B2 আৰু অন্যান্যআপোনাৰ এণ্ডপইণ্টৰ বিপৰীতে Signature Version 4
Azure Blob Storageকণ্টেইনাৰৰ SAS লিংক — আমাৰ ফালে কোনো স্বাক্ষৰেই নালাগে

2. Azure কিয় বেলেগ আৰু সেইটো কিয় ভাল

Azure Blob এ Signature Version 4 ব্যৱহাৰ নকৰে; SharedKey ৰে স্বাক্ষৰ কৰে। আমি দ্বিতীয় স্বাক্ষৰ পদ্ধতি তৈয়াৰ কৰিব পাৰিলোঁহেঁতেন। তাৰ সলনি সংযোগে লয় এটা কণ্টেইনাৰৰ SAS লিংক — আপোনাৰ নিজা ষ্ট’ৰেজ একাউণ্টত তৈয়াৰ কৰা URL, যাৰ ভিতৰত স্বাক্ষৰ ইতিমধ্যে আছে।

আমাৰ ফালে কম ক’ড আৰু আপোনাৰ ফালে কম বিশ্বাসৰ প্ৰয়োজন। আমি একাউণ্টৰ কী কেতিয়াও নেদেখোঁ: আপুনি নিজে পৰিসৰ নিৰ্ধাৰণ কৰা এটা কণ্টেইনাৰৰ অনুমতি দিয়ে, নিজৰ বাছনিৰ ম্যাদসহ; আন একো নুচুৱাকৈ যিকোনো সময়তে বাতিল কৰিব পাৰে।

S3 ৰ ফালেও একে সংযম প্ৰয়োগ কৰা ভাল: access key ক কেৱল এই এটা উপসৰ্গত লিখাৰ অনুমতি দিয়ক, আন একো নহয়। কেৱল ইয়াত যোগ কৰিব পৰা কী mouseplayer/goals/ ফাদিল হ’লেও আপোনাৰ আন বাকেট পঢ়িব নোৱাৰে।

3. প্ৰতি লক্ষ্যত এটা অবজেক্ট, আৰু কী এটা তাৰিখ

অবজেক্ট সংৰক্ষণত শেষত যোগ কৰাৰ সুবিধা নাই। দৈনিক ফাইল প্ৰতিবাৰ সম্পূৰ্ণকৈ পুনৰ লিখিব লাগিব, আৰু একেলগে অহা দুটা লক্ষ্যই ইটোৱে সিটোক মচি লিখিব। সেয়ে পূৰণ হোৱা প্ৰতিটো লক্ষ্য পৃথক অবজেক্ট হয়।

ইয়াৰ মূল্য হৈছে বহু সৰু অবজেক্ট; কীৰ গঠনেই ইয়াক ব্যৱহাৰযোগ্য কৰে:

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

ৱেৰহাউছে এটা দিন এটা পাৰ্টিশ্যন হিচাপে পঢ়ে, আৰু পিছৰ পৰা পূৰণ কৰাটো কুৱেৰিৰ সলনি উপসৰ্গ স্কেন। তাৰিখৰ সলনি প্ৰকল্প অনুসৰি ভাগ কৰিব বিচাৰিলে উপসৰ্গত চেনেল ID দিয়ক।

প্ৰতিটো অবজেক্ট JSON ৰ এটা শাৰী

ইচ্ছাকৃতভাৱে ইণ্ডেণ্ট কৰা নহয়, যাতে প্ৰতিটো অবজেক্ট পৃথককৈ নোখোলাকৈ সম্পূৰ্ণ উপসৰ্গ NDJSON হিচাপে পঢ়িব পাৰি। টাইমষ্টেম্প, প্ৰকল্প, ছেছন, গ্ৰাহক ID, লক্ষ্য, মূল্য, মুদ্ৰা আৰু ৰেকৰ্ডিং পুনৰ চলোৱা লিংক থাকে।

খালী মূল্য null, শূন্য নহয়

আৰ্থিক মূল্য নথকা লক্ষ্যই লিখে null। ৱেৰহাউছত শূন্য যোগ কৰিলে কেতিয়াও নথকা মুঠ পৰিমাণ ওলাব — “কোনো পৰিমাণ নিৰ্ধাৰিত নাই” আৰু “শূন্য পৰিমাণ” ৰ পাৰ্থক্য ৰপ্তানিতো থাকে।

4. 403 উত্তৰ আহিলে প্ৰথমে এইটো পঢ়ক

প্ৰত্যাখ্যান কৰা S3 অনুৰোধে প্ৰায় একোৱেই নজনায়; আমাৰ লগৰ ত্ৰুটি বাৰ্তাই S3 তকৈ অধিক কোৱাৰ কাৰণ আছে: অঞ্চল স্বাক্ষৰৰ ভিতৰত যায়। ভুল অঞ্চল আৰু ভুল কী দুয়োটাতে একেই 403 হয়, সেয়ে প্ৰথমে কৰা সন্দেহ — কী — কেৱল আধা ক্ষেত্ৰতহে সঠিক।

এই ক্ৰমত তিনিটা বস্তু চাওক:

  • অঞ্চল, বাকেটে যিদৰে জনায় ঠিক তেনেদৰে। R2 আৰু Google Cloud Storage এ লয় auto আৰু পৰীক্ষা নকৰে; আন সকলোৱে কৰে।
  • উপসৰ্গৰ অনুমতি। কেৱল ইয়াৰ অনুমতি থকা কী mouseplayer/ ইয়াত লিখিব নোৱাৰে mouseplayer-goals/ — resource ARN ত শেষৰ স্লেশ গুৰুত্বপূৰ্ণ।
  • এণ্ডপইণ্ট, R2 আৰু S3-সঙ্গত সংৰক্ষণৰ বাবে। হোষ্ট পেষ্ট কৰক এইটো বাদ দি: https://; যিকোনো ক্ষেত্ৰতে আমি ইয়াক আঁতৰাওঁ, কিন্তু লগত পাথ যোগ কৰিলে সেয়া বেলেগ বাকেট।

access key ID ইচ্ছাকৃতভাৱে সাধাৰণ পাঠত সংৰক্ষণ কৰা হয়। নক্সা অনুসৰিয়েই প্ৰতিটো স্বাক্ষৰিত অনুৰোধত যায়, সেয়ে এনক্ৰিপ্ট কৰিলে সুৰক্ষা নবঢ়াকৈ কামহে বাঢ়িব। secret এনক্ৰিপ্ট কৰা হয়, আৰু দেখুওৱা নহয় আৰু কাম কঢ়িওৱা ভিতৰুৱা শাৰীত কেতিয়াও নাযায়।

ইয়াত উল্লেখ কৰা সকলো ট্ৰেডমাৰ্ক সংশ্লিষ্ট মালিকৰ। এই প্ৰদানকাৰীসকলৰ সৈতে MousePlayer ৰ কোনো ব্যৱসায়িক সম্পৰ্ক নাই।