أساسيات واجهة برمجة التطبيقات الخاصة بالتجميع الخاص

المفاهيم الرئيسية لواجهة برمجة التطبيقات Private Aggregation API

مَن هم المستخدمون المعنيّون بهذا المستند؟

تتيح Private Aggregation API جمع البيانات المجمّعة من وحدات معالجة صغيرة يمكنها الوصول إلى البيانات على جميع المواقع الإلكترونية. إنّ المفاهيم الواردة هنا مهمة للمطوّرين الذين ينشئون وظائف إعداد التقارير ضمن واجهتَي برمجة التطبيقات Shared Storage API وProtected Audience API.

  • إذا كنت مطوّرًا تعمل على إنشاء نظام إعداد تقارير لقياس الأداء على مستوى مواقع إلكترونية متعددة
  • إذا كنت مسوّقًا أو عالم بيانات أو مستهلكًا آخر لتقارير الملخّصات، سيساعدك فهم هذه الآليات في اتخاذ قرارات التصميم لاسترداد تقرير ملخّص محسّن.

العبارات الرئيسية

قبل قراءة هذا المستند، من المفيد التعرّف على المصطلحات والمفاهيم الأساسية. سيتم وصف كل من هذه المصطلحات بالتفصيل هنا.

  • مفتاح التجميع (المعروف أيضًا باسم الحزمة) هو مجموعة محدّدة مسبقًا من نقاط البيانات. على سبيل المثال، قد تريد جمع مجموعة من بيانات الموقع الجغرافي التي يحدّد فيها المتصفّح اسم البلد. قد يحتوي مفتاح التجميع على أكثر من سمة واحدة (على سبيل المثال، البلد ومعرّف أداة المحتوى).
  • القيمة القابلة للتجميع هي نقطة بيانات فردية يتم جمعها في مفتاح تجميع. إذا أردت قياس عدد المستخدمين من فرنسا الذين شاهدوا محتواك، سيكون France بُعدًا في مفتاح التجميع، وستكون viewCount من 1 هي القيمة القابلة للتجميع.
  • يتم إنشاء التقارير القابلة للتجميع وتشفيرها داخل المتصفّح. بالنسبة إلى Private Aggregation API، يحتوي هذا الحقل على بيانات حول حدث واحد.
  • تعالج خدمة تجميع البيانات البيانات من التقارير القابلة للتجميع لإنشاء تقرير موجز.
  • تقرير الملخّص هو الناتج النهائي لـ "خدمة تجميع البيانات"، ويتضمّن بيانات المستخدمين المجمّعة مع إضافة تشويش وبيانات مفصّلة عن الإحالات الناجحة.
  • Worklet هو جزء من البنية الأساسية يتيح لك تنفيذ دوال JavaScript معيّنة وإرجاع المعلومات إلى مقدّم الطلب. يمكنك تنفيذ JavaScript داخل worklet، ولكن لا يمكنك التفاعل أو التواصل مع الصفحة الخارجية.

سير عمل Private Aggregation

عند طلب Private Aggregation API باستخدام مفتاح تجميع وقيمة قابلة للتجميع، ينشئ المتصفّح تقريرًا قابلاً للتجميع. يتم إرسال التقارير إلى خادمك الذي يجمع التقارير في حِزم. تتم معالجة التقارير المجمّعة لاحقًا من خلال "خدمة تجميع البيانات"، ويتم إنشاء تقرير موجز.

تنتقل البيانات من الجهاز إلى أداة الجمع، ثم إلى "خدمة تجميع البيانات" لإنشاء تقرير موجز.
تدفّق البيانات من العميل إلى أداة الجمع:
  1. عند استدعاء Private Aggregation API، ينشئ العميل (المتصفّح) تقريرًا قابلاً للتجميع ويرسله إلى خادمك ليتم جمعه.
  2. يجمع الخادم التقارير من الأجهزة ويقسّمها إلى دفعات لإرسالها إلى "خدمة تجميع البيانات".
  3. بعد جمع عدد كافٍ من التقارير، يمكنك تجميعها وإرسالها إلى "خدمة التجميع" التي تعمل في بيئة تنفيذ موثوقة، وذلك لإنشاء تقرير موجز.

