مدیریت روابط بین Entitiy ها در package های مختلف در wise

0 رأی
میانگین بازدید روزانه 0.2531 بازدید

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

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

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

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

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

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

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

سوال 4 ماه قبل در تالار برنامه نویسی توسط nirvana (58 امتیاز)
ویرایش 4 ماه قبل توسط Saeed Zarinfam

1 جواب

0 رأی

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

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

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

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

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

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

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

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

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 0.6825 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.4262 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2742 بازدید
سوال 5 ماه قبل در تالار برنامه نویسی توسط gatity (48 امتیاز)
0 رأی
0 جواب میانگین بازدید روزانه 0.3554 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 1.5238 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 1.0334 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.3221 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.3854 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1522 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.229 بازدید
کانال تلگرام جواب یاب
...