ฐานข้อมูล NoSQL จะเหมาะสำหรับการเล่นเกมบนเว็บ?
แน่นอน! โดยทั่วไปแล้วฐานข้อมูลที่ไม่เกี่ยวข้อง (เช่น MongoDB) จะดีกว่ามากสำหรับเกมเนื่องจากมีความยืดหยุ่นในการสร้างแบบจำลองข้อมูลในขณะที่มีประสิทธิภาพมากกว่าฐานข้อมูลเชิงสัมพันธ์ (เช่น SQL) ทำให้พวกเขาเป็น "win-win" ทางเลือก.
อะไรคือปัญหาที่อาจเกิดขึ้นโดยใช้ RDBMS ธรรมดา?
มีสองข้อเสียเปรียบที่สำคัญในการใช้ฐานข้อมูลเชิงสัมพันธ์:
- ขาดความยืดหยุ่นในแบบที่คุณสร้างข้อมูล
- ประสิทธิภาพ
การขาดความยืดหยุ่นในแบบที่คุณจำลองข้อมูลเป็นข้อเสียเปรียบครั้งใหญ่เนื่องจากการใช้ฐานข้อมูลเชิงสัมพันธ์บังคับให้คุณจัดทำโมเดลข้อมูลให้เหมาะกับความต้องการของฐานข้อมูลแทนที่จะเป็นฐานข้อมูลที่รองรับความต้องการของโมเดล ตัวอย่างเช่นให้พิจารณาว่าคุณกำลังสร้างโมเดลสำหรับวิธีที่คุณจะเก็บไอเท็มในเกมโดยใช้ฐานข้อมูลเชิงสัมพันธ์และคุณตัดสินใจเลือกโมเดลต่อไปนี้:
weapon_type_id | weapon_type
1 | sharp
weapon_id | weapon| weapon_type_id | damage
1 | Short Sword | 1 | 5
potion_type_id | potion_type
1 | HP
2 | Mana
potion_id | potion| potion_type_id | modifier
1 | Healing Elixer | 1| 5
2 | Mana Drainer | 2| -5
ตอนนี้พิจารณาวิธีการที่คุณจะต้องปรับเปลี่ยนรูปแบบเพื่อตอบสนองความต้องทำต่อไปนี้:
- เพิ่มประเภทรายการใหม่
- สร้างอาวุธที่มีอาวุธหลายประเภท
- สร้างรายการยาที่สามารถใช้เป็นอาวุธได้
แน่นอนว่าทุกการกระทำเหล่านี้เป็นไปได้ แต่คุณจะไม่ได้เป็นคนที่มีความสุขที่สุดในขณะที่คุณกำลังทำพวกเขาและคุณอาจจะสงสัยว่า "จะมีทางออกที่ดีกว่าออกมีสำหรับสิ่งที่ฉันต้องการจะทำ ?," เมื่อคุณสามารถทำได้ ออกแบบโมเดลที่ยืดหยุ่นมากขึ้นในฐานข้อมูลที่ไม่เกี่ยวข้อง
หมายเหตุ:ถ้าคุณไม่คุ้นเคยกับวิธีการที่ฐานข้อมูลเอกสารที่ใช้ในการจัดเก็บข้อมูล, โปรดตรวจสอบการเชื่อมโยงนี้ก่อนดำเนินการต่อ รูปแบบที่แสดงด้านล่างออกแบบมาเพื่อใช้ตรรกะที่คล้ายกันกับสิ่งที่นำเสนอในบทความดังกล่าว
db.itemTypes
name: Weapon
types: Sharp
name: Potion
types: HP, Mana
db.items
name: Short Sword
weapon
type: Sharp (db.itemTypes reference)
damage: 5
name: Healing Elixer
potion
type: HP (db.itemTypes reference)
modifier: 5
name: Mana Drainer
potion
type: Mana (db.itemTypes reference)
modifier: -5
name: Healing Potion Sword
potion
type: HP (db.itemTypes reference)
modifier: 10
weapon
type: Sharp (db.itemTypes reference)
damage: 15
มีจำนวนมากของบทความที่ดีในการทำงานของ NoSQL เทียบกับฐานข้อมูล SQL มี แต่ที่นี่เป็นหนึ่งซึ่งมีตัวอย่างการประยุกต์เพื่อให้คุณสามารถดำเนินการทดสอบของคุณเอง: MongoDB กับ SQL Server 2008 ผลการดำเนินงานแบไต๋
ฉันจะประกันความสอดคล้องของข้อมูลระหว่างผู้ใช้กับ MongoDB ได้อย่างไร
MongoDB รองรับการอ่าน / เขียนการดำเนินการปรมาณูในเอนทิตีข้อมูลเดียว (เอกสาร) ดังนั้นผลการสืบค้นจาก MongoDB ควรถูกต้องเสมอกับสิ่งที่เก็บไว้ในฐานข้อมูล
แก้ไข:จัดเตรียมตัวอย่าง NoSQL ของฐานข้อมูลรายการ