70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

دیتابیس sqlite برای این پروژه کافی هست یا خیر؟

سلام دوستان

بنده تابحال که نزدیک به 25 پروژه در حوزه آموزش و پرورش با سی شارپ نوشتم و همیشه از دیتابیس sqlite استفاده کردم (و خدا رو شکر هیچ وقت به مشکل برنخوردم)

خب علتش هم اینه بود که بیشتر جاها برنامه تک کاربره بود و نیازی به شبکه کردن نداشتم و همچینین به دلیل راه اندازی سریع کار و عدم نیاز به نصب برنامه جانبی بود

اما الان یه پروژه گرفتم که برای یه انجمن ورزشی هست و میخوام یه بانک اطلاعاتی جامع براش بنویسم به نظرتون باز هم استفاده از sqlite کار درستی هست یا خیر ؟؟؟ (برنامه قراره توی یک اداره نصب بشه که متاسفانه سرور ندارند)

البته با توجه به این توضیحاتی که میدم خدمتتون :

1- تعداد کاربرا نهایتا 2 یا 3 نفر هستش

2- تعداد اطلاعات یعنی رکوردهایی که نهایتا میخواد ذخیره بشه در جداول دیتابیس ممکنه به 500 هزار تا هم برسه و تعداد جداول هم نهایتا تا 20 جدول (البته این قضیه پیش بینی من تا چند سال آینده هست)

البته در خصوص مورد اول من یکی دوبار مجبور شدم توی مدارس در مورد برنامه های قبلیم کار رو شبکه کنم که در واقع اومدم کل پوشه برنامه رو شیر کردم و از اون ور فایل exe رو فراخوونی کردم و کار انجام شد حتی زمانیکه 2 یا 3 کاربر هم اطلاعات رو همزمان ثبت می کردن مشکلی نبود ولی فکر کنم این کار غیر اصولی باشه ...

به نظرتون اگر باز هم شد که از sqlite استفاده کنم میشه توی connectionString آدرس فایل دیتابیس رو بصورت شبکه بدم مشکلی پیش نمیاد

ممنون میشم اگر کسی اطلاعاتی داره مخصوصا بصورت تجربی در اختیار بگذاره

متشکرم

پرسیده شده در 1396/09/06 توسط

7 پاسخ

1

سلام

مهندس فرموده اید

(به جز پروژه هایی که در سطح خیلی بالا و با تعداد کاربر خیلی بالا هستند که باید به صورت ترکیبی از ADO.NET و EF استفاده بشه)

ممنون میشوم بیشتر توضیح بدهید دراین مورد

منظور از کاربر خیلی بالا چه عددی می باشد

در چه زمانی از ADO.NET و چه زمانی از ef استفاده کنیم

باتشکر

پاسخ در 1396/09/07 توسط
1

سلام، پیشنهاد می کنم حتماً یک سیستم رو به عنوان سرور استفاده کنید و بانک رو روی اون قرار بدید، SqlLite محدودیت هایی داره که بعد ها ممکنه براتون مشکل ساز بشه. اگر می تونید یکی از سیستم ها رو به عنوان سرور استفاده کنید و روش SQL Server یا نهایت SQL Express نصب کنید که برای آینده خیالتون راحت باشه.

پاسخ در 1396/09/06 توسط
0

ممنون استاد احمدی عزیز مثل همیشه پاسخگویید ، از سخاوت شما متشکرم

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

جسارتا نحوه ارتباط با پایگاه sql به چه شکل هست ؟

یعنی کافیه من هر جا توی دستورهام از sqlite استفاده می کردم به جاش از sql استفاده کنم درسته؟

توی کانکشن استرینگ باید چطوری ادرس پایگاه رو بدم؟

و سوال آخر اینکه روی سیستم کاربر نیاز به نصب sql کامل که نیست درسته؟ فقط باید یه منیجر نصب بشه برای راه اندازی ؟

اگر لینک آموزش خوبی در خصوص مواردی که پرسیدم میشناسید معرفی کنید بی نهایت ممنونم و سپاسگزار شما خواهم بود

متشکرم

پاسخ در 1396/09/06 توسط
1

سلام مجدد، نحوه کوئری گرفتن تقریباً به هم شبیه هستن، اما ترجیحاً از Entity Framework استفاده کنید. برای استفاده از SQL Server حتماً باید سرویس SQL روی سیستمی که بانک های اطلاعاتی رو قرار هست نگهداری کنه باید نصب باشه و Management Studio برای مدیریت بانک ها هست، یعنی خود Management Studio از سرویس SQL Server استفاده می کنه. اما کامپیوتر Client ها نیازی نیست که سرویس SQL Server روشون نصب باشه و می تونن به بانکی که بر روی سرور هست متصل بشن (مشروط بر اینکه سرویس Browser و همینطور Port های مربوط به SQL Server روی Firewall باز باشن)

در مورد آموزش می تونید سری آموزش متنی Entity Framework رو داخل سایت دنبال کنید: آموزش Entity Framework

در مورد Connection String ها : این لینک

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

پاسخ در 1396/09/06 توسط
2

سلام، وقت بخیر