يشبه سير العمل الموضّح في هذا القسم واجهة برمجة التطبيقات Attribution Reporting API. ومع ذلك، تربط ميزة "إعداد تقارير تحديد المصدر" البيانات التي يتم جمعها من حدث ظهور وإحالة ناجحة، ويحدثان في أوقات مختلفة. تقيس ميزة "التجميع الخاص" حدثًا واحدًا على مستوى مواقع إلكترونية متعددة.

مفتاح التجميع

يمثّل مفتاح التجميع (يُطلق عليه اختصارًا "المفتاح") الحزمة التي سيتم فيها تجميع القيم القابلة للتجميع. يمكن ترميز سمة واحدة أو أكثر في المفتاح. تمثّل السمة جانبًا معيّنًا تريد الحصول على المزيد من الإحصاءات بشأنه، مثل الفئة العمرية للمستخدمين أو عدد مرّات ظهور حملة إعلانية.

على سبيل المثال، قد يكون لديك أداة مضمّنة في مواقع إلكترونية متعددة وتريد تحليل البلد الذي ينتمي إليه المستخدمون الذين شاهدوا هذه الأداة. إذا كنت تريد الإجابة عن أسئلة مثل "كم عدد المستخدمين الذين شاهدوا تطبيقك المصغّر من البلد (س)؟" لإعداد تقرير عن هذا السؤال، يمكنك إعداد مفتاح تجميع يرمّز سمتَين: معرّف الأداة ومعرّف البلد.

المفتاح المقدَّم إلى Private Aggregation API هو BigInt، الذي يتألف من عدة سمات. في هذا المثال، السمتان هما معرّف الأداة ومعرّف البلد. لنفترض أنّ معرّف الأداة يمكن أن يصل إلى 4 أرقام، مثل 1234، وأنّه يتم ربط كل بلد برقم بالترتيب الأبجدي، مثل أفغانستان 1 وفرنسا 61 وزيمبابوي 195. وبالتالي، سيكون طول المفتاح القابل للتجميع 7 أرقام، حيث يتم حجز أول 4 أحرف لـ WidgetID وآخر 3 أحرف لـ CountryID.

لنفترض أنّ المفتاح يمثّل عدد المستخدمين من فرنسا (رقم تعريف البلد 061) الذين شاهدوا معرّف الأداة 3276، فيكون مفتاح التجميع هو 3276061.

مفتاح التجميع
رقم تعريف التطبيق المصغَّر رقم تعريف البلد
3276 061

يمكن أيضًا إنشاء مفتاح التجميع باستخدام آلية تجزئة، مثل SHA-256. على سبيل المثال، يمكن تجزئة السلسلة {"WidgetId":3276,"CountryID":67} ثم تحويلها إلى القيمة BigInt التي تبلغ 42943797454801331377966796057547478208888578253058197330928948081739249096287n. إذا كانت قيمة التجزئة تتضمّن أكثر من 128 بت، يمكنك اقتطاعها للتأكّد من أنّها لن تتجاوز الحدّ الأقصى المسموح به لقيمة المجموعة وهو 2^128−1.

ضمن تطبيق مصغّر في "مساحة التخزين المشتركة"، يمكنك الوصول إلى الوحدتَين crypto و TextEncoder اللتين يمكن أن تساعداك في إنشاء قيمة تجزئة. لمزيد من المعلومات حول إنشاء قيمة تجزئة، يمكنك الاطّلاع على SubtleCrypto.digest() على MDN.

يوضّح المثال التالي كيف يمكنك إنشاء مفتاح مجموعة من قيمة مجزّأة:

