+1 امتیاز
قبل در برنامه نویسی توسط (89 امتیاز)
ویرایش شده قبل توسط

به عنوان مثال من یک سیستم فروش دارم که دارای زیر فرایند های 

  • مدیریت تقاضای مشتری 
  • تولید محصول 
  • آزادسازی و حمل محصول 

میباشد. که هر کدام بیزینس خود را دارند اما اطلاعات دامنه ای مشترکی مثل (مشتری، محصول، سفارش و ...) هم دارند.

یک سناریو برای مدل کردن این سیستم به این شکل است که اطلاعات مشترک یا مرزی را در یک پکیج قرار دهیم و در package های دیگر استفاده کنیم.

با این فرض برای relation ها چه تصمیمی باید گرفت ؟ آیا باایجاد  relation ها coupling بین package  ها زیاد میشود؟ امکان ایجاد نکردن relation ها هست؟

سناریوی دیگر این است که هر پکیج Entity های مورد نیاز خود را بسازد ولی همه این Entityها در دیتابیس  به یک موجودیت، map شوند.در این شرایط که همه زیر سیستم ها Entity مستقل خود را دارند،ایجاد relationها برای هر سیستم منطقی است؟ تغییراتی که  زیر سیستم ها بر روی دیتابیس ایجاد می کنن چطور باید کنترل شود ؟

آیا سناریوی بهتری برای این کار وجود دارد؟

1 پاسخ

0 امتیاز
قبل توسط (1.2هزار امتیاز)
ویرایش شده قبل توسط

این سوال به دو بخش قابل تفکیک است. 

1. چه مبنایی برای شکستن یک محصول به چند مولفه ها وجود دارد؟

بنده کاربردی ترین دستورالعملی که در این زمینه مشاهده کردم مربوط به رویکرد Domain Driven Design است. پیشنهاد می کنم این مقاله را مطالعه بفرمایید.

2. با چه تکنیکی یک مولفه به اطلاعات یک مولفه دیگری دست پیدا کند؟

طبیعتاً بهتر است وابستگی دو مولفه هر چه کمتر باشد و یکپارچه سازی در سطح سرویس و نه سطح داده صورت بگیرد. مخصوصاً اگر یکپارچه سازی دو مولفه از طریق تبادل پیامهای ناهمزمان با واسطه یک میان افزار تبادل پیام مثل ActiveMQ  یا RabbitMQ یا Kafka صورت بگیرد وابستگی دو مولفه حداقل خواهد شد. 

بهتر است API  ارتباط دو مولفه به گونه ای طراحی شود که برای مولفه های دیگر نیز قابل استفاده باشد. 

در برخی موارد نیازمند یکپارچه سازی دو مولفه در سطح داده هستیم. در این صورت پیشنهاد می شود موارد زیر مد نظر قرار بگیرد.

  1. نباید برای سادگی همه مولفه ها را در یک اسکیما قرار بدهید. در بلند مدت از این کار پشیمان خواهید شد چون ارتباط یک مولفه با جداول مولفه دیگر مدیریت پذیر نیست و تفکیک آنها در آینده بسیار دشوار می شود. در نتیجه تغییر مدل داده بسیار پر ریسک و لخت خواهد شد. 
  2. می توانید جداول دو مولفه را در دو اسکیمای مختلف روی یک پایگاه داده نگهداری کنید. برای دسترسی مولفه دوم به اطلاعات مولفه اول می توانید چند View با فیلدهای اطلاعاتی حداقلی در اسکیمای مولفه دوم بسازید. 
  3. در صورتی که نمی توانید دو مولفه را به یک پایگاه داده متصل کنید، از تکنیکهای replication یا Master Data Management برای انتقال اطلاعات از مالک داده به مصرف کنندگان استفاده کنید. 
  4. حتماً تنها یکی از مولفه ها باید روی اطلاعات مشترک اجازه نوشتن داشته باشد و بقیه دسترسی فقط خواندنی دارند. برای تغییر داده از سرویس استفاده کنید.
  5. اگر یکپارچه سازی در سطح داده برای مقاصدی همچون گزارشگیری و نظارت است احتمالاً با ایجاد یک زیرساخت BI و انتقال کلیه اطلاعات به آن با ابزارهای ETL می توانید گزارشات تجمیعی را ایجاد کنید.

سوالات مشابه

+1 امتیاز
1 پاسخ 822 بازدید
0 امتیاز
1 پاسخ 476 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
+1 امتیاز
1 پاسخ 598 بازدید
+1 امتیاز
1 پاسخ 416 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Saeed Mirshams (186 امتیاز)
+1 امتیاز
1 پاسخ 828 بازدید
0 امتیاز
0 پاسخ 480 بازدید
0 امتیاز
1 پاسخ 420 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط gatity (139 امتیاز)
+1 امتیاز
1 پاسخ 390 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط gatity (139 امتیاز)
...