ਆਬਜੈਕਟ ਸਟੋਰੇਜ ਨਿਰਯਾਤ
ਹਰ ਪੂਰੇ ਟੀਚੇ ਲਈ ਤੁਹਾਡੀ ਆਪਣੀ ਬਕੇਟ ਵਿੱਚ ਇੱਕ 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
ਵੇਅਰਹਾਊਸ ਇੱਕ ਦਿਨ ਇੱਕ ਭਾਗ ਵਜੋਂ ਪੜ੍ਹਦਾ ਹੈ ਅਤੇ ਪਿਛਲਾ ਭਰਨਾ ਕਵੇਰੀ ਦੀ ਥਾਂ ਪ੍ਰੀਫਿਕਸ ਸਕੈਨ ਹੈ। ਤਾਰੀਖ ਦੀ ਥਾਂ ਪ੍ਰੋਜੈਕਟ ਅਨੁਸਾਰ ਵੰਡ ਚਾਹੋ ਤਾਂ channel 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 ਦਾ ਇਨ੍ਹਾਂ ਪ੍ਰਦਾਤਾਵਾਂ ਨਾਲ ਕੋਈ ਵਪਾਰਕ ਸੰਬੰਧ ਨਹੀਂ ਹੈ।