بسته به موجودی شما، ممکن است به اشتراک گذاری (یا تقسیم فیدها به چندین فایل) ضروری باشد.
زمان استفاده از شاردینگ
فید بیش از 200 مگابایت برای 1 فایل (پس از فشرده سازی gzip) است.
- مثال: فید در دسترس بودن ایجاد شده 1 گیگابایت است. این باید به بیش از 5 فایل جداگانه (یا خردهها) تقسیم شود.
موجودی شریک در بین سیستم ها و/یا مناطق توزیع می شود که منجر به مشکل در تطبیق موجودی می شود.
- مثال: شریک دارای موجودی ایالات متحده و اتحادیه اروپا است که در سیستم های جداگانه زندگی می کنند. فید ممکن است با 2 فایل (یا خرده)، 1 برای ایالات متحده و 1 برای اتحادیه اروپا با همان
nonce
وgeneration_timestamp
ایجاد شود.
- مثال: شریک دارای موجودی ایالات متحده و اتحادیه اروپا است که در سیستم های جداگانه زندگی می کنند. فید ممکن است با 2 فایل (یا خرده)، 1 برای ایالات متحده و 1 برای اتحادیه اروپا با همان
قوانین عمومی
- هر قطعه نمی تواند بیش از 200 مگابایت برای 1 فایل (پس از فشرده سازی gzip) باشد.
- ما بیش از 20 خرده در هر خوراک را توصیه نمی کنیم. اگر توجیه تجاری دارید که به بیش از این مقدار نیاز دارد، لطفاً برای آموزش بیشتر با پشتیبانی تماس بگیرید.
- رکوردهای انفرادی (به عنوان مثال یک شی
Merchant
) باید در یک خرده ارسال شوند، آنها را نمی توان در چند خرده تقسیم کرد. با این حال، لازم نیست برای فیدهای آینده، آنها با همانshard_number
در قسمت ارسال شوند. - برای عملکرد بهتر، دادههای شما باید به طور مساوی بین خردهها تقسیم شوند تا همه فایلهای خرد شده از نظر اندازه مشابه باشند.
نحوه خرد کردن فیدها
میتوانید فید رویدادها را با تقسیم یک JSON به فایلهای JSON مجزا با رویدادهای غیر همپوشانی و بهروزرسانی توصیفگر فایل JSON با فهرست نامهای فایل JSON تقسیم کنید.
توصیه می شود: برای هر فایل (یا قطعه)، نام فایل را طوری تنظیم کنید که نوع فید، مهر زمانی و شماره قطعه را نشان دهد. خردهها باید تقریباً از نظر اندازه برابر باشند و پس از بارگذاری همه خردهها پردازش میشوند.
نمونه خرد شده
توصیفگر فایل - event.feeddata.v1_1728306001.filedescriptor.json
{ "generation_timestamp": 1728306001, "name": "event.feeddata.v1", "data_file": [ "event.feeddata.v1_1728306001_001.json", "event.feeddata.v1_1728306001_002.json" ] }
Shard 0 - event.feeddata.v1_1728306001_001.json
{ "data": [ { "id": "event-1", ... }, { "id": "event-2", ... } ] }
Shard 1 - event.feeddata.v1_1728306001_002.json
{ "data": [ { "id": "event-3", ... }, { "id": "event-4", ... } ] }
قطعات برای موجودی توزیع شده شریک
ادغام موجودی توزیع شده در چندین سیستم و یا منطقه در یک خوراک واحد برای شرکا می تواند چالش برانگیز باشد. شاردینگ را می توان برای حل چالش های تطبیق با تنظیم هر قطعه برای مطابقت با مجموعه موجودی هر سیستم توزیع شده استفاده کرد.
به عنوان مثال، فرض کنید موجودی یک شریک به 2 منطقه (موجودی ایالات متحده و اتحادیه اروپا)، که در 2 سیستم جداگانه زندگی می کنند، جدا شده است.
شریک می تواند هر فید را به 2 فایل (یا خرده) تقسیم کند:
برای اطمینان از پردازش صحیح فیدها از مراحل زیر استفاده کنید:
- در مورد یک برنامه زمانبندی آپلود تصمیم بگیرید و هر نمونه از موجودی را برای پیروی از زمانبندی پیکربندی کنید.
- اعداد تکه تکه ای را برای هر نمونه اختصاص دهید (به عنوان مثال US = N، EU = N + 1).
total_shards
را روی تعداد کل خرده ها تنظیم کنید. - در هر زمان آپلود برنامهریزیشده، روی
generation_timestamp
تصمیم بگیرید. در set all filenames مقادیر یکسانی را برای این دو فیلد نگه دارید و همه نامهای فایل مورد انتظار را در فایل توصیفگر فهرست کنید.-
generation_timestamp
باید گذشته فعلی یا اخیر باشد (در حالت ایده آل، مهر زمانی خوانده شده در پایگاه داده شریک)
-
- پس از آپلود شدن همه خردهها، Google با استفاده از
generation_timestamp
وnonce
آن را گروهبندی میکند.
Google فید را بهعنوان یک پردازش میکند، حتی اگر هر خرده نشاندهنده منطقه متفاوتی از موجودی شریک باشد و میتواند در زمان متفاوتی از روز آپلود شود تا زمانی که generation_timestamp
در همه خردهها یکسان باشد.
بسته به موجودی شما، ممکن است به اشتراک گذاری (یا تقسیم فیدها به چندین فایل) ضروری باشد.
زمان استفاده از شاردینگ
فید بیش از 200 مگابایت برای 1 فایل (پس از فشرده سازی gzip) است.
- مثال: فید در دسترس بودن ایجاد شده 1 گیگابایت است. این باید به بیش از 5 فایل جداگانه (یا خردهها) تقسیم شود.
موجودی شریک در بین سیستم ها و/یا مناطق توزیع می شود که منجر به مشکل در تطبیق موجودی می شود.
- مثال: شریک دارای موجودی ایالات متحده و اتحادیه اروپا است که در سیستم های جداگانه زندگی می کنند. فید ممکن است با 2 فایل (یا خرده)، 1 برای ایالات متحده و 1 برای اتحادیه اروپا با همان
nonce
وgeneration_timestamp
ایجاد شود.
- مثال: شریک دارای موجودی ایالات متحده و اتحادیه اروپا است که در سیستم های جداگانه زندگی می کنند. فید ممکن است با 2 فایل (یا خرده)، 1 برای ایالات متحده و 1 برای اتحادیه اروپا با همان
قوانین عمومی
- هر قطعه نمی تواند بیش از 200 مگابایت برای 1 فایل (پس از فشرده سازی gzip) باشد.
- ما بیش از 20 خرده در هر خوراک را توصیه نمی کنیم. اگر توجیه تجاری دارید که به بیش از این مقدار نیاز دارد، لطفاً برای آموزش بیشتر با پشتیبانی تماس بگیرید.
- رکوردهای انفرادی (به عنوان مثال یک شی
Merchant
) باید در یک خرده ارسال شوند، آنها را نمی توان در چند خرده تقسیم کرد. با این حال، لازم نیست برای فیدهای آینده، آنها با همانshard_number
در قسمت ارسال شوند. - برای عملکرد بهتر، دادههای شما باید به طور مساوی بین خردهها تقسیم شوند تا همه فایلهای خرد شده از نظر اندازه مشابه باشند.
نحوه خرد کردن فیدها
میتوانید فید رویدادها را با تقسیم یک JSON به فایلهای JSON مجزا با رویدادهای غیر همپوشانی و بهروزرسانی توصیفگر فایل JSON با فهرست نامهای فایل JSON تقسیم کنید.
توصیه می شود: برای هر فایل (یا قطعه)، نام فایل را طوری تنظیم کنید که نوع فید، مهر زمانی و شماره قطعه را نشان دهد. خردهها باید تقریباً از نظر اندازه برابر باشند و پس از بارگذاری همه خردهها پردازش میشوند.
نمونه خرد شده
توصیفگر فایل - event.feeddata.v1_1728306001.filedescriptor.json
{ "generation_timestamp": 1728306001, "name": "event.feeddata.v1", "data_file": [ "event.feeddata.v1_1728306001_001.json", "event.feeddata.v1_1728306001_002.json" ] }
Shard 0 - event.feeddata.v1_1728306001_001.json
{ "data": [ { "id": "event-1", ... }, { "id": "event-2", ... } ] }
Shard 1 - event.feeddata.v1_1728306001_002.json
{ "data": [ { "id": "event-3", ... }, { "id": "event-4", ... } ] }
قطعات برای موجودی توزیع شده شریک
ادغام موجودی توزیع شده در چندین سیستم و یا منطقه در یک خوراک واحد برای شرکا می تواند چالش برانگیز باشد. شاردینگ را می توان برای حل چالش های تطبیق با تنظیم هر قطعه برای مطابقت با مجموعه موجودی هر سیستم توزیع شده استفاده کرد.
به عنوان مثال، فرض کنید موجودی یک شریک به 2 منطقه (موجودی ایالات متحده و اتحادیه اروپا)، که در 2 سیستم جداگانه زندگی می کنند، جدا شده است.
شریک می تواند هر فید را به 2 فایل (یا خرده) تقسیم کند:
برای اطمینان از پردازش صحیح فیدها از مراحل زیر استفاده کنید:
- در مورد یک برنامه زمانبندی آپلود تصمیم بگیرید و هر نمونه از موجودی را برای پیروی از زمانبندی پیکربندی کنید.
- اعداد تکه تکه ای را برای هر نمونه اختصاص دهید (به عنوان مثال US = N، EU = N + 1).
total_shards
را روی تعداد کل خرده ها تنظیم کنید. - در هر زمان آپلود برنامهریزیشده، روی
generation_timestamp
تصمیم بگیرید. در set all filenames مقادیر یکسانی را برای این دو فیلد نگه دارید و همه نامهای فایل مورد انتظار را در فایل توصیفگر فهرست کنید.-
generation_timestamp
باید گذشته فعلی یا اخیر باشد (در حالت ایده آل، مهر زمانی خوانده شده در پایگاه داده شریک)
-
- پس از آپلود شدن همه خردهها، Google با استفاده از
generation_timestamp
وnonce
آن را گروهبندی میکند.
Google فید را بهعنوان یک پردازش میکند، حتی اگر هر خرده نشاندهنده منطقه متفاوتی از موجودی شریک باشد و میتواند در زمان متفاوتی از روز آپلود شود تا زمانی که generation_timestamp
در همه خردهها یکسان باشد.