nabeel
دوشنبه 19 بهمن 1388, 00:16 صبح
سلام
مسیر رو به صورت معکوس بریم تا ببنیم توی سرمنشاً این گفتگو چه چیزی حاصل میشه
با اشاره به یه داستان و خلاصه وار شروع میکنم :
مردی وارد سرزمین موعود شد ، در اون سرزمین رسم بود که هر کسی در حد توانی که میتونست راه بره و منطقه ای رو با چوب علامت گذاری کنه ، اون منطقه به اون فرد داده میشد ، البته زمان تنها از طلوع تا غروب آفتاب بود !
مرد داستان ما شروع کرد به حرکت و هر جای خوش آب و هوایی رو که میدید طمع به سراغش میومد و به اون سمت میرفت و با فرو کردن یک چوب ، اون رو جزو قلمرو خودش فرض میکرد ! ولیکن در آخر , وقتی که به نقطه اول رسید ( نقطه بستن محدوده ) ، از شدت خستگی مرد ، در حالی که هیچ چیزی نصیبش نشده بود !
سهم اون فرد از اون همه زمین تنها یک متر شد !
ولیکن ارتباط این داستان به ظاهر بی ربط با موضوع این تاپیک !؟
کم نیستن کاربرانی که با این شاخه به اون شاخه پریدن , هم زمان رو از دست میدن و هم از اینجا رونده و از اونجا مونده میشن
سعی بشه , در انتخاب یک مسیر و یا یک رویه از این شاخه به اون شاخه پریدن به حداقل ممکن تقلیل پیدا کنه . و هدف با توجه به سطح عملیات در نظر گرفته بشه .
...........................
موضوع تقابل بین 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 و اکسس )
قابلیت اتصال در راستای سازگاری بیشتر و به نوعی برای بازتر گذاشتن دست برنامه نویسان اکسس به اون اضافه شده
موفق باشید
مسیر رو به صورت معکوس بریم تا ببنیم توی سرمنشاً این گفتگو چه چیزی حاصل میشه
با اشاره به یه داستان و خلاصه وار شروع میکنم :
مردی وارد سرزمین موعود شد ، در اون سرزمین رسم بود که هر کسی در حد توانی که میتونست راه بره و منطقه ای رو با چوب علامت گذاری کنه ، اون منطقه به اون فرد داده میشد ، البته زمان تنها از طلوع تا غروب آفتاب بود !
مرد داستان ما شروع کرد به حرکت و هر جای خوش آب و هوایی رو که میدید طمع به سراغش میومد و به اون سمت میرفت و با فرو کردن یک چوب ، اون رو جزو قلمرو خودش فرض میکرد ! ولیکن در آخر , وقتی که به نقطه اول رسید ( نقطه بستن محدوده ) ، از شدت خستگی مرد ، در حالی که هیچ چیزی نصیبش نشده بود !
سهم اون فرد از اون همه زمین تنها یک متر شد !
ولیکن ارتباط این داستان به ظاهر بی ربط با موضوع این تاپیک !؟
کم نیستن کاربرانی که با این شاخه به اون شاخه پریدن , هم زمان رو از دست میدن و هم از اینجا رونده و از اونجا مونده میشن
سعی بشه , در انتخاب یک مسیر و یا یک رویه از این شاخه به اون شاخه پریدن به حداقل ممکن تقلیل پیدا کنه . و هدف با توجه به سطح عملیات در نظر گرفته بشه .
...........................
موضوع تقابل بین 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 و اکسس )
قابلیت اتصال در راستای سازگاری بیشتر و به نوعی برای بازتر گذاشتن دست برنامه نویسان اکسس به اون اضافه شده
موفق باشید