โปรดทราบว่าเมื่อจัดโครงสร้างข้อมูลใน Cloud Firestore คุณจะมีตัวเลือกต่างๆ ดังนี้
- เอกสาร
- คอลเล็กชันหลายรายการ
- คอลเล็กชันย่อยภายในเอกสาร
พิจารณาข้อดีของแต่ละตัวเลือกตามกรณีการใช้งานของคุณ ตัวอย่างโครงสร้างบางส่วนสำหรับข้อมูลที่จัดลำดับชั้นมีอยู่ในคู่มือนี้
ข้อมูลที่ฝังในเอกสาร
คุณสามารถฝังออบเจ็กต์ที่ซับซ้อน เช่น อาร์เรย์หรือแผนที่ ภายในเอกสารได้
- ข้อดี: หากมีรายการข้อมูลที่แก้ไขไม่ได้และเรียบง่ายซึ่งคุณต้องการเก็บไว้ในเอกสาร ตัวเลือกนี้จะตั้งค่าได้ง่ายและช่วยให้โครงสร้างข้อมูลมีประสิทธิภาพมากขึ้น
-
ข้อจํากัด: ตัวเลือกนี้ปรับขนาดได้ไม่ดีเท่าตัวเลือกอื่นๆ โดยเฉพาะหากข้อมูลมีปริมาณมากขึ้นเมื่อเวลาผ่านไป เมื่อรายการมีขนาดใหญ่ขึ้นหรือมีจำนวนรายการเพิ่มขึ้น เอกสารก็จะมีขนาดเพิ่มขึ้นด้วย ซึ่งอาจทำให้การเรียกข้อมูลเอกสารช้าลง
- กรณีการใช้งานที่เป็นไปได้มีอะไรบ้าง ตัวอย่างเช่น ในแอปแชท คุณอาจจัดเก็บห้องแชทที่ผู้ใช้เข้าชมล่าสุด 3 ห้องเป็นรายการที่ฝังอยู่ในโปรไฟล์ของผู้ใช้
|
- class alovelace
- name :
first : "Ada"
last : "Lovelace"
born : 1815
rooms :
0 : "ซอฟต์แวร์แชท"
|
คอลเล็กชันย่อย
คุณสามารถสร้างคอลเล็กชันภายในเอกสารได้เมื่อมีข้อมูลที่อาจขยายตัวเมื่อเวลาผ่านไป
- ข้อดี: เมื่อรายการใหญ่ขึ้น ขนาดของเอกสารหลักจะไม่เปลี่ยนแปลง นอกจากนี้ คุณยังใช้การค้นหาได้เต็มรูปแบบในคอลเล็กชันย่อย และสามารถออก
การค้นหากลุ่มคอลเล็กชันในคอลเล็กชันย่อยต่างๆ ได้
-
ข้อจำกัด: คุณลบคอลเล็กชันย่อยได้ยาก
- กรณีการใช้งานที่เป็นไปได้มีอะไรบ้าง เช่น คุณอาจสร้างคอลเล็กชันผู้ใช้หรือข้อความภายในเอกสารของห้องแชทในแอปแชทเดียวกัน
|
- collections_bookmark science
- class software
name : "software chat"
- collections_bookmark
ผู้ใช้
- class
alovelace
first : "Ada"
last : "Lovelace"
- class
sride
first : "Sally"
last : "Ride"`
- class ดาราศาสตร์
|
คอลเล็กชันระดับรูท
สร้างคอลเล็กชันที่ระดับรูทของฐานข้อมูลเพื่อจัดระเบียบชุดข้อมูลที่กระจัดกระจาย
- ข้อดี: คอลเล็กชันระดับรูทเหมาะสำหรับความสัมพันธ์แบบหลายต่อหลายรายการ และให้การค้นหาที่มีประสิทธิภาพภายในแต่ละคอลเล็กชัน
-
ข้อจำกัด: การรับข้อมูลที่เรียงตามลำดับชั้นตามธรรมชาติอาจมีความซับซ้อนมากขึ้นเรื่อยๆ เมื่อฐานข้อมูลของคุณเติบโตขึ้น
- กรณีการใช้งานที่เป็นไปได้มีอะไรบ้าง เช่น คุณอาจสร้างคอลเล็กชันหนึ่งสำหรับผู้ใช้และอีกคอลเล็กชันหนึ่งสำหรับห้องแชทและข้อความไว้ในแอปแชทเดียวกัน
|
- collections_bookmark
ผู้ใช้
- class alovelace
first : "Ada"
last : "Lovelace"
เกิด : 1815
- class sride
first : "Sally"
last : "Ride"
born : 1951
- collections_bookmark rooms
- class software
- collections_bookmark
messages
- class
message1
from : "alovelace"
content : "..."
- class
message2
from : "sride"
content : "..."
|