ประเภทการดำเนินการฐานข้อมูลเรียลไทม์ของ Firebase

คำสั่งเครื่องมือสร้างโปรไฟล์สำหรับฐานข้อมูลเรียลไทม์ของ Firebase

หากต้องการสร้างรายงานการใช้ความเร็วและแบนด์วิดท์สำหรับการดำเนินการในอินสแตนซ์ Realtime Database ให้ใช้คำสั่งต่อไปนี้

firebase database:profile
ตัวเลือกการแจ้งว่าไม่เหมาะสม คำอธิบาย
-h, --help ข้อมูลการใช้งานเอาต์พุต
-o, --output FILENAME บันทึกเอาต์พุตไปยังไฟล์ที่ระบุ
-i, --input FILENAME สร้างรายงานตามไฟล์ที่ระบุแทนบันทึกสตรีมจากเซิร์ฟเวอร์
-d, --duration SECONDS รวบรวมข้อมูลการใช้งานฐานข้อมูลตามจำนวนวินาทีที่ระบุ
--raw แสดงสถิติดิบที่รวบรวมเป็น JSON ที่คั่นด้วยการขึ้นบรรทัดใหม่

ประเภทการดำเนินการ

การเชื่อมต่อพร้อมกัน

การดำเนินการนี้จะแสดงการเชื่อมต่อแบบเรียลไทม์กับฐานข้อมูล (เช่น เมื่อลูกค้าใหม่เชื่อมต่อผ่าน SDK) การเชื่อมต่อ RESTful จะไม่แสดงในการดำเนินการเชื่อมต่อพร้อมกัน

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

ยกเลิกการเชื่อมต่อพร้อมกัน

การตัดการเชื่อมต่อพร้อมกันแสดงถึงการเชื่อมต่อที่ยกเลิกการเชื่อมต่อกับฐานข้อมูล (เช่น เมื่อไคลเอ็นต์ยกเลิกการเชื่อมต่อหรือออกจากระบบ)

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

realtime-write

เขียนคำขอจากการเชื่อมต่อแบบเรียลไทม์ เช่น การดำเนินการ set() และ push() สำหรับไคลเอ็นต์เว็บ คำขอลบจะนับเป็นการดำเนินการ realtime-write ด้วย และแสดงถึงการเขียน 0 ไบต์

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

realtime-transaction

ประเภทการดำเนินการนี้รวมถึงธุรกรรมที่ดำเนินการผ่านการเชื่อมต่อแบบเรียลไทม์ ธุรกรรมซ้ำอาจเป็นผลมาจากความพยายามและการทำซ้ำที่ล้มเหลว

{
    "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
}

listener-listen

การดำเนินการเหล่านี้แสดงถึงคำขอข้อมูลเริ่มแรกในสถานที่เฉพาะเจาะจงจากไคลเอ็นต์ เช่น เมธอด on() หรือ once() สำหรับไคลเอ็นต์เว็บ

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

ผู้ฟังประกาศ

การดำเนินการนี้ครอบคลุมข้อมูลที่ส่งจากเซิร์ฟเวอร์ไปยังไคลเอ็นต์ใดๆ และทั้งหมดที่ฟังอยู่ ณ ตำแหน่งที่ระบุหลังจากการดำเนินการเขียนและอัปเดตทุกครั้ง การเปลี่ยนแปลงข้อมูลจะนำไปสู่การดำเนินการเผยแพร่ แต่คุณอาจเห็นการอัปเดตเป็น 0 หากไม่มีไคลเอ็นต์ที่ฟังอยู่

{
    "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
}

listener-unlisten

การดำเนินการเหล่านี้แสดงถึงไคลเอ็นต์ที่รอฟังซึ่งลงชื่อหรือหยุดการฟังผ่านวิธีการปลด (เช่น off() สำหรับเว็บหรือ removeAllObservers สำหรับ iOS)

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

อ่านขณะพัก

GET ส่งคำขอผ่าน REST API

{
    "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
}

on-disconnect-put

การดำเนินการเหล่านี้แสดงถึงการเพิ่ม Listener onDisconnect สำหรับการดำเนินการเขียน เช่น เมื่อคุณใช้ onDisconnect().setValue()

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

on-disconnect-update

การดำเนินการเหล่านี้แสดงถึงการเพิ่ม Listener onDisconnect ไปยังการดำเนินการอัปเดต เช่น เมื่อคุณใช้ onDisconnect().updateChildren()

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

เมื่อยกเลิกการเชื่อมต่อ ยกเลิก

การดำเนินการเหล่านี้แสดงถึงการนำ Listener ที่เชื่อมต่อเมื่อยกเลิกการเชื่อมต่อออก เช่น เมื่อคุณใช้ onDisconnect().set().cancel()

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

run-on-disconnect

การดำเนินการเหล่านี้แสดงถึงการทริกเกอร์ Listener onDisconnect เมื่อไคลเอ็นต์แบบเรียลไทม์ยกเลิกการเชื่อมต่อหลังจากเพิ่ม onDisconnect Listener อย่างน้อย 1 คน เครื่องมือสร้างโปรไฟล์จะบันทึกการดำเนินการ run-on-disconnect เดียว เพื่อแสดงไบต์และเวลารวมของ onDisconnect Listener ทั้งหมดที่ทริกเกอร์

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