دانش آموز
یک شنبه 06 مرداد 1392, 09:23 صبح
نگاشات اشیاء به جداول
بخش اول
چکیده
نگاشت اشیاء به جداول مشکلی است و از وقتی طراحان و توسعه دهندگان نرم افزار خواستند به زبانهای شی گرا برنامه بنویسند به وجود آمد، و بنا به دلایلی مجبورند از پایگاه داده های ارتباطی به جای پایگاه داده های شی گرا استفاده کنند.
مقدمه
شی گرایی و مدل ارتباطی دو نمونه متفاوت از برنامه نویسی هستند. هنگامی که نیاز به ذخیره سازی اشیاء در پایگاه داده های ارتباطی داریم باید یک پل ارتباطی میان نگرش های شی گرایی و ارتباطی برقرار کرد. اگر تنها مدل های انتزاعی از داده ها به یک پایگاه داده رابطه-ای نگاشت شود، مهندسی نرم افزار به طور قابل ملاحضه ای آسان می شود. گسترده ای از مفاهیم برنامه نویسی شی گرا لازم است تا به ساختار جداول ارتباطی نگاشت شود این مفاهیم عبارتند از:
تجمیع
ارث بری و چندریختی
ارتباط میان کلاس ها
نوع داده ها
هر کدام از مفاهیم ذکر شده ممکن است با استفاده از روش های مختلف برای کاربردهای یکسانی نگاشته شوند. ما در اینجا راه حل های مختلفی را با استفاده از یک الگوی جداگانه توصیف می کنیم. به این طریق به وضوح پیامد های استفاده از راه حل های مختلف را برروی اهداف عمومی ارائه شده در ادامه بررسی می نماییم.
اهداف عمومی
کارایی:
یکی از اهداف عمده که در هنگام نگاشت اشیاء به جداول که باید در نظر گرفت کارایی است. تعداد دسترسی به پایگاه داده در هنگام نگاشت اشیاء به جداول، باید در نظر گرفته شود. پایگاه داده باالجبار از دیسک سخت یا سایر رسانه های خارجی استفاده می کند تا اجرا شود. سرعت دسترسی این رسانه ها با واحد میلی ثانیه (10-3 Sec) اندازه گیری می شود، از طرفی دیگر چرخه پردازشگر در واحد نانو ثانیه (10-9 Sec) اندازه گیری می شود. از اینرو ایده خوبی است تا زمان کمتری در چرخه پردازشگر و حافظه RAM و دستگاه های ورودی و خروجی صرفه جویی شود.
خواندن در مقابل کارایی نوشتن و به روزرسانی: راهکارهایی که ما برای نگاشتهای متفاوت مسائل ارائه می دهیم ویژگیهای متفاوتی دارند که خواندن در مقابل کارایی نوشتن و به روزرسانی قرار می گیرد. تعدادی از نگاشتها به شما این امکان را می دهد تا تمام آنچه را نیاز دارید تنها در یک دسترسی به پایگاه داده بخوانید در حالیکه برای عمل نوشتن شی مشابهی در پایگاه داده ها باید چندین عمل صورت گیرد. به این سبب برای نگاشت ارث ابری و قبل از طراحی قطعی جداول از تعداد دفعات عملیات به روزرسانی و نوشتن و خواندن آگاهی حاصل فرمایید.
هزینه نگهداری و انعطاف پذیری: گاهی مواقع شما می خواهید از یک نگاشت اولیه در پایگاه داده استفاده کنید. در این موارد انعطاف پذیری از عملکرد آن مهمتر است. زیرا غالبا شما صفت هایی را حذف یا اضافه می کنید، کلاسهایی را اضافه یا پاک می کنید و ارث بری کلاسهایتان را از نو شکل می دهید. موقعی که ارث بری و کلاس ها حالت پایداری به دست آوردند آنگاه شما ممکن است بخواهید به نگاشت با عملکرد بهینه توجه نمایید.
افزونگی و کارایی در مقابل نرمال سازی و هزینه نگهداری: محاسبات ارتباطی به شما کمک می کنند تا افزونگی را با استفاده از نرمال سازی و فاکتورگیری از بین ببرید. از طرفی دیگر برنامه های پایگاه داده های ارتباطی بهترین کارایی را با کمترین تعداد دسترسی به پایگاه داده ارائه می دهند. فاکتور مهم برای یک رکورد مشخص، زمان جستجو است و پهنای باند برای یکبار خواندن داده از یک دیسک مهم نیست. اگر این برنامه ها قادر باشند تمام داده های مورد نیاز یک Use Case را در یکبار دسترسی به پایگاه داده به دست آورند عملکرد بهتری دارند.
دسترسی به پایگاه داده را میتوان به وسیله در نظر نگرفتن فاکتور گیری و نرمال سازی کاهش داد، کدام یک، پی-آمدی منفی بر روی نگهداری برنامه دارد.
توانایی نگهداری از یک مدل داده ای و کارایی دو هدف متضاد هستند. راه سخت تر این است که شما مدل داده ای خود را برای کارایی بهینه نمایید. هزینه نگهداری بالاتر، در صورت تغییرات برنامه روی خواهد داد. افزونگی، معمولاً با بکارگیری نرمال سازی از افزونگی جلوگیری می شود. مواظب نگهداری باشید.
به هدر دادن فضا در مقابل کارایی: : در اینجا نگاشت هایی است که هیچگونه فضای پایگاه داد ه ای اضافه ای را مصرف نمی کنند، (فیلدهایی با مقادیر NULL و مانند آن) و سایر نگاشت ها بخش های عظیمی از یک پا یگاه داده را بدون استفاده می گذارند. این امر باعث تعجب نیست زیرا برنامه هایی که بیشترین فضا را به کار میبرند معمولاً سریعترین کارایی را دارند.
پردازش Query: در اینجا دو روش متضاد وجود دارد که سیستم های اطلاعاتی تجاری مجبورند یکی از آنها را به کار گیرند.
داده، جهت کار با پردازش تراکنشها باید کارایی خوبی داشته باشد. این بر دوباره سازماندهی کردن داده ها جهت بهینه کردن کارایی دلالت دارد.
داده، برای اهداف ذخیره سازی باید آماده باشد. در این روش در شکلی باید نمایش داده شوند که برای پرس و جوهای خاص مناسب باشد.
ساختن یک منبع داده که نیاز به پردازش های سریع آنلاین را دارد جداگانه ساخته می شوند. اگر شما یک نگاشت برای اشیا با استفاده از جدول طراحی می کنید این روش را در نظر بگیرید، آیا برنامه یک مخزن داده است یا یک برنامه پردازش آنلاین؟
الگوهای نگاشت اشیاء به جدول
این الگوها بر طبق چهارچوب مسئله سازمان یافته است. در اینجا راه حل های متفاوتی جهت نگاشت تجمیع، وراثت و مشارکت وجود دارد.
http://www.karingroup.ir/uploads/Article/Object2Table/ObjectToTable.jpg
دانلود مثال (http://www.4shared.com/rar/eE0Q3O8v/MappingObject2Tables.html)
منبع (http://karingroup.ir/fa/Article/72-%D9%86%DA%AF%D8%A7%D8%B4%D8%A7%D8%AA-%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1-%D8%A8%D9%87-%D8%AC%D8%AF%D8%A7%D9%88%D9%84brsmalll%D8%A8%D8%AE %D8%B4-%D8%A7%D9%88%D9%84small)
بخش اول
چکیده
نگاشت اشیاء به جداول مشکلی است و از وقتی طراحان و توسعه دهندگان نرم افزار خواستند به زبانهای شی گرا برنامه بنویسند به وجود آمد، و بنا به دلایلی مجبورند از پایگاه داده های ارتباطی به جای پایگاه داده های شی گرا استفاده کنند.
مقدمه
شی گرایی و مدل ارتباطی دو نمونه متفاوت از برنامه نویسی هستند. هنگامی که نیاز به ذخیره سازی اشیاء در پایگاه داده های ارتباطی داریم باید یک پل ارتباطی میان نگرش های شی گرایی و ارتباطی برقرار کرد. اگر تنها مدل های انتزاعی از داده ها به یک پایگاه داده رابطه-ای نگاشت شود، مهندسی نرم افزار به طور قابل ملاحضه ای آسان می شود. گسترده ای از مفاهیم برنامه نویسی شی گرا لازم است تا به ساختار جداول ارتباطی نگاشت شود این مفاهیم عبارتند از:
تجمیع
ارث بری و چندریختی
ارتباط میان کلاس ها
نوع داده ها
هر کدام از مفاهیم ذکر شده ممکن است با استفاده از روش های مختلف برای کاربردهای یکسانی نگاشته شوند. ما در اینجا راه حل های مختلفی را با استفاده از یک الگوی جداگانه توصیف می کنیم. به این طریق به وضوح پیامد های استفاده از راه حل های مختلف را برروی اهداف عمومی ارائه شده در ادامه بررسی می نماییم.
اهداف عمومی
کارایی:
یکی از اهداف عمده که در هنگام نگاشت اشیاء به جداول که باید در نظر گرفت کارایی است. تعداد دسترسی به پایگاه داده در هنگام نگاشت اشیاء به جداول، باید در نظر گرفته شود. پایگاه داده باالجبار از دیسک سخت یا سایر رسانه های خارجی استفاده می کند تا اجرا شود. سرعت دسترسی این رسانه ها با واحد میلی ثانیه (10-3 Sec) اندازه گیری می شود، از طرفی دیگر چرخه پردازشگر در واحد نانو ثانیه (10-9 Sec) اندازه گیری می شود. از اینرو ایده خوبی است تا زمان کمتری در چرخه پردازشگر و حافظه RAM و دستگاه های ورودی و خروجی صرفه جویی شود.
خواندن در مقابل کارایی نوشتن و به روزرسانی: راهکارهایی که ما برای نگاشتهای متفاوت مسائل ارائه می دهیم ویژگیهای متفاوتی دارند که خواندن در مقابل کارایی نوشتن و به روزرسانی قرار می گیرد. تعدادی از نگاشتها به شما این امکان را می دهد تا تمام آنچه را نیاز دارید تنها در یک دسترسی به پایگاه داده بخوانید در حالیکه برای عمل نوشتن شی مشابهی در پایگاه داده ها باید چندین عمل صورت گیرد. به این سبب برای نگاشت ارث ابری و قبل از طراحی قطعی جداول از تعداد دفعات عملیات به روزرسانی و نوشتن و خواندن آگاهی حاصل فرمایید.
هزینه نگهداری و انعطاف پذیری: گاهی مواقع شما می خواهید از یک نگاشت اولیه در پایگاه داده استفاده کنید. در این موارد انعطاف پذیری از عملکرد آن مهمتر است. زیرا غالبا شما صفت هایی را حذف یا اضافه می کنید، کلاسهایی را اضافه یا پاک می کنید و ارث بری کلاسهایتان را از نو شکل می دهید. موقعی که ارث بری و کلاس ها حالت پایداری به دست آوردند آنگاه شما ممکن است بخواهید به نگاشت با عملکرد بهینه توجه نمایید.
افزونگی و کارایی در مقابل نرمال سازی و هزینه نگهداری: محاسبات ارتباطی به شما کمک می کنند تا افزونگی را با استفاده از نرمال سازی و فاکتورگیری از بین ببرید. از طرفی دیگر برنامه های پایگاه داده های ارتباطی بهترین کارایی را با کمترین تعداد دسترسی به پایگاه داده ارائه می دهند. فاکتور مهم برای یک رکورد مشخص، زمان جستجو است و پهنای باند برای یکبار خواندن داده از یک دیسک مهم نیست. اگر این برنامه ها قادر باشند تمام داده های مورد نیاز یک Use Case را در یکبار دسترسی به پایگاه داده به دست آورند عملکرد بهتری دارند.
دسترسی به پایگاه داده را میتوان به وسیله در نظر نگرفتن فاکتور گیری و نرمال سازی کاهش داد، کدام یک، پی-آمدی منفی بر روی نگهداری برنامه دارد.
توانایی نگهداری از یک مدل داده ای و کارایی دو هدف متضاد هستند. راه سخت تر این است که شما مدل داده ای خود را برای کارایی بهینه نمایید. هزینه نگهداری بالاتر، در صورت تغییرات برنامه روی خواهد داد. افزونگی، معمولاً با بکارگیری نرمال سازی از افزونگی جلوگیری می شود. مواظب نگهداری باشید.
به هدر دادن فضا در مقابل کارایی: : در اینجا نگاشت هایی است که هیچگونه فضای پایگاه داد ه ای اضافه ای را مصرف نمی کنند، (فیلدهایی با مقادیر NULL و مانند آن) و سایر نگاشت ها بخش های عظیمی از یک پا یگاه داده را بدون استفاده می گذارند. این امر باعث تعجب نیست زیرا برنامه هایی که بیشترین فضا را به کار میبرند معمولاً سریعترین کارایی را دارند.
پردازش Query: در اینجا دو روش متضاد وجود دارد که سیستم های اطلاعاتی تجاری مجبورند یکی از آنها را به کار گیرند.
داده، جهت کار با پردازش تراکنشها باید کارایی خوبی داشته باشد. این بر دوباره سازماندهی کردن داده ها جهت بهینه کردن کارایی دلالت دارد.
داده، برای اهداف ذخیره سازی باید آماده باشد. در این روش در شکلی باید نمایش داده شوند که برای پرس و جوهای خاص مناسب باشد.
ساختن یک منبع داده که نیاز به پردازش های سریع آنلاین را دارد جداگانه ساخته می شوند. اگر شما یک نگاشت برای اشیا با استفاده از جدول طراحی می کنید این روش را در نظر بگیرید، آیا برنامه یک مخزن داده است یا یک برنامه پردازش آنلاین؟
الگوهای نگاشت اشیاء به جدول
این الگوها بر طبق چهارچوب مسئله سازمان یافته است. در اینجا راه حل های متفاوتی جهت نگاشت تجمیع، وراثت و مشارکت وجود دارد.
http://www.karingroup.ir/uploads/Article/Object2Table/ObjectToTable.jpg
دانلود مثال (http://www.4shared.com/rar/eE0Q3O8v/MappingObject2Tables.html)
منبع (http://karingroup.ir/fa/Article/72-%D9%86%DA%AF%D8%A7%D8%B4%D8%A7%D8%AA-%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1-%D8%A8%D9%87-%D8%AC%D8%AF%D8%A7%D9%88%D9%84brsmalll%D8%A8%D8%AE %D8%B4-%D8%A7%D9%88%D9%84small)