ทั้งสองวิธีมีการใช้กับ MMORPG การเก็บทุกอย่างไว้ในหน่วยความจำและตรวจสอบการชี้ไปที่ดิสก์เป็นระยะ ๆ น่าจะเป็นตัวเลือกยอดนิยมอย่างน้อยสำหรับเกมรุ่นเก่า มันมีข้อดีของการใช้งานง่ายและปรับขนาดได้ค่อนข้างดี แต่การทำให้มีความน่าเชื่อถือนั้นขึ้นอยู่กับผู้พัฒนา ฐานข้อมูล SQL จัดเตรียมคุณสมบัติ ACIDที่ทำให้ความน่าเชื่อถือง่ายขึ้น แต่โดยรวมมีความซับซ้อนมากขึ้นในการใช้งานได้ดีและอาจมีปัญหาเกี่ยวกับการปรับขนาด
EVE Online เป็นตัวอย่างของ MMO ที่ทุกอย่างถูกเก็บไว้ในฐานข้อมูล SQL ฉันคิดว่ามันถึงจุดสูงสุดที่ผู้ใช้ประมาณ 60,000 คนพร้อมกันและต้องอุทิศฮาร์ดแวร์ราคาแพงให้กับเซิร์ฟเวอร์ฐานข้อมูลในช่วงหลายปีที่ผ่านมาเพื่อให้ทันกับการโหลด อย่างไรก็ตาม EVE เก็บข้อมูลมากขึ้นต่อผู้ใช้มากกว่า MMORPG ส่วนใหญ่และมีการทำธุรกรรมที่บ่อยและหลากหลายมากขึ้น คุณสมบัติ ACID ของฐานข้อมูลช่วยให้ฐานข้อมูลขนาดใหญ่และซับซ้อนทั้งหมดจะถูกเก็บไว้ในสถานะที่สอดคล้องกันเสมอ
ตัวอย่างเช่นพิจารณากรณีเมื่อมีคนมอบไอเท็มให้กับผู้เล่นอื่น ฐานข้อมูลของ EVE รับประกันได้ว่าแม้ในกรณีที่เกิดความผิดพลาดหรือไฟฟ้าขัดข้องที่รายการนั้นสิ้นสุดลงในสินค้าคงคลังของผู้เล่นเพียงคนเดียว นั่นคือธุรกรรมฐานข้อมูลที่ลบรายการออกจากสินค้าคงคลังของผู้เล่นคนหนึ่งและเพิ่มเข้าไปในรายการของผู้เล่นคนอื่นคืออะตอม ธุรกรรมเสร็จสมบูรณ์อย่างสมบูรณ์หรือไม่เกิดขึ้นเลย คุณไม่สามารถอยู่ในสถานะที่มีรายการอยู่ในคลังของผู้เล่นหรือทั้งสองอย่าง
MMORPG ที่เก็บข้อมูลผู้เล่นไว้ในหน่วยความจำและจุดตรวจเป็นระยะเพื่อใช้งานอะตอมมิกซิตี้นี้ วิธีหนึ่งในการทำเช่นนี้คือจุดตรวจสอบข้อมูลของผู้เล่นทุกคนในเวลาเดียวกันเพื่อให้มั่นใจว่าจุดตรวจสอบใหม่มุ่งมั่นอย่างเต็มที่ในดิสก์ก่อนที่จะถือว่าเป็นจุดตรวจล่าสุด เกมดังกล่าวจะต้องตรวจสอบให้แน่ใจว่าข้อมูลผู้เล่นไม่สามารถเปลี่ยนแปลงได้ในขณะที่อยู่ในจุดตรวจ ด้วยผู้เล่นจำนวนมากที่ใช้งานอยู่ความท้าทายจะทำสิ่งนี้ทั้งหมดโดยไม่ทำให้เกิดความล่าช้านานพอที่ผู้เล่นจะสังเกตเห็น
อย่าดูถูกดูแคลนว่าความมั่นคงสำคัญเพียงใด เมื่อคุณพัฒนาเกมของคุณมันจะพังมาก คุณไม่ต้องการติดตามว่าทำไมไอเท็มจึงหายไปและ / หรือทำซ้ำไม่ใช่เมื่อปัญหาคือบั๊กที่ไม่เกี่ยวข้องทำให้เกมหยุดทำงานในเวลาที่ไม่ดี ยิ่งกว่านั้นเมื่อเกมของคุณมีการถ่ายทอดสดมันจะผิดพลาดมากกว่าที่คุณคาดหวัง เซิร์ฟเวอร์ของคุณทำงานอย่างสมบูรณ์แบบภายใต้การทดสอบในทันทีจะเปิดเผยข้อบกพร่องมากมายภายใต้การโหลดเต็มรูปแบบและสิ่งที่ผู้เล่นทำในสิ่งที่คุณไม่คาดหวัง
โปรดทราบว่า MMORPG ส่วนใหญ่ใช้ฐานข้อมูล SQL สำหรับข้อมูลที่เกี่ยวข้องกับบัญชีแม้ว่าจะไม่ใช่ข้อมูลเกมจริงก็ตาม สิ่งที่สำคัญยิ่งกว่าการรักษาสถานะของเกมให้อยู่ในสถานะที่สอดคล้องกันก็คือการทำให้สถานะการเรียกเก็บเงินสอดคล้องกัน กรณีที่แย่ที่สุดสำหรับฐานข้อมูลเกมที่เสียหายคือคุณต้องกู้คืนฐานข้อมูลจากการสำรองข้อมูลรายวัน กรณีที่เลวร้ายที่สุดสำหรับฐานข้อมูลบัญชีที่ได้รับความเสียหายคือคุณล้มละลายเพราะการปฏิเสธการชำระเงินทั้งหมด
สำหรับโครงการของคุณคุณอาจจะไปทางใดทางหนึ่ง การมีผู้ใช้ 1,000 คนพร้อมกันอาจจะไม่ผลักดันขีด จำกัด ของสิ่งที่เซิร์ฟเวอร์ SQL สามารถจัดการได้บนพีซีแบบ Commodity ในปัจจุบัน แต่ส่วนมากจะขึ้นอยู่กับลักษณะของธุรกรรม หากคุณคุ้นเคยกับ SQL และการออกแบบฐานข้อมูลเชิงสัมพันธ์สิ่งนี้สามารถใช้ได้กับคุณ คุณจะต้องการลดทอนธุรกรรมให้มากที่สุดเท่าที่จะเป็นไปได้สำหรับบางสิ่งเช่นจุดกระแสของผู้เล่นคุณอาจต้องการบันทึกเป็นระยะ ๆ ในฐานข้อมูลเนื่องจากสถิติเช่นนี้ไม่จำเป็นต้องสอดคล้องกันเสมอไป (ในเกม PvP พวกเขาอาจจะ ... ) อย่าเก็บสิ่งต่าง ๆ เช่นสัตว์ประหลาด HP ในฐานข้อมูลเลยในเกมส่วนใหญ่จะมีเพียงข้อมูลที่เกี่ยวข้องกับผู้เล่นเท่านั้น
ในทางกลับกันหากคุณไม่ใช่ตัวช่วยสร้าง SQL คุณอาจพบว่าการเก็บข้อมูลทั้งหมดไว้ในหน่วยความจำนั้นง่ายกว่ามากในการทำงานได้อย่างน่าเชื่อถือ ฐานข้อมูล SQL ทำให้ความสอดคล้องและความน่าเชื่อถือง่ายขึ้น แต่ไม่ใช่โดยอัตโนมัติ ฐานข้อมูลที่ออกแบบมาไม่ดีสามารถทำงานได้ไม่ดีและนำไปสู่ความไม่สอดคล้องกัน ธุรกรรมจะไม่เป็นอะตอมเว้นแต่คุณจะทำเช่นนั้น หากคุณไม่ได้ใช้คำสั่งที่กำหนดพารามิเตอร์อย่างเคร่งครัดคุณจะเปิดการโจมตีของ SQL injection