أنواع عمليات قاعدة بيانات Firebase في الوقت الفعلي

أمر أداة تحليل قاعدة بيانات Firebase في الوقت الفعلي

لإنشاء تقرير عن السرعة واستخدام معدل نقل البيانات للعمليات في مثيل قاعدة البيانات في الوقت الفعلي، استخدِم الأمر التالي:

firebase database:profile
خيارات الإبلاغ الوصف
-h, --help معلومات استخدام الإخراج
-o, --output FILENAME احفظ الناتج في الملف المحدّد.
-i, --input FILENAME يمكنك إنشاء التقرير استنادًا إلى الملف المحدّد بدلاً من سجلّات البث من الخادم.
-d, --duration SECONDS يتم جمع معلومات استخدام قاعدة البيانات للعدد المحدّد من الثواني.
--raw استخرِج الإحصاءات الأولية التي تم جمعها بتنسيق JSON المحدَّد بفواصل.

أنواع العمليات

الاتصال المتزامن

تعكس هذه العملية الاتصالات في الوقت الفعلي بقاعدة البيانات (على سبيل المثال، عندما يتصل عميل جديد عبر حزمة SDK). لا تنعكس الاتصالات REST في عمليات الاتصال المتزامنة.

{
    "name": "concurrent-connect",
    "timestamp": 1484776334900
}

انقطاع الاتصال المتزامن

تعكس عمليات انقطاع الاتصال المتزامنة الاتصال الذي انقطع اتصاله بقاعدة البيانات (على سبيل المثال، عندما ينقطع الاتصال بأحد البرامج أو يسجل خروجه).

{
    "name": "concurrent-disconnect",
    "timestamp": 1484776341844
}

الكتابة في الوقت الفعلي

كتابة الطلبات من عمليات التواصل في الوقت الفعلي على سبيل المثال، عمليات set() وpush() لبرامج الويب. وتُحتسَب طلبات الحذف أيضًا كعمليات realtime-write، ولا تعكس أي عمليات كتابة بحجم 0 بايت.

{
    "allowed": true, // If security rules allow the operation
    "bytes": 1,
    "millis": 2,
    "name": "realtime-write",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538763
}

معاملة في الوقت الفعلي

يتضمّن هذا النوع من العمليات المعاملات التي تتم من خلال عمليات اتصال في الوقت الفعلي. قد تكون المعاملات المتكررة ناتجة عن محاولات فاشلة ومحاولات متكررة.

{
    "allowed": true,
    "bytes": 20,
    "millis": 2,
    "name": "realtime-transaction",
    "path": [
        "foo"
    ],
    "timestamp": 1484776854610
}

تحديث في الوقت الفعلي

وتعكس عمليات التحديث في الوقت الفعلي هذه تجاوزات لبيانات محددة، وليست عمليات الكتابة الأكثر عمومية في realtime-write.

{
    "allowed": true,
    "bytes": 5,
    "millis": 2,
    "name": "realtime-update",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538769
}

استمِع إلى أغانيك

تعكس هذه العمليات الطلب الأولي للبيانات في موقع معين من العميل. على سبيل المثال، الطريقة on() أو once() لبرامج الويب.

{
    "allowed": true,
    "bytes": 0,
    "millis": 26,
    "name": "listener-listen",
    "path": [
        "foo"
    ],
    "querySet": [],
    "timestamp": 1484776335024,
    "unIndexed": false
}

البث المستمع

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

{
    "bytes": 56, // Total bytes sent across clients
    "clientsUpdated": 3, // This may be 0 if no clients are listening
    "millis": 17,
    "name": "listener-broadcast",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969928
}

عدم الاستماع إلى المستمعين

تعكس هذه العمليات عملاء الاستماع الذين يوافقون على الاستماع أو يتوقفون عن الاستماع من خلال طرق منفصلة (على سبيل المثال، off() للويب أو removeAllObservers لنظام التشغيل iOS).

{
    "name": "listener-unlisten",
    "path": [
        "foo"
    ],
    "timestamp": 1484776335044
}

قراءة البقية

GET من خلال واجهة برمجة تطبيقات REST.

{
    "allowed": true,
    "bytes": 348, // This would be 0 if the read data was null
    "millis": 26,
    "name": "rest-read",
    "path": [],
    "querySet": [
        {
            "default": true,
            "endIndexValue": "[MAX_NAME]",
            "equality": false,
            "index": {},
            "limit": null,
            "range": false,
            "simpleLimit": false,
            "startIndexValue": "[MIN_NAME]",
            "viewFrom": null
        }
    ],
    "timestamp": 1484775747416
}

الاستراحة-الكتابة

طلبات PUT وPOST من خلال REST API. تعرض طلبات DELETE rest-write عملية بحجم 0 بايت.

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-write",
    "path": [],
    "timestamp": 1484775917216
}

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

بالنسبة إلى السلوك المرتبط بالمعاملات، استخدِم الطلبات المشروطة. تلتقط العملية rest-transaction الطلبات باستخدام العنوان Etag أو if-match.

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-transaction",
    "path": [],
    "timestamp": 1484775917216
}

تعديل بشأن الاستراحة

تعكس التعديلات من خلال REST API طلبات PATCH.

{
    "allowed": true,
    "bytes": 5,
    "millis": 11,
    "name": "rest-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

عند قطع الاتصال

تعكس هذه العمليات إضافة مستمعي onDisconnect لكتابة العمليات. على سبيل المثال، عند استخدام onDisconnect().setValue().

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-put",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

تحديث عند انقطاع الاتصال

تعكس هذه العمليات إضافة برامج معالجة الأحداث في onDisconnect لتعديل العمليات. على سبيل المثال، عند استخدام onDisconnect().updateChildren().

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

إلغاء الربط عند إلغاء الاتصال

تعكس هذه العمليات إزالة المستمعين على قطع الاتصال. على سبيل المثال، عند استخدام onDisconnect().set().cancel().

{
    "millis": 2,
    "name": "on-disconnect-cancel",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

تشغيل عند قطع الاتصال

تعكس هذه العمليات عملية تشغيل مستمعي onDisconnect. عندما ينقطع اتصال برنامج في الوقت الفعلي بعد إضافة مستمع onDisconnect واحد على الأقل، يسجِّل المحلل عملية run-on-disconnect واحدة لعرض وحدات البايت المجمّعة ووقت جميع برامج معالجة ملفات onDisconnect التي تم تشغيلها.

{
    "bytes": 4,
    "millis": 2,
    "name": "run-on-disconnect",
    "timestamp": 1484775969930
}