async function convertToBucket(data) {
  // Encode as UTF-8 Uint8Array
  const encodedData = new TextEncoder().encode(data);

  // Generate SHA-256 hash
  const hashBuffer = await crypto.subtle.digest('SHA-256', encodedData);

  // Truncate the hash
  const truncatedHash = Array.from(new Uint8Array(hashBuffer, 0, 16));

  // Convert the byte sequence to a decimal
  return truncatedHash.reduce((acc, curr) => acc * 256n + BigInt(curr), 0n);
}

const data = {
  WidgetId: 3276,
  CountryID: 67
};

const dataString = JSON.stringify(data);
const bucket = await convertToBucket(dataString);

console.log(bucket); // 126200478277438733997751102134640640264n

قيمة قابلة للتجميع

يتم جمع القيم القابلة للتجميع لكل مفتاح على مستوى العديد من المستخدمين لإنشاء إحصاءات مجمّعة في شكل قيم ملخّصة في التقارير التلخيصية.

الآن، ارجع إلى السؤال النموذجي الذي تم طرحه سابقًا: "كم عدد المستخدمين الذين شاهدوا التطبيق المصغّر الخاص بي من فرنسا؟" ستكون الإجابة عن هذا السؤال على النحو التالي: "حوالي 4881 مستخدم شاهدوا معرّف الأداة 3276 من فرنسا". تكون القيمة القابلة للتجميع هي 1 لكل مستخدم، و "4881 مستخدمًا" هي القيمة المجمّعة التي تمثّل مجموع كل القيم القابلة للتجميع لمفتاح التجميع هذا.

مفتاح التجميع قيمة قابلة للتجميع
رقم تعريف التطبيق المصغَّر رقم تعريف البلد عدد مرّات المشاهدة
3276 061 1

في هذا المثال، نزيد القيمة بمقدار 1 لكل مستخدم يرى الأداة. من الناحية العملية، يمكن توسيع نطاق القيمة القابلة للتجميع لتحسين نسبة الإشارة إلى الضوضاء.

ميزانية المساهمة

يُطلق على كل طلب بيانات من Private Aggregation API اسم مساهمة. للحفاظ على خصوصية المستخدمين، يتم وضع حدّ لعدد المساهمات التي يمكن جمعها من مستخدم فردي.

عند جمع كل القيم القابلة للتجميع على مستوى جميع مفاتيح التجميع، يجب أن يكون المجموع أقل من ميزانية المساهمة. يتم تحديد نطاق الميزانية لكل مصدر من مصادر worklet، ولكل يوم، وتكون الميزانية منفصلة لكل من Protected Audience API وShared Storage worklet. يتم استخدام فترة متغيرة تبلغ 24 ساعة تقريبًا لليوم. إذا كان تقرير جديد قابل للتجميع سيؤدي إلى تجاوز الميزانية، لن يتم إنشاء التقرير.

يتم تمثيل ميزانية المساهمة بالمعلَمة L1، ويتم ضبطها على 216 (65,536) لكل عشر دقائق في اليوم مع حد أقصى يبلغ 220 (1,048,576). اطّلِع على الشرح لمزيد من المعلومات حول هذه المَعلمات.

قيمة ميزانية المساهمة اختيارية، ولكن يتم قياس مستوى التشويش وفقًا لها. يمكنك استخدام هذه الميزانية لتحقيق الحد الأقصى من نسبة الإشارة إلى الضوضاء في القيم الموجزة (سيتم تناول ذلك بالتفصيل في قسم الضوضاء وتغيير الحجم).

لمزيد من المعلومات عن ميزانيات المساهمة، يُرجى الاطّلاع على الشرح. يمكنك أيضًا الرجوع إلى ميزانية المساهمة للحصول على مزيد من الإرشادات.

الحدّ الأقصى للمساهمات لكلّ تقرير

