+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 امتیاز)
نمایش از نو قبل توسط
ممنون از جوابتون.
Slick استفاده از JDBC رو non-blocking میکنه ولی خود ارتباط با DB هنوز blocking میمونه. ولی گزینه بسیار جالبی بود، مزایای خیلی خوبی داره. این سوال مطرح میشه که فعلا slick با استریم های scala کار میکنه. آیا روشی وجود داره که بشه در جاوا هم ازون استفاده کرد؟ اگر نه آیا من میتونم persistence layer رو با scala و slick بزنم و مابقی پروژه رو با جاوا؟
قبل توسط (1.1هزار امتیاز)
جاوا و اسکالا interoperability خیلی خوبی دارند و قاعدتا باید بشه این کار رو انجام داد ولی بنظر من کار منطقی نیست و تقریبا هیچ کس رو ندیدم این کار رو بکنه. ما باید تصمیم بگیریم یا همون پیکان خودمونو سوار شیم یا اینکه بریم سراغ ماشین های جدیدتر با تکنولوژی های بهتر و گرنه بعید می دونم موتور BMW رو پیکان چیز خوبی از آب در بیاد!
قبل توسط (10 امتیاز)
+1
البته پیکان پژویی ماشین بدی نبود.
پلن slick رو نگاه میکردم دیدم به زودی میخان یه ورژنی بدن که با استریم های جاوا کار میکنه.
قبل توسط (95 امتیاز)
ویرایش شده قبل توسط
البته  از نظر معماری درست نیست دیتابیس RDBMS  یا Java EE ویا Spring  رو بگی  پیکان و MongoDB  و Play روبگی BMW شاید بشه گفت اولی سواری Sedan  یا SUV و برای پردازش داده و پیاده سازی منطق کاری با دیتای سایز کوچک و متوسط مناسبه که مفاهیم قدیمی مثل Data Integrity و مفاهیم RDBMS ای هنوز مهم هستنند و دیگری مثل تراک و کامیون برای پردازش داده های بزرگ ساخته شده
مشکل اینجاست که ما میخوایم با تراک بریم پیست مسابقات سواری و ازش انتظار داریم اول هم بشه
یادمون باشه حذف RDBMS از معماری نرم افزار و رد آن مثل اینه رد نظریه داده های رابطه ای از ریاضیات گسسته است باید بدونیم همیشه مسایلی وجود داره که بهترین روش حل آن استفاده از داده های رابطه ایه

سوالات مشابه

+1 امتیاز
1 پاسخ 330 بازدید
+1 امتیاز
1 پاسخ 344 بازدید
+1 امتیاز
1 پاسخ 353 بازدید
0 امتیاز
1 پاسخ 272 بازدید
+1 امتیاز
1 پاسخ 502 بازدید
0 امتیاز
1 پاسخ 364 بازدید
0 امتیاز
1 پاسخ 310 بازدید
0 امتیاز
1 پاسخ 551 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط ftmh (7 امتیاز)
+1 امتیاز
1 پاسخ 380 بازدید
...