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

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

مَن هو المستهدَف من هذا المستند؟

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

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

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

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

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

سير عمل "التجميع الخاص"

عند طلب بيانات من 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} ثم تحويلها إلى قيمة BigInt42943797454801331377966796057547478208888578253058197330928948081739249096287n. إذا كانت قيمة التجزئة تحتوي على أكثر من 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 باسم مساهمة. لحماية خصوصية المستخدم، يتم حصر عدد المساهمات التي يمكن جمعها من أحد المستخدمين.

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

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

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

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

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

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

بالنسبة إلى "مساحة التخزين المشتركة"، يتم تجميع المساهمات التي تم إجراؤها ضمن عملية run() أو selectURL() واحدة في تقرير واحد. بالنسبة إلى "شريحة الجمهور المحمية"، يتم تجميع المساهمات التي يقدّمها مصدر واحد في مزاد معًا.

المساهمات التي تتضمّن مساحة إضافية

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

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

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

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

مثال على تقرير قابل للتجميع مع تفعيل وضع debugging:

  "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، وذلك باستخدام المسار المعروف جيدًا التالي:

  • بالنسبة إلى مساحة التخزين المشتركة: /.well-known/private-aggregation/report-shared-storage
  • بالنسبة إلى "الجمهور المحمي": /.well-known/private-aggregation/report-protected-audience

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

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

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

فلترة الأرقام التعريفية

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

مخطّط بياني لميزة "الإعلانات المتجاوبة على شبكة البحث"

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

خطوات مساحة التخزين المشتركة

إذا كنت تستخدِم Shared Storage API في عملية المعالجة:

  1. حدِّد المكان الذي ستُعلِن فيه عن وحدة "مساحة التخزين المشتركة" الجديدة ومكان تشغيلها. في المثال التالي، أطلقنا على ملف الوحدة اسم 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(...) ضمن وحدة عمل "مساحة التخزين المشتركة"، يمكنك تحديد معرّف فلترة.

    // 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. في إطار عملية التنفيذ الحالية لميزة "شريحة الجمهور المحمية"، يمكنك ضبط ما يلي لربطها بميزة "التجميع الخاص". على عكس "مساحة التخزين المشتركة"، لا يمكن حتى الآن ضبط الحد الأقصى لحجم رقم تعريف الفلترة. الحد الأقصى لحجم معرّف الفلترة هو 1 بايت بشكل تلقائي، وسيتم ضبطه على 0n. يُرجى العِلم أنّه سيتم ضبط هذه الإعدادات في وظائف إعداد تقارير شرائح الجمهور المحمية (مثل 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 API للحصول على وصف أكثر تفصيلاً.

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

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

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

تعمل الخدمة في بيئة تنفيذ موثوقة (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 قيد المناقشة وهي خاضعة للتغيير في المستقبل. إذا جرّبت واجهة برمجة التطبيقات هذه ولديك ملاحظات، يسعدنا معرفتها.