Architecture Decision Record

Active theme: Light

← ตัวอย่างบันทึกการตัดสินใจ

บันทึกการตัดสินใจด้านสถาปัตยกรรม: การเลือกเทคโนโลยีฐานข้อมูล

สถานะ

ยอมรับ

บริบท

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

ฐานข้อมูลเชิงสัมพันธ์จัดเก็บข้อมูลในตารางที่มีสคีมาคงที่และบังคับข้อจำกัดความสมบูรณ์ของข้อมูลอย่างเข้มงวด เหมาะกับแอปพลิเคชันที่ต้องการความสัมพันธ์ของข้อมูลที่ซับซ้อนและธุรกรรม ตัวอย่างได้แก่ MySQL, PostgreSQL และ Oracle

ฐานข้อมูลเอกสารจัดเก็บข้อมูลในเอกสารคล้าย JSON และไม่มีสคีมา เหมาะอย่างยิ่งกับแอปพลิเคชันที่ต้องการแบบจำลองข้อมูลที่ยืดหยุ่นและการปรับขนาดแนวนอน ตัวอย่างได้แก่ MongoDB, Couchbase และ Amazon DynamoDB

ฐานข้อมูลเหตุการณ์จัดเก็บข้อมูลเป็นชุดของเหตุการณ์ บันทึกทุกการเปลี่ยนแปลงของข้อมูล เหมาะกับแอปพลิเคชันที่ต้องการการตรวจสอบ event sourcing และการประมวลผลข้อมูลที่ซับซ้อน ตัวอย่างได้แก่ Apache Kafka, Apache Pulsar และ AWS Kinesis การตัดสินใจ

หลังจากประเมินข้อกำหนดและข้อจำกัดของแอปพลิเคชันอย่างรอบคอบ เราตัดสินใจใช้ฐานข้อมูลเอกสาร

เหตุผล

เราเลือกฐานข้อมูลเอกสารเพราะ:

  1. แอปพลิเคชันของเราต้องการแบบจำลองข้อมูลที่ยืดหยุ่นซึ่งพัฒนาได้เมื่อเวลาผ่านไป ฐานข้อมูลเอกสารให้เราจัดเก็บข้อมูลในรูปแบบไม่มีสคีมา ซึ่งหมายความว่าเราเพิ่มฟิลด์ใหม่หรือเปลี่ยนโครงสร้างของเอกสารที่มีอยู่ได้โดยไม่ต้องแก้ไขสคีมาฐานข้อมูล

  2. แอปพลิเคชันของเราต้องปรับขนาดแนวนอนเพื่อจัดการข้อมูลและทราฟฟิกปริมาณมาก ฐานข้อมูลเอกสารมีการรองรับ sharding และการทำสำเนาในตัว ซึ่งช่วยให้เรากระจายข้อมูลไปยังเซิร์ฟเวอร์หลายเครื่องและจัดการปริมาณงานอ่านและเขียนสูงได้

  3. แอปพลิเคชันของเราต้องการการดึงข้อมูลที่เร็วและมีประสิทธิภาพ ฐานข้อมูลเอกสารมีความสามารถด้านการทำดัชนีและการสอบถามที่ทรงพลังซึ่งช่วยให้เราดึงข้อมูลได้อย่างรวดเร็วและมีประสิทธิภาพ

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

ผลที่ตามมา

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

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