قد يختلف الحدّ الأقصى للمساهمة حسب المتصل، وبالنسبة إلى "وحدة التخزين المشتركة"، تكون هذه الحدود هي الإعدادات التلقائية التي يمكن تجاوزها. في الوقت الحالي، يبلغ الحد الأقصى للمساهمات في التقارير التي يتم إنشاؤها لبرنامج استدعاء واجهة برمجة التطبيقات Shared Storage‏ 20 مساهمة لكل تقرير. من ناحية أخرى، يقتصر عدد المساهمات التي يمكن أن يقدّمها مستدعي واجهة Protected Audience API على 100 مساهمة لكل تقرير. تم اختيار هذه الحدود لتحقيق التوازن بين عدد المساهمات التي يمكن تضمينها وحجم الحمولة.

بالنسبة إلى Shared Storage، يتم تجميع المساهمات التي يتم إجراؤها ضمن عملية run() أو selectURL() واحدة في تقرير واحد. بالنسبة إلى Protected Audience API، يتم تجميع المساهمات التي تقدّمها جهة مصدر واحدة في مزاد واحد.

المساهمات مع مساحة متروكة

يتم تعديل المساهمات بشكل أكبر باستخدام ميزة الحشو. تؤدي عملية إضافة بيانات غير ضرورية إلى الحمولة إلى حماية المعلومات المتعلقة بالعدد الفعلي للمساهمات المضمّنة في التقرير القابل للتجميع. تزيد عملية الحشو من حجم الحمولة من خلال إضافة null مساهمات (أي بقيمة 0) للوصول إلى طول ثابت.

التقارير القابلة للتجميع

بعد أن يستدعي المستخدم واجهة Private Aggregation API، ينشئ المتصفّح تقارير قابلة للتجميع لتتم معالجتها من خلال "خدمة تجميع البيانات" في وقت لاحق من أجل إنشاء تقارير تلخيصية. التقرير القابل للتجميع هو بتنسيق JSON ويتضمّن قائمة مشفّرة بالمساهمات، وكل مساهمة هي عبارة عن زوج {aggregation key, aggregatable value}. يتم إرسال التقارير القابلة للتجميع مع تأخير عشوائي يصل إلى ساعة واحدة.

تكون المساهمات مشفّرة ولا يمكن قراءتها خارج "خدمة تجميع البيانات". تفكّ "خدمة تجميع البيانات" تشفير التقارير وتنشئ تقريرًا موجزًا. يصدر المنسّق مفتاح التشفير للمتصفّح ومفتاح فك التشفير لـ "خدمة تجميع البيانات"، ويعمل المنسّق كخدمة لإدارة مفاتيح التشفير. يحتفظ المنسّق بقائمة من تجزئات ثنائية لصورة الخدمة للتحقّق من أنّ المتصل مسموح له بتلقّي مفتاح فك التشفير.

مثال على تقرير قابل للتجميع تم تفعيل وضع تصحيح الأخطاء فيه:

  "aggregation_service_payloads": [
    {
      "debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAgGZidWNrZXRQAAAAAAAAAAAAAAAAAAAE0mlvcGVyYXRpb25paGlzdG9ncmFt",
      "key_id": "2cc72b6a-b92f-4b78-b929-e3048294f4d6",
      "payload": "a9Mk3XxvnfX70FsKrzcLNZPy+00kWYnoXF23ZpNXPz/Htv1KCzl/exzplqVlM/wvXdKUXCCtiGrDEL7BQ6MCbQp1NxbWzdXfdsZHGkZaLS2eF+vXw2UmLFH+BUg/zYMu13CxHtlNSFcZQQTwnCHb"
    }
  ],
  "debug_key": "777",
  "shared_info": "{\"api\":\"shared-storage\",\"debug_mode\":\"enabled\",\"report_id\":\"5bc74ea5-7656-43da-9d76-5ea3ebb5fca5\",\"reporting_origin\":\"https://localhost:4437\",\"scheduled_report_time\":\"1664907229\",\"version\":\"0.1\"}"

يمكن فحص التقارير القابلة للتجميع من صفحة chrome://private-aggregation-internals:

