سلام
مسیر رو به صورت معکوس بریم تا ببنیم توی سرمنشاً این گفتگو چه چیزی حاصل میشه
با اشاره به یه داستان و خلاصه وار شروع میکنم :
مردی وارد سرزمین موعود شد ، در اون سرزمین رسم بود که هر کسی در حد توانی که میتونست راه بره و منطقه ای رو با چوب علامت گذاری کنه ، اون منطقه به اون فرد داده میشد ، البته زمان تنها از طلوع تا غروب آفتاب بود !
مرد داستان ما شروع کرد به حرکت و هر جای خوش آب و هوایی رو که میدید طمع به سراغش میومد و به اون سمت میرفت و با فرو کردن یک چوب ، اون رو جزو قلمرو خودش فرض میکرد ! ولیکن در آخر , وقتی که به نقطه اول رسید ( نقطه بستن محدوده ) ، از شدت خستگی مرد ، در حالی که هیچ چیزی نصیبش نشده بود !
سهم اون فرد از اون همه زمین تنها یک متر شد !
ولیکن ارتباط این داستان به ظاهر بی ربط با موضوع این تاپیک !؟
کم نیستن کاربرانی که با این شاخه به اون شاخه پریدن , هم زمان رو از دست میدن و هم از اینجا رونده و از اونجا مونده میشن
سعی بشه , در انتخاب یک مسیر و یا یک رویه از این شاخه به اون شاخه پریدن به حداقل ممکن تقلیل پیدا کنه . و هدف با توجه به سطح عملیات در نظر گرفته بشه .
...........................
موضوع تقابل بین Access و SQL Server بارها و بارها تکرار شده ، قیاسی که شاید بشه گفت در بسیاری موارد موضوعیت نداره !
جالب اینکه این قیاسها غالباً توسط افرادی انجام میشه که در بخش اکسس فعالیت نمیکنن ( حداقل به صورت حرفه ای )
Access و SQL Server هر دو به عنوان پایگاه داده مورد استفاده قرار میگیرن ، و امکان اتصال به بسیاری محیطهای IDE رو دارن ، به طور مثال یک شرکت ممکنه برای طراحی یک سیستم انبار از تلفیق VB و Access و یا VB و SQL Server استفاده کنه .
غالب این مقایسه ها مربوط به محیطهای توسعه دیگه به غیر از خود اکسس هستند و این ضعف و قوتها وقتی معنی پیدا میکنه که شما از محیط IDE دیگه ای به غیر از اکسس , میخواید به یک دیتابیس وصل بشید .
تمامی قابلیتهای عمومی اکسس بسیار فراتر از حد نیاز 99 درصد توسعه دهنده ها هستند
بسیاری برتریهای SQL Server آرمانی بوده و عملاً در مقوله کارکردی Access قرار نمی گیرن
برخی از محدودیتهای Access رو بررسی میکنیم تا ببینیم چه طیف افرادی که با Access کار میکنند رو دچار مشکل میکنه ( با اکسس به عنوان محیط توسعه و نه تنها محل ذخیره سازی اطلاعات )
حجم 2 گیگابایت هر فایل
چه تعداد از شما با سیستمهایی کار میکیند که از این حد فراتر میره ، آیا مشکل شما رو Linked Tables حل نمیکنه ، چرا که این روش این محدودیت رو هم رفع میکنه
تعداد کاربر 255 نفر
محدودیت تعداد کاربر در داخل اکسس 255 عنوان میشه ( جدا از میزان واقعیت داشتن اون و سطح دستیابی به اون ) ، برنامه های شما چند کاربره هستند ؟ در بسیاری شرکتها تنها بخش اندکی از این قابلیت فرانیازی SQL Server مورد استفاده قرار میگیره ، در SQL محدودیتی در این خصوص وجود نداره ! و منوط به میزان حافظه سیستم شده ، ولی واقعیتها قابل لمس هستند ، تعداد کاربرهای سیستمهای شما با تقریب خوبی قابل تخمین بوده و غالباً در محدوده یک عدد Byte قرار میگیرن .
تعداد جداول شرکت داده شده در Query
در اکسس 32 جدول و در SQL 255 جدول !
شما تا حالا توی پیچیده ترین Query هاتون از چند جدول استفاده کردید ، به نظر شما این تفاضل شماتیک نیست و فاصله زیادی با کاربردهای واقعی نداره !
تعداد آبجکتهای قابل پذیرش
در اکسس 32768 و در SQL این مقدار 2147483647 آبجکت ! ( مقایسه نکنیم سنگین تریم ! )
اگه یه پروسیجر بنویسید که اقدام به ایجاد آبجکت به صورت رندوم کنه اونهم بدون هدف ، باید در هر ثانیه 24855 آبجکت ایجاد کنه تا کار پس از 24 ساعت تموم بشه !! واقعاً دیتا بیسی با این تعداد آبجکت وجود داره و یا اینکه جمع کل آبجکتهای تمام دیتابیسها از آدم تا خاتم , اینقدر میشه !!؟
و همین طور مابقی قیاسهایی که در خصوص مقایسه های عددی این دو جاریه
ولیکن در خصوص مباحث فنی ترشون :
بعضی مقایسه ها با توجه به اینکه اکسس Client Base هستش و SQL Server از نوع ، Client/Server Base مقایسه بی معنی میشه
مقایسه وقتی مصداق پیدا میکنه که هر دو دارای یک قابلیت باشن ، نه اینکه یکی از دو طرف داشته باشه و دیگری نه ! در این حالت این ابهام بوجود میاد که مقایسه بر سر چیه ؟
حیطه عملکردی SQL Server و مبانی کاربرد اون کاملاً با اکسس متفاوته و این دو در یک جایگاه قرار نمیگیرن و هر گونه مقایسه این دو ، بدون جانبداری ، منجر به برنده عنوان شدن هیچ یک از این دو نمیشه !
ولیکن در ادامه پرسشهایی مطرح میشه که شاید پاسخ به اونها مطلب رو روشنتر کنه :
1 – آیا محدودیتهای تئوریک Access برای سیستمی که شما طراحی میکنید ، مشکلی ایجاد کرده و به چه میزان ؟
2 – آیا نحوه طراحی شما ، مزید بر علت نبوده تا به ناحق خط بطلانی بر یک قابلیت اکسس کشیده بشه ( خیلیهامون دیدیم که طرف با وانت مسافر کشی میکنه و با پراید ناچ بک باربری !! ، اگه نیاز شد برای همین مورد هم توی اکسس مثال میزنم ! کم نیست ! )
یک مشکل وجود داره ، کسانی که با قابلیتهای ذاتی اکسس نتونن کار کنن و از این محیط یکپارچه نتونن به درستی و راحتی استفاده کنن ، با قطعیت 100 % در اتصال و استفاده ازServer SQL دچار مشکل میشن . ( در همونهای گامهای اولیه )
البته باید توجه داشته باشید که شما برای استفاده تئوریک از کلیه برتریهای SQL Server در داخل Access هم باید از Access Project استفاده کنید و نه خود Access Database ، که اونهم مشکلات فنی دیگه ای رو اضافه میکنه .
فقط در خصوص SMP support بودن SQL Server یه توضیح بدم ، چونکه این قابلیت به طور کامل در Access وجود نداره
SMP و یا همون symmetric multiprocessor در حالتی که چند CPU بر روی سیستم نصب باشه ، اجازه عملکرد موازی رو میده و در واقع سرعت پردازش رو بالا میبره ، گلوگاه اصلی بسیاری سیستمهای نرم افزاری CPU نیست تا حالا SMP بتونه تغییر زیادی رو در این خصوص بده ، گلوگاه شبکه ، همچنان پابرجاست . ( گو اینکه سیستمهای چند CPU به دلیل افزایش کارایی کلی سیستم میتونن منجر به افزایش سرعت نسبی تمامی نرم افزارها بشن ، ولیکن با نسبتهای متفاوت ، که به نظر میاد نیازی به توضیح بیشتری در این رابطه نباشه )
آیا Server شما از گونه Multiprocessor هستش ، اگر جواب خیره ، پس اولین قابلیت و برتری فنی Server SQL رو خط بزنید
در اکثر سیستمهای اطلاعاتی ، سیستم متکی به محدودیت توان پردازشی CPU نیست و در واقع حجم اطلاعات هستش که منجر به افت و خیز در این امر میشه . فی المثل در یک سیستم انبار داری , غالب گزارشات مبتنی بر چهار عمل اصلی بوده ( یعنی مبانی محاسبات و به دور از پییچدگی ) ولیکن نکته حائز اهمیت همون تعدد رکورد میتونه باشه .
در خصوص مابقی برتریهای فنی SQL Server تصور میکنم با توجه به جایگاه فعلی نیازی به بحث نباشه ، برخی قابلیتها اگه در اکسس وجود ندارن و یا به ظاهر و بر اساس اعداد ضعیفتر هستند ، به دو دلیله :
1 - روش حل مساله در اکسس به گونه ای دیگه هستش ( فراموش نکنید Access یک IDE هستش ) ، و در واقع دقیقاً اون قابلیت با توجه به نقصان موجود در SQL Server و یا IDE مربوطه ، به گونه ای متناسب با حال و هوای خود اونها طراحی شدن که حالا جالبه به عنوان نقطه قوت مطرح میشن !؟
2 – اون قابلیت برای اکسس موضوعیتی نداره ، حیطه عملکردی اون دو متفاوته و در دو مسیر جدا قرار دارن ( وگرنه اسم یکیش Access و اون یکی SQL نمیشد )
تصور غلطی ظاهراً حاکمه که شاید خیلیها SQL Server رو نسخه ارتقا یافته Access فرض میکنن و در واقع متصورن آپشن دیگه اونه و در صدد تلقین و مقایسه دو سیستم متفاوت هستند .
این دو قابل مقایسه نیستن و در واقع در دو پلت فرم و الگوی مجزا پیاده سازی میشن .
مایکروسافت در هیچ جایی این ادعا رو نداره که این دو زوجهایی مناسبی برای هم هستند ( SQL Server و اکسس )
قابلیت اتصال در راستای سازگاری بیشتر و به نوعی برای بازتر گذاشتن دست برنامه نویسان اکسس به اون اضافه شده
موفق باشید