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

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

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

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

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

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

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

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

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

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


    • ฟิสิกส์ดาราศาสตร์
      • ...

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

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

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