صفحة Private Aggregation API الداخلية
صفحة Private Aggregation API الداخلية

لأغراض الاختبار، يمكن استخدام الزر "إرسال التقارير المحدّدة" لإرسال التقرير إلى الخادم على الفور.

جمع التقارير القابلة للتجميع على دفعات

يرسل المتصفّح التقارير القابلة للتجميع إلى مصدر التطبيق الصغير الذي يتضمّن طلبًا إلى Private Aggregation API، وذلك باستخدام المسار المعروف والمدرَج التالي:

  • بالنسبة إلى Shared Storage: /.well-known/private-aggregation/report-shared-storage
  • بالنسبة إلى Protected Audience: /.well-known/private-aggregation/report-protected-audience

في نقاط النهاية هذه، عليك تشغيل خادم يعمل كجامع يتلقّى التقارير القابلة للتجميع المرسَلة من العملاء.

بعد ذلك، يجب أن يجمع الخادم التقارير في دفعات ويرسلها إلى "خدمة تجميع البيانات". إنشاء دفعات استنادًا إلى المعلومات المتاحة في الحمولة غير المشفّرة للتقرير القابل للتجميع، مثل الحقل shared_info من المفترض أن تحتوي كل مجموعة على 100 تقرير أو أكثر.

يمكنك اختيار تجميعها على أساس يومي أو أسبوعي. تتسم هذه الاستراتيجية بالمرونة، ويمكنك تغيير استراتيجية تجميع الدفعات لأحداث معيّنة تتوقّع فيها زيادة في عدد مرات الظهور، مثل أيام السنة التي يُتوقّع فيها زيادة عدد مرات الظهور. يجب أن تتضمّن الدفعات تقارير من إصدار واجهة برمجة التطبيقات نفسه، ومصدر إعداد التقارير، ووقت إعداد تقرير الجدول الزمني.

معرّفات الفلاتر

تتيح واجهة Private Aggregation API وخدمة التجميع استخدام أرقام التعريف الخاصة بالتصفية لمعالجة القياسات على مستوى أكثر تفصيلاً، مثل كل حملة إعلانية، بدلاً من معالجة النتائج في طلبات بحث أكبر.

معرّفات الفلترة في Private Aggregation API و"خدمة تجميع البيانات"
معرّفات الفلترة في Private Aggregation وAggregation Service

لبدء استخدام هذه الميزة اليوم، إليك بعض الخطوات التقريبية التي يمكنك تطبيقها على عملية التنفيذ الحالية.

خطوات Shared Storage

في حال استخدام Shared Storage API في عملية التصفّح:

  1. حدِّد المكان الذي ستعرِّف فيه وحدة Shared Storage الجديدة وتشغّلها. في المثال التالي، سمّينا ملف الوحدة filtering-worklet.js، وتم تسجيله ضمن filtering-example.

    (async function runFilteringIdsExample () {
    await window.sharedStorage.worklet.addModule('filtering-worklet.js');
    await window.sharedStorage.run('filtering-example', {
      keepAlive: true,
      privateAggregationConfig: {
        contextId: 'example-id',
        filteringIdMaxBytes: 8 // optional
      }
    }});
    })();
    

    يُرجى العِلم أنّه يمكن ضبط filteringIdMaxBytes لكل تقرير، وإذا لم يتم ضبطه، سيكون القيمة التلقائية هي 1. تُستخدَم هذه القيمة التلقائية لمنع زيادة حجم الحمولة بلا داعٍ، وبالتالي تكاليف التخزين والمعالجة. يمكنك الاطّلاع على مزيد من المعلومات في شرح ميزة المساهمة المرنة.

  2. في filtering-worklet.js، عند تمرير مساهمة إلى privateAggregation.contributeToHistogram(...) ضمن تطبيق Shared Storage المصغّر، يمكنك تحديد معرّف فلترة.

    // Within  filtering-worklet.js
    class FilterOperation {
      async run() {
        let contributions = [{
          bucket: 1234n,
          value: 56,
          filteringId: 3n // defaults to 0n if not assigned, type bigint
        }];
    
        for (const c of contributions) {
          privateAggregation.contributeToHistogram(c);
        }
        
    }
    });
    
    register('filtering-example', FilterOperation);
    
  3. سيتم إرسال التقارير القابلة للتجميع إلى المكان الذي حدّدت فيه نقطة النهاية /.well-known/private-aggregation/report-shared-storage. يمكنك الانتقال إلى دليل فلترة المعرّفات للتعرّف على التغييرات المطلوبة في مَعلمات مهمة "خدمة التجميع".

