การรวบรวมแตกต่างจากสคีมาอย่างไร

ฉันยังใหม่กับ cosmosdb (documentdb) มากในขณะที่อ่านเอกสาร ฉันยังคงอ่านสิ่งหนึ่งซ้ำ ๆ ซ้ำ ๆ ว่า documentdb ไม่มีสคีมา แต่ฉันรู้สึกเหมือนคอลเลกชันที่คล้ายคลึงกับสคีมาและทั้งสองเป็นมุมมองเชิงตรรกะ

Wikipedia กำหนดสคีมาเป็น "คำว่า "สคีมา" หมายถึงการจัดระเบียบข้อมูลเป็นพิมพ์เขียวของ ฐานข้อมูลถูกสร้างขึ้นอย่างไร' ฉันเชื่อว่าการรวบรวมก็เหมือนกับการจัดระเบียบเอกสาร ขั้นตอนการจัดเก็บ ทริกเกอร์และ UDF

ดังนั้นคำถามของฉันคือ สคีมาแตกต่างจากการรวบรวมอย่างไร


person lambodar    schedule 29.05.2017    source แหล่งที่มา
comment
คอลเลกชันไม่ได้บังคับใช้เอกสารบางประเภทเหมือนกับสคีมา ดังนั้นการรวบรวมเอกสารหนึ่งรายการสามารถมีเอกสารที่มีข้อมูลผู้ใช้หรือเอกสารที่มีข้อมูลบันทึกหรืออะไรก็ตาม คอลเลกชันเป็นเพียงชุดของเอกสารที่ไม่เกี่ยวข้องที่เป็นไปได้ คอลเลกชันก็เหมือนกับฐานข้อมูล ฐานข้อมูลสามารถมีได้หลายตาราง (อาจไม่เกี่ยวข้องกัน) แต่ฐานข้อมูลเองไม่ได้อธิบาย/บังคับใช้ข้อมูลใดที่ถูกจัดเก็บ   -  person Peter Bons    schedule 29.05.2017
comment
ขอบคุณ @PeterBons ฟังดูสมเหตุสมผล!   -  person lambodar    schedule 29.05.2017


คำตอบ (2)


คอลเลกชันไม่เกี่ยวข้องกับสคีมาจริงๆ เป็นเพียงโครงสร้างองค์กรสำหรับเอกสาร ด้วย Cosmos DB พวกเขาทำหน้าที่เป็น:

  • ขอบเขตการทำธุรกรรม ภายในคอลเลกชัน คุณสามารถดำเนินการสอบถาม / อัปเดตได้หลายรายการภายในธุรกรรมโดยใช้ขั้นตอนการจัดเก็บ การอัปเดตเหล่านี้ถูกจำกัดไว้ที่คอลเลกชันเดียว (โดยเฉพาะอย่างยิ่ง ไปยังพาร์ติชันเดียวภายในคอลเลกชัน)
  • ขอบเขตการเรียกเก็บเงิน/ประสิทธิภาพ Cosmos DB ช่วยให้คุณระบุจำนวนหน่วยคำขอ (RU) / วินาทีเพื่อจัดสรรให้กับคอลเลกชัน ทุกคอลเลกชันสามารถมีการตั้งค่า RU ที่แตกต่างกันได้ ทุกคอลเลกชันมีค่าใช้จ่ายขั้นต่ำ (เนื่องจากจำนวน RU ขั้นต่ำที่ต้องจัดสรร) ไม่ว่าคุณจะใช้พื้นที่เก็บข้อมูลเท่าใด
  • ขอบเขตโค้ดฝั่งเซิร์ฟเวอร์ ขั้นตอนการจัดเก็บ ทริกเกอร์ ฯลฯ จะถูกอัปโหลดไปยังคอลเลกชันเฉพาะ

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

person David Makogon    schedule 29.05.2017

สคีมาของฐานข้อมูลเชิงสัมพันธ์แตกต่างจากสคีมาของฐานข้อมูลเอกสารเล็กน้อย กล่าวง่ายๆ ก็คือ ฐานข้อมูลเชิงสัมพันธ์มีความเข้มงวดมากกว่าฐานข้อมูลสคีมาเอกสาร กล่าวอีกนัยหนึ่ง เรกคอร์ดในตาราง RDBMS จะต้องเป็นไปตามสคีมาอย่างเคร่งครัด เนื่องจากเรามีความยืดหยุ่นในระดับหนึ่งในขณะที่จัดเก็บเอกสารลงในคอลเลกชันเอกสาร

ตามอัตภาพ คอลเลกชันคือชุดของเอกสารที่เป็นไปตามสคีมาเดียวกัน แต่ฐานข้อมูลเอกสารไม่ได้หยุดการจัดเก็บเอกสารที่มีสคีมาต่างกันในคอลเลกชันเดียว มันเป็นความยืดหยุ่นที่มอบให้กับผู้ใช้

ให้เรายกตัวอย่าง สมมติว่าเรากำลังจัดเก็บข้อมูลลูกค้าบางส่วน ใน Relational DB เราอาจมีโครงสร้างบางอย่างเช่น

Customer ID INT
Name        VARCHAR(50)
Phone       VARCHAR(15)
Email       VARCHAR(255)

ขึ้นอยู่กับลูกค้าที่มีอีเมลหรือหมายเลขโทรศัพท์ พวกเขาจะถูกบันทึกเป็นค่าที่เหมาะสมหรือค่าว่าง

ID, Name, Phone, Email
1, John, 83453452, -
2, Victor, -, -
3, Smith, 34535345, smith@jjjj

อย่างไรก็ตาม ในฐานข้อมูลเอกสาร บางคอลัมน์จำเป็นต้องปรากฏในคอลเลกชัน หากไม่มีค่าใดๆ

[
{
  id: "123",
  name: "John",
  phone:"2572525",
},
{
  id: "456",
  name: "Stephen",
},
{
  id: "789",
  name: "King",
  phone:"2572525",
  email:"king@asfaf"
}
]

อย่างไรก็ตาม ขอแนะนำเสมอให้ยึดตามสคีมาใน document db แม้ว่าจะให้ความยืดหยุ่นในการจัดเก็บเอกสารที่ไม่มีสคีมาในคอลเลกชันเพื่อวัตถุประสงค์ในการบำรุงรักษาก็ตาม

person Ravi Chandra    schedule 29.05.2017
comment
ขอบคุณสำหรับคำตอบ @Ravi ฉันขอขอบคุณสำหรับความพยายามของคุณ มาถึงประเด็นนี้ ลืมเกี่ยวกับความสัมพันธ์ db ฉันเคยทำงานใน Cassandra และสคีมาของมัน และอันที่คุณชี้เกี่ยวกับค่าว่าง มันเป็นเพียงตัวเลือกใน nosql และไม่เกี่ยวข้องกับคอลเลกชันหรือสคีมาคือสิ่งที่ฉันเข้าใจ - person lambodar; 29.05.2017
comment
โดยทั่วไปแล้ว คอลเลกชันคือชุดของเอกสารที่เป็นไปตามสคีมาเดียวกัน แต่ฐานข้อมูลเอกสารไม่ได้หยุดการจัดเก็บเอกสารที่มีสคีมาต่างกันในคอลเลกชันเดียว มันคือความยืดหยุ่นที่มอบให้กับผู้ใช้ - person Ravi Chandra; 29.05.2017
comment
ฉันไม่เห็นด้วยที่คอลเลกชันมีเอกสารที่มีสคีมาเหมือนกันตามอัตภาพ ไม่มีแบบแผนดังกล่าว บางทีผู้คนอาจได้รับการสอนให้ทำเช่นนี้ (เช่น หนึ่งคอลเลกชันต่อประเภทวัตถุ) แต่ไม่มีกฎสำหรับเรื่องนี้หรือแบบแผน - person David Makogon; 29.05.2017
comment
เห็นด้วยกับ @เดวิด คุณสามารถจัดเก็บเอกสารประเภทใดก็ได้ในคอลเลกชันเดียว และใช้รูปแบบประเภท/พื้นที่เก็บข้อมูลโดยการใช้แอตทริบิวต์ฐาน type ในเอกสาร นี่คือคำถามและคำตอบที่เกี่ยวข้องเกี่ยวกับสถานการณ์นี้ - person Matias Quaranta; 29.05.2017