منظور از پروژه هایی که در سطح بالا قرار دارن پروژه هایی هست که تعداد کاربرها و داده ها زیاد هست. برای مثال، فرض کنید که وب سایتی دارید با 1000 کاربر همزمان، برای عملیات هایی مثل Insert و Update و Delete از EF استفاده کنید، اما برای گرفتن کوئری از جداول به صورت مستقیم از Query های SQL استفاده کنید، با اینکه قابلیت هایی مثل ChangeTracker یا Object Proxy رو میشه در EF غیر فعال کرد که تاثیر زیادی رو افزایش سرعت داره، اما باز هم نحوه Generate کردن کوئری ها که تو کوئری های پیچیده EF زیاد هوشمند عمل نمیکنه یا مقدار دهی Instance های Entity ها که بوسیله Reflection انجام میشه باعث میشه سرعت کوئری ها کاهش پیدا کنه. تو گوگل راجع به Benchmark های EF و Ado.net جستجو کنید این موضوع کاملاً مشخصه. خاطرم هست یکی از دوستان ما میگفت شرکت که از راهکاران همکاران سیستم استفاده می کرد اوایل سرعت کوئری ها خیلی پایین بود و شاید بعضی وقت ها نتیجه یک کوئری بیشتر از یک دقیقه زمان میبرد و دلیلش هم استفاده از EF برای گرفتن کوئری های سنگین بود که در نسخه های بعدی این مشکل رو برطرف کردن.

پاسخ در 1396/09/07 توسط
2

در مورد Entity Framework نسخه 7 برای DotNet Core هست که با DotNet معمولی فرق داره، برای پروژه های معمولی که دارید از نسخه 6 باید استفاده کنید که به راحتی و با اجرای دستور NuGet داخل پروژتون نصب میشه. اما حتماً از Entity Framework استفاده کنید (به جز پروژه هایی که در سطح خیلی بالا و با تعداد کاربر خیلی بالا هستند که باید به صورت ترکیبی از ADO.NET و EF استفاده بشه)

برای برنامه های تک کاربره می تونید از Sqlite یا SQL Compact استفاده کنید که برای هر دو Provider برای Entity Framework هست، یعنی ساختار ایجاد شده برای EF یکسان هست، شما کافیه Provider رو تغییر بدید. شما وقتی با EF بخش ارتباط با بانک رو ایجاد می کنید مهم نیست که بانک اطلاعاتی مورد استفاده چیه، شما از هر بانکی می تونید استفاده کنید، به شرطی که Provider این بانک برای EF وجود داشته باشه که در حال حاضر اکثر بانک های معروف مثل SQL Server، Oracle یا SQLite یا SQL Compact و ... برای Entity Framework شامل Provider هم هستند.

در مورد SQL Server شما از لحاظ امکانات و حجم بانک اطلاعاتی محدودیت دارید، برای مثال تا 10 گیگابایت حجم بانک بیشتر پشتیبانی نمیشه یا 1 گیگابایت رم بیشتر پشتیبانی نمیشه. اما چند کاربر می تونن در آن واحد از بانک استفاده کنن.

در مورد نصب SQL Server، دقیقاً شما یک سیستم رو انتخاب می کنید و روی اون سرویس SQL Server رو به همراه Management Studio نصب می کنید، بقیه سیستم ها به این سیستم متصل میشن و نیازی به نصب SQL Server روی سیستم های Client نیست.

پاسخ در 1396/09/07 توسط
0

واقعا ممنون استاد از اینکه وقت میگذارید و پاسخ میدید

من یکسال پیش وقتی کار با سی شارپ رو شروع کردم خاطرم هست یه سوال همینجا پرسیدم مبنی بر اینکه از چه روشی برای ارتباط با دیتابیس استفاده کنم (ado.net or linq or entity)

اما اون موقع چون درک درستی نداشتم متوجه نمیشدم داره چه اتفاقی میفته اما الان مباحث برام روشنتر شده

من در خصوص entity جستجوهایی کردم و متوجه شدم که در نسخه 7 بهبودهای قابل ملاحظه ای صورت گرفته

بنابراین شما پیشنهادتون اینه که این روش رو یاد بگیرم و سراغ اون برم درسته؟

فقط یه نکته دیگه اینکه : من توی پروژه هایی که پیش رو دارم معمولا کارهام تک کاربره خواهند بود و فقط گاهی نیاز میشه چند کاربر به دیتابیس متصل بشن

با این اوصاف نظرتون چی هست باز هم از sql استفاده کنم یا خیر ؟ مثلا sql express کارم رو راه نمیندازه ؟در کل sql express چه محدودیت هایی داره نمیشه ازش برای برنامه های چند کاربره استفاده کرد؟یا در خصوص کار با اون میشه از روش entity استفاده کرد یا نه؟

و مورد آخر اینطور که من متوجه شدم اگر یک کیس رو به عنوان اصلی انتخاب کنیم و sql رو روی اون نصب کنیم برای کیس های دیگه نیاز به نصب هیچ برنامه پیش نیازی نیست درسته؟ یعنی حتی managment studio هم نمی خوان؟؟

ببخشید سوالاتم زیاد شد ، و پیشاپیش ممنونم که وقت میگذارید و راهنمایی می کنید

بی نهایت سپاسگزارم

پاسخ در 1396/09/07 توسط

پاسخ شما