เลือกโครงสร้างข้อมูล

โปรดทราบว่าเมื่อจัดโครงสร้างข้อมูลใน Cloud Firestore คุณ จะมีตัวเลือกต่างๆ ดังนี้

  • เอกสาร
  • คอลเล็กชันหลายรายการ
  • คอลเล็กชันย่อยภายในเอกสาร

พิจารณาข้อดีของแต่ละตัวเลือกที่เกี่ยวข้องกับกรณีการใช้งานของคุณ คู่มือนี้จะสรุปโครงสร้างตัวอย่างบางส่วนสำหรับข้อมูลลำดับชั้น

ข้อมูลที่ซ้อนกันในเอกสาร

คุณสามารถซ้อนออบเจ็กต์ที่ซับซ้อน เช่น อาร์เรย์หรือแมป ไว้ในเอกสารได้

  • ข้อดี: หากคุณมีรายการข้อมูลแบบคงที่และเรียบง่ายที่ต้องการเก็บไว้ในเอกสาร การตั้งค่านี้ทำได้ง่ายและช่วยปรับปรุงโครงสร้างข้อมูลให้มีประสิทธิภาพมากขึ้น
  • ข้อจำกัด: ตัวเลือกนี้ปรับขนาดได้ไม่ดีเท่าตัวเลือกอื่นๆ โดยเฉพาะอย่างยิ่งหากข้อมูลของคุณขยายใหญ่ขึ้นเมื่อเวลาผ่านไป เมื่อรายการมีขนาดใหญ่ขึ้นหรือเพิ่มขึ้น เอกสารก็จะใหญ่ขึ้นด้วย ซึ่งอาจทำให้การดึงข้อมูลเอกสารใช้เวลานานขึ้น
  • กรณีการใช้งานที่เป็นไปได้ เช่น ในแอปแชท คุณอาจเก็บห้องแชท 3 ห้องที่ผู้ใช้เข้าชมล่าสุดไว้เป็นรายการที่ซ้อนกันในโปรไฟล์ของผู้ใช้
  • alovelace
    •     name :
            first : "Ada"
            last : "Lovelace"
          born : 1815
          rooms :
            0 : "Software Chat"
            1 : "Famous Figures"
            2 : "Famous SWEs"

คอลเล็กชันย่อย

คุณสามารถสร้างคอลเล็กชันภายในเอกสารได้เมื่อมีข้อมูลที่อาจขยายใหญ่ขึ้นเมื่อเวลาผ่านไป

  • ข้อดี: เมื่อรายการมีขนาดใหญ่ขึ้น ขนาดของเอกสารระดับบนจะไม่เปลี่ยนแปลง นอกจากนี้ คุณยังสามารถใช้ความสามารถในการค้นหาทั้งหมดในคอลเล็กชันย่อย และออกคําขอค้นหา กลุ่มคอลเล็กชันในคอลเล็กชันย่อยได้
  • ข้อจำกัด: คุณไม่สามารถลบคอลเล็กชันย่อยได้อย่างง่ายดาย
  • กรณีการใช้งานที่เป็นไปได้ เช่น ในแอปแชทเดียวกัน คุณอาจสร้างคอลเล็กชันของผู้ใช้หรือข้อความภายในเอกสารห้องแชท
  • science
    • software
        name : "software chat"
      • users
        • alovelace
              first : "Ada"
              last : "Lovelace"
        • sride
              first : "Sally"
              last : "Ride"`


    • astrophysics
      • ...

คอลเล็กชันระดับราก

สร้างคอลเล็กชันที่ระดับรูทของฐานข้อมูลเพื่อจัดระเบียบชุดข้อมูลที่แตกต่างกัน

  • ข้อดี: คอลเล็กชันระดับรากเหมาะสำหรับความสัมพันธ์แบบหลายต่อหลายรายการ และให้ความสามารถในการค้นหาที่มีประสิทธิภาพภายในแต่ละคอลเล็กชัน
  • ข้อจำกัด: การรับข้อมูลที่เป็นลำดับชั้นโดยธรรมชาติอาจซับซ้อนมากขึ้นเมื่อฐานข้อมูลมีขนาดใหญ่ขึ้น
  • กรณีการใช้งานที่เป็นไปได้ เช่น ในแอปแชทเดียวกัน คุณอาจสร้างคอลเล็กชันหนึ่งสำหรับผู้ใช้ และอีกคอลเล็กชันหนึ่งสำหรับห้องแชทและข้อความ
  • users
    • alovelace
          first : "Ada"
          last : "Lovelace"
          born : 1815
    • sride
          first : "Sally"
          last : "Ride"
          born : 1951
  • rooms
    • software
      • messages
        • message1
              from : "alovelace"
              content : "..."
        • message2
              from : "sride"
              content : "..."