Architecture Decision Record

Active theme: Light

← مثال‌های رکورد تصمیم

رکورد تصمیم معماری: انتخاب فناوری پایگاه داده

وضعیت

پذیرفته‌شده

زمینه

در حال طراحی یک برنامهٔ جدید هستیم که نیاز دارد داده‌ها را به شکلی مقیاس‌پذیر و کارآمد ذخیره و بازیابی کند. سه نوع فناوری پایگاه داده را که معمولاً استفاده می‌شوند شناسایی کرده‌ایم: پایگاه‌های داده رابطه‌ای، پایگاه‌های داده سندی و پایگاه‌های داده رویدادی.

پایگاه‌های داده رابطه‌ای داده‌ها را در جدول‌هایی با طرح‌واره‌های ثابت ذخیره می‌کنند و قیود سخت‌گیرانهٔ یکپارچگی داده را اعمال می‌کنند. برای برنامه‌هایی که به روابط پیچیدهٔ داده و تراکنش‌ها نیاز دارند مناسب‌اند. نمونه‌ها شامل MySQL، PostgreSQL و Oracle هستند.

پایگاه‌های داده سندی داده‌ها را در اسنادی شبیه JSON ذخیره می‌کنند و فاقد طرح‌واره‌اند. برای برنامه‌هایی که به مدل‌های داده انعطاف‌پذیر و مقیاس‌دهی افقی نیاز دارند بسیار مناسب‌اند. نمونه‌ها شامل MongoDB، Couchbase و Amazon DynamoDB هستند.

پایگاه‌های داده رویدادی داده‌ها را به‌صورت رشته‌ای از رویدادها ذخیره می‌کنند و هر تغییر داده را ثبت می‌کنند. برای برنامه‌هایی که به ممیزی، event sourcing و پردازش پیچیدهٔ داده نیاز دارند مناسب‌اند. نمونه‌ها شامل Apache Kafka، Apache Pulsar و AWS Kinesis هستند. تصمیم

پس از ارزیابی دقیق نیازمندی‌ها و محدودیت‌های برنامهٔ خود، تصمیم گرفته‌ایم از پایگاه داده سندی استفاده کنیم.

دلیل و منطق

پایگاه داده سندی را انتخاب کرده‌ایم زیرا:

  1. برنامهٔ ما به مدل داده انعطاف‌پذیری نیاز دارد که در طول زمان تکامل یابد. پایگاه‌های داده سندی به ما اجازه می‌دهند داده‌ها را در قالبی بدون طرح‌واره ذخیره کنیم، یعنی می‌توانیم فیلدهای جدید اضافه کنیم یا ساختار اسناد موجود را بدون تغییر طرح‌وارهٔ پایگاه داده تغییر دهیم.

  2. برنامهٔ ما باید برای مدیریت حجم زیاد داده و ترافیک به‌صورت افقی مقیاس یابد. پایگاه‌های داده سندی پشتیبانی داخلی از شاردینگ و تکثیر دارند که به ما امکان می‌دهد داده‌ها را میان چندین سرور توزیع کنیم و توان عملیاتی بالای خواندن و نوشتن را مدیریت کنیم.

  3. برنامهٔ ما به بازیابی سریع و کارآمد داده نیاز دارد. پایگاه‌های داده سندی قابلیت‌های قدرتمند ایندکس‌گذاری و پرس‌وجو دارند که به ما امکان می‌دهند داده‌ها را سریع و کارآمد بازیابی کنیم.

  4. برنامهٔ ما به تراکنش‌های پیچیده یا روابط داده نیاز ندارد. در حالی که پایگاه‌های داده رابطه‌ای در اعمال قیود یکپارچگی داده و مدیریت تراکنش‌های پیچیده برتری دارند، برنامهٔ ما چنین الزاماتی ندارد. پایگاه‌های داده سندی می‌توانند تضمین‌های کافی از نظر سازگاری و پایداری برای مورد استفادهٔ ما فراهم کنند.

پیامدها

با انتخاب پایگاه داده سندی، باید در یادگیری و درک فناوری مشخصی که برای استفاده انتخاب می‌کنیم سرمایه‌گذاری کنیم. افزون بر این، باید اطمینان یابیم که مدل داده برنامهٔ ما با مدل داده پایگاه داده سندی به‌خوبی سازگار است تا کارایی و مقیاس‌پذیری به حداکثر برسد.

با این حال، باور داریم مزایای استفاده از پایگاه داده سندی بر هزینه‌ها می‌چربد و این بهترین تناسب با نیازمندی‌ها و محدودیت‌های برنامهٔ ماست.