บันทึกการตัดสินใจด้านสถาปัตยกรรม: การเลือกเทคโนโลยีฐานข้อมูล
สถานะ
ยอมรับ
บริบท
เรากำลังออกแบบแอปพลิเคชันใหม่ที่ต้องจัดเก็บและเรียกคืนข้อมูลในลักษณะที่ปรับขนาดได้และมีประสิทธิภาพ เราระบุเทคโนโลยีฐานข้อมูลที่ใช้กันทั่วไปได้สามประเภท: ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเอกสาร และฐานข้อมูลเหตุการณ์
ฐานข้อมูลเชิงสัมพันธ์จัดเก็บข้อมูลในตารางที่มีสคีมาคงที่และบังคับข้อจำกัดความสมบูรณ์ของข้อมูลอย่างเข้มงวด เหมาะกับแอปพลิเคชันที่ต้องการความสัมพันธ์ของข้อมูลที่ซับซ้อนและธุรกรรม ตัวอย่างได้แก่ MySQL, PostgreSQL และ Oracle
ฐานข้อมูลเอกสารจัดเก็บข้อมูลในเอกสารคล้าย JSON และไม่มีสคีมา เหมาะอย่างยิ่งกับแอปพลิเคชันที่ต้องการแบบจำลองข้อมูลที่ยืดหยุ่นและการปรับขนาดแนวนอน ตัวอย่างได้แก่ MongoDB, Couchbase และ Amazon DynamoDB
ฐานข้อมูลเหตุการณ์จัดเก็บข้อมูลเป็นชุดของเหตุการณ์ บันทึกทุกการเปลี่ยนแปลงของข้อมูล เหมาะกับแอปพลิเคชันที่ต้องการการตรวจสอบ event sourcing และการประมวลผลข้อมูลที่ซับซ้อน ตัวอย่างได้แก่ Apache Kafka, Apache Pulsar และ AWS Kinesis การตัดสินใจ
หลังจากประเมินข้อกำหนดและข้อจำกัดของแอปพลิเคชันอย่างรอบคอบ เราตัดสินใจใช้ฐานข้อมูลเอกสาร
เหตุผล
เราเลือกฐานข้อมูลเอกสารเพราะ:
แอปพลิเคชันของเราต้องการแบบจำลองข้อมูลที่ยืดหยุ่นซึ่งพัฒนาได้เมื่อเวลาผ่านไป ฐานข้อมูลเอกสารให้เราจัดเก็บข้อมูลในรูปแบบไม่มีสคีมา ซึ่งหมายความว่าเราเพิ่มฟิลด์ใหม่หรือเปลี่ยนโครงสร้างของเอกสารที่มีอยู่ได้โดยไม่ต้องแก้ไขสคีมาฐานข้อมูล
แอปพลิเคชันของเราต้องปรับขนาดแนวนอนเพื่อจัดการข้อมูลและทราฟฟิกปริมาณมาก ฐานข้อมูลเอกสารมีการรองรับ sharding และการทำสำเนาในตัว ซึ่งช่วยให้เรากระจายข้อมูลไปยังเซิร์ฟเวอร์หลายเครื่องและจัดการปริมาณงานอ่านและเขียนสูงได้
แอปพลิเคชันของเราต้องการการดึงข้อมูลที่เร็วและมีประสิทธิภาพ ฐานข้อมูลเอกสารมีความสามารถด้านการทำดัชนีและการสอบถามที่ทรงพลังซึ่งช่วยให้เราดึงข้อมูลได้อย่างรวดเร็วและมีประสิทธิภาพ
แอปพลิเคชันของเราไม่ต้องการธุรกรรมที่ซับซ้อนหรือความสัมพันธ์ของข้อมูล แม้ฐานข้อมูลเชิงสัมพันธ์จะเก่งในการบังคับข้อจำกัดความสมบูรณ์ของข้อมูลและจัดการธุรกรรมที่ซับซ้อน แต่แอปพลิเคชันของเราไม่มีข้อกำหนดเช่นนั้น ฐานข้อมูลเอกสารให้การรับประกันความสอดคล้องและความคงทนที่เพียงพอสำหรับกรณีใช้งานของเรา
ผลที่ตามมา
เมื่อเลือกฐานข้อมูลเอกสาร เราจะต้องลงทุนในการเรียนรู้และทำความเข้าใจเทคโนโลยีเฉพาะที่เราเลือกใช้ นอกจากนี้ เราต้องแน่ใจว่าแบบจำลองข้อมูลของแอปพลิเคชันของเราเข้ากันได้ดีกับแบบจำลองข้อมูลของฐานข้อมูลเอกสารเพื่อเพิ่มประสิทธิภาพและความสามารถในการปรับขนาดสูงสุด
อย่างไรก็ตาม เราเชื่อว่าประโยชน์ของการใช้ฐานข้อมูลเอกสารมีมากกว่าต้นทุน และเป็นตัวเลือกที่เหมาะที่สุดกับข้อกำหนดและข้อจำกัดของแอปพลิเคชันของเรา