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

همانطور که میدانیم تمامی درایور های موجود برای اتصال به پایگاه داده در جاوا بلاکینگ میباشند البته به استثنا ReactiveMongo که با استفاده از استریم ها پلی پیاده سازی شده است.

 جستجو هایی که توی چند روز اخیر انجام دادم منو به این نتیجه رسونده که فعلا ساز و کاری برای استفاده ار دیتا بیس به صورت non blocking موجود نمیباشد. البته یک کتابخانه mysql-asyn-connector پیدا کردم که بر اساس توضیحات توش فراخوانی های دیتابیس به صورت asyn انجام میشه. ولی برای دیتابیس های دیگر مخصوصا اوراکل (که مورد استفاده ما هستش) چیزی پیدا نکردم. حتی میتونم بگم که پروژه های تستی هم وجود ندارد. واین میتونه نشون دهنده این موضوع باشه که هنوز نیازی در این زمینه احساس نشده.

این منو برمیگردونه به سوالم که در شرایطی که درایور های دیتابیس ها در جاوا بالذات به صورت بلاکینگ کار میکنن ایا استفاده از پلی که نقطه قوتش non blocking بودنش هست ایا کاری منطقی است و ایا استفاده از پلی در این شرایط هم مزیتی دارد و به افزایش عملکرد سیستم کمک میکند یا خیر؟

البته این نکته رو در نظر دارم که با استفاده ازساختار های پلی حداقل thread pool ای که برای request handling هستش درگیر نمیشه، ولی به هر حال یک ترد دیگر در جای دیگر بلاک باقی میمونه.

1 پاسخ

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

جداسازی thread pool ها مزایای زیادی داره و اگر بدرستی استفاده بشه برنامه شمارو خیلی responsive تر میکنه و شما میتونید قسمت های blocking پروژتون رو ایزوله کنید و بهتر مدیریت کنید از طرف دیگه Play Framework بدلیل stateless بودن براحتی با یک load balancer میتونه به درخواست های زیادی پاسخ بده که در صورتی که ذات سیستم شما blocking باشه خیلی به scale شدن کمک میکنه.

برای استفاده از درایور های JDBC بصورت non-blocking شما می تونید از slick استفاده کنید.

و در نهایت بنده معمولا وقتی برای یک موضوع در اینترنت منبع و پروژه رایگان و اوپن سورس پیدا نمی کنم برداشتم اینه که اون موضوع high tech بوده نه کم اهمیت!

قبل توسط (10 امتیاز)
+1
البته پیکان پژویی ماشین بدی نبود.
پلن slick رو نگاه میکردم دیدم به زودی میخان یه ورژنی بدن که با استریم های جاوا کار میکنه.
قبل توسط (95 امتیاز)
ویرایش شده قبل توسط
البته  از نظر معماری درست نیست دیتابیس RDBMS  یا Java EE ویا Spring  رو بگی  پیکان و MongoDB  و Play روبگی BMW شاید بشه گفت اولی سواری Sedan  یا SUV و برای پردازش داده و پیاده سازی منطق کاری با دیتای سایز کوچک و متوسط مناسبه که مفاهیم قدیمی مثل Data Integrity و مفاهیم RDBMS ای هنوز مهم هستنند و دیگری مثل تراک و کامیون برای پردازش داده های بزرگ ساخته شده
مشکل اینجاست که ما میخوایم با تراک بریم پیست مسابقات سواری و ازش انتظار داریم اول هم بشه
یادمون باشه حذف RDBMS از معماری نرم افزار و رد آن مثل اینه رد نظریه داده های رابطه ای از ریاضیات گسسته است باید بدونیم همیشه مسایلی وجود داره که بهترین روش حل آن استفاده از داده های رابطه ایه

سوالات مشابه

+1 امتیاز
1 پاسخ 326 بازدید
+1 امتیاز
1 پاسخ 333 بازدید
+1 امتیاز
1 پاسخ 339 بازدید
0 امتیاز
1 پاسخ 266 بازدید
+1 امتیاز
1 پاسخ 493 بازدید
0 امتیاز
1 پاسخ 362 بازدید
0 امتیاز
1 پاسخ 307 بازدید
0 امتیاز
1 پاسخ 545 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 361 بازدید
...