PDA

View Full Version : حرفه ای: استفاده از nhibernate برای ارتباط با دیتابیس ؟



leila.net
سه شنبه 10 شهریور 1394, 16:10 عصر
دوستان عزیز سلام
راستش یه مدتی هست دارم رو پروژه orchard کار می کنم دوستانی که باهاش کار کردن می دونن که از nhibernate تو data access layer اش استفاده می کنه.
خب تو یکسری کارهای ابتدایی مشکلی باهاش نداشتم و ندارم . ولی خب الان می خواستم bulk insert رو باهاش انجام بدم که راه حلی براش پیدا نکردم به غیر اینکه تو یه حلقه بعد از هر 100 رکوردی که ثبت کردم TransactionManager.RequireNew() رو استفاده کنم که به نظرم راه حل خوبس نیست در مقابل استفاده از table data type که در کمترین زمان ممکن می تونستیم بیش از 100 هزار رکورد را بصورت یکجا به جدول اضافه کنیم !!!

هر عملیاتی که به دیتابیس مرتبط هست پایگاه داده رو بصورت کامل lock می کنه و امکان اجرای درخواست همزمان وجود نداره و فرض کنین می خواین 100 رکورد ثبت کنین و همان لحظه هم تو یه صفحه دیگه یه select انجام میدین که با time out روبرو میشین !!! یا سرعت لود اطلاعات خیلی پایینه ...

برای رفع این مشکل هم از

ALTER DATABASE dbname SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE dbname SET READ_COMMITTED_SNAPSHOT ON;


استفاده کردم که متاسفانه مشکل رو ظاهرا حل نکرده !!!

خلاصه این ها مواردی هست که من تو کار با nhibernate باهاش برخورد کردم .
ممنون میشم از دوستان اگه کسی با nhibernate کار کرده اطلاعاتی در این زمینه در اختیار بنده و سایر دوستان قرار بده که آیا اصلا استفاده از nhibernate تو این سطح درست هست یا نه ؟

و مورد دیگه که استفاده از document storage توی ارچارد هست به نظر شما سرعت دستیابی به اطلاعات با این روش بهتر هست یا استفاده از join های مستقیم مخصوصا برا وقتی که حجم دیتابیس تون خیلی زیاد باشه ؟

البته باید این رو هم بگم که توی ارچارد ، با این شیوه ذخیره اطلاعات ، داده ها توی جدول اصلی مربوط به document storage , جدول هایی که برا مدل مورد نظر استفاده کردیم ذخیره میشن که این هم خودش در واقع حجم دیتابیس رو دوبرابر و شایدم بیشتر از حجم مورد نیاز می کنه !!!