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. لا يتطلب تطبيقنا معاملات معقدة ولا علاقات بيانات. فبينما تتفوق قواعد البيانات العلائقية في فرض قيود سلامة البيانات ومعالجة المعاملات المعقدة، ليس لدى تطبيقنا مثل هذه المتطلبات. ويمكن لقواعد بيانات المستندات أن توفر ضمانات اتساق ومتانة كافية لحالتنا.

العواقب

باختيار قاعدة بيانات مستندات، سنحتاج إلى الاستثمار في تعلّم التقنية المحددة التي سنختارها وفهمها. وفضلًا عن ذلك، سنحتاج إلى التأكد من أن نموذج بيانات تطبيقنا يتوافق جيدًا مع نموذج بيانات قاعدة المستندات لتعظيم الأداء وقابلية التوسع.

ومع ذلك، نعتقد أن فوائد استخدام قاعدة بيانات مستندات تفوق تكاليفها، وأنها الأنسب لمتطلبات تطبيقنا وقيوده.