بعد اكتمال عملية تجميع البيانات وإرسالها إلى خدمة التجميع التي تم نشرها، من المفترض أن تظهر نتائجك التي تمّت فلترتها في تقرير الملخّص النهائي.

خطوات Protected Audience

في حال استخدام Protected Audience API في مسار الإحالة الناجحة:

  1. في عملية التنفيذ الحالية لميزة Protected Audience، يمكنك ضبط ما يلي للاستفادة من Private Aggregation. على عكس "مساحة التخزين المشتركة"، لا يمكن حتى الآن ضبط الحد الأقصى لحجم معرّفات الفلترة. يبلغ الحد الأقصى لحجم رقم تعريف الفلترة تلقائيًا بايتًا واحدًا وسيتم ضبطه على 0n. يُرجى العِلم أنّه سيتم ضبط هذه القيم في وظائف إعداد التقارير في Protected Audience (مثل reportResult() أو generateBid()).

    const contribution = {
      ...
      filteringId: 0n
    };
    
    privateAggregation.contributeToHistogram(contribution);
    
  2. سيتم إرسال التقارير القابلة للتجميع إلى المكان الذي حدّدت فيه نقطة النهاية /.well-known/private-aggregation/report-protected-audience. بعد اكتمال عملية تجميع البيانات وإرسالها إلى خدمة التجميع التي تم نشرها، من المفترض أن تظهر نتائجك التي تم فلترتها في تقرير الملخّص النهائي. تتوفّر الشروحات التالية حول واجهة Attribution Reporting API وواجهة Private Aggregation API، بالإضافة إلى الاقتراح الأوّلي.

يمكنك الانتقال إلى دليل فلترة المعرّفات في "خدمة التجميع" أو الانتقال إلى أقسام واجهة برمجة التطبيقات Attribution Reporting للحصول على وصف أكثر تفصيلاً.

خدمة تجميع البيانات

تعمل الخدمة في بيئة تنفيذ موثوقة (TEE)، وتفك ترميز التقارير القابلة للتجميع، وتضيف تشويشًا لإنشاء التقرير التلخيصي النهائي.
تعمل الخدمة في بيئة تنفيذ موثوقة (TEE)، وتفك ترميز التقارير القابلة للتجميع، وتضيف تشويشًا لإنشاء التقرير التلخيصي النهائي.

تتلقّى خدمة تجميع البيانات تقارير مجمّعة مشفّرة من أداة التجميع وتُنشئ تقارير موجَزة. للحصول على مزيد من الاستراتيجيات حول كيفية تجميع التقارير القابلة للتجميع على دفعات في أداة التجميع، يُرجى الاطّلاع على دليل التجميع.

تعمل الخدمة في بيئة تنفيذ موثوقة (TEE)، ما يوفّر مستوى من الضمان لسلامة البيانات وسرّيتها وسلامة الرموز البرمجية. إذا أردت الاطّلاع على تفاصيل أكثر حول كيفية استخدام أدوات التنسيق مع بيئات التنفيذ الموثوقة، يمكنك قراءة المزيد عن دورها والغرض منها.

التقارير الموجزة

تتيح لك تقارير الملخّص الاطّلاع على البيانات التي جمعتها مع إضافة ضوضاء. يمكنك طلب تقارير موجزة لمجموعة معيّنة من المفاتيح.

يحتوي تقرير الملخّص على مجموعة من أزواج المفاتيح والقيم بتنسيق قاموس JSON. يحتوي كل زوج على ما يلي:

  • bucket: مفتاح التجميع كسلسلة أرقام ثنائية إذا كان مفتاح التجميع المستخدَم هو "123"، سيكون اسم الحزمة "1111011".
  • value: قيمة الملخّص لهدف قياس محدّد، ويتم جمعها من جميع التقارير المتاحة القابلة للتجميع مع إضافة التشويش.

على سبيل المثال:

[
  {"bucket":` `"111001001",` `"value":` `"2558500"},
  {"bucket":` `"111101001",` `"value":` `"3256211"},
  {"bucket":` `"111101001",` `"value":` `"6536542"},
]

التشويش والتحجيم

للحفاظ على خصوصية المستخدم، تضيف "خدمة تجميع البيانات" تشويشًا مرة واحدة إلى كل قيمة موجزة في كل مرة يتم فيها طلب تقرير موجز. يتم اختيار قيم التشويش بشكل عشوائي من توزيع احتمالي لابلاس. مع أنّك لا تتحكّم بشكل مباشر في طرق إضافة التشويش، يمكنك التأثير في تأثير التشويش على بيانات القياس.

يكون توزيع الضوضاء هو نفسه بغض النظر عن مجموع جميع القيم القابلة للتجميع. لذلك، كلما زادت القيم القابلة للتجميع، قلّ التأثير المحتمل للضوضاء.

على سبيل المثال، لنفترض أنّ توزيع الضوضاء لديه انحراف معياري يبلغ 100 ويتمحور حول الصفر. إذا كانت قيمة التقرير القابل للتجميع التي تم جمعها (أو "القيمة القابلة للتجميع") هي 200 فقط، سيكون الانحراف المعياري للتشويش هو% 50 من القيمة المجمّعة. ولكن إذا كانت القيمة القابلة للتجميع هي 20,000، سيكون الانحراف المعياري للتشويش 0.5% فقط من القيمة المجمّعة. وبالتالي، فإنّ القيمة القابلة للتجميع البالغة 20,000 سيكون لها نسبة إشارة إلى ضجيج أعلى بكثير.

لذلك، يمكن أن يساعد ضرب القيمة القابلة للتجميع في عامل قياس في تقليل التشويش. يمثّل عامل القياس مقدار القياس الذي تريد تطبيقه على قيمة قابلة للتجميع معيّنة.

تكون الضوضاء ثابتة بغض النظر عن القيمة المجمّعة.
ضوضاء ثابتة بغض النظر عن القيمة المجمّعة.

يؤدي رفع القيم من خلال اختيار عامل قياس أكبر إلى تقليل الضوضاء النسبية. ومع ذلك، يؤدي ذلك أيضًا إلى بلوغ مجموع كل المساهمات في جميع الحِزم حدّ ميزانية المساهمات بشكل أسرع. يؤدي خفض القيم عن طريق اختيار عامل قياس أصغر إلى زيادة الضوضاء النسبية، ولكنّه يقلّل من خطر بلوغ حد الميزانية.

اضبط مقياس القيمة القابلة للتجميع لتناسب ميزانية المساهمة.
توسيع نطاق القيمة القابلة للتجميع لتشمل ميزانية المساهمة:

لاحتساب عامل قياس مناسب، قسِّم ميزانية المساهمة على الحد الأقصى لمجموع القيم القابلة للتجميع على مستوى جميع المفاتيح.

لمزيد من المعلومات، يمكنك الاطّلاع على مستندات ميزانية المساهمة.

التفاعل مع الملاحظات ومشاركتها

تخضع واجهة Private Aggregation API حاليًا لمناقشات نشطة، ومن المحتمل أن تتغيّر في المستقبل. إذا جرّبت واجهة برمجة التطبيقات هذه وكانت لديك ملاحظات، يسعدنا تلقّيها.