در پایگاههای داده شی گرا (OODB)، کاربران میتوانند عملیاتی را روی یک پایگاه داده خاص تنظیم کنند، که از اشیایی تشکیل شده است که میتوانند انواع مختلفی داشته باشند و عملیات برای آنها تنظیم شده است. آنها می توانند به طور موثر اطلاعات باینری مانند اشیاء چند رسانه ای را مدیریت کنند. یکی دیگر از مزایای اضافه شده OODB این است که می توان آن را با تفاوت های رویه ای جزئی بدون تأثیر بر کل سیستم برنامه ریزی کرد.
پیش نیازهای ایجاد استاندارد
تاریخ پایگاه داده های OODB شی گرا در پایان قرن گذشته آغاز می شود. آنها برای رفع نیازهای برنامه های کاربردی جدید ایجاد شده اند. فرض بر این بود که پایگاه های داده شی گرا انقلابی در سیستم های نرم افزاری در طول دهه 1990 ایجاد می کنند. اکنون مشخص است که اینطور نیست. با این حال، احیای این مفهوم از طریق جوامع نرم افزار آزاد و شناسایی برنامه های کاربردی مناسب برای آن، انگیزه بررسی ویژگی ها را فراهم می کند. OODB، که جایگزینی برای پایگاه داده های رابطه ای همه جا حاضر است.
شی گرا انعطاف پذیری را برای رسیدگی به برخی یا همه نیازها فراهم می کند و به انواع داده ها و زبان های پرس و جو پایگاه های داده سنتی محدود نمی شود. یکی از ویژگی های کلیدی OODB ها توانایی آن ها در اختیار توسعه دهنده است که به او اجازه می دهد ساختار اشیاء پیچیده و عملیات برنامه را مشخص کند. یکی دیگر از دلایل ایجاد OODB ها، استفاده روزافزون از زبان ها برای توسعه نرم افزار است.
پایگاههای اطلاعاتی پایه و اساس بسیاری از سیستمهای اطلاعاتی شدهاند، اما استفاده از پایگاههای داده سنتی زمانی که برنامههایی که به آنها دسترسی دارند در C++، Smalltalk یا جاوا نوشته شده باشند، دشوار است. به عنوان مثال، پایگاه داده های شی گرا 1C به گونه ای طراحی شده اند که می توانند به طور مستقیم با برنامه های کاربردی با استفاده از زبان های شی گرا با استفاده از مفاهیم آنها ادغام شوند: Visual Studio. Net، C ++، C ، Microsoft SQL Server و دیگران.
مزیت اصلی OODB حذف کامل نیاز به RMs1 (امپدانس) با بهبود عملکرد بعدی است.
عیوب:
- مکانیسم های مشاوره بسیار ابتدایی، بدون پلت فرم پذیرفته شده خود استاندارد.
- نمی توان رویه ها را ذخیره کرد زیرا اشیا فقط در کلاینت قابل دسترسی هستند.
- نابالغی در بازار.
- بدون گروه بندی فیزیکی اشیا.
پارادایم شی
پایگاه های داده شی گرا پایگاه های داده قابل برنامه ریزی هستند که داده های پیچیده و روابط آن را مستقیماً بدون اختصاص ردیف و ستون ذخیره می کنند و آنها را برای برنامه هایی که با دسته های بزرگ کار می کنند مناسب تر می کند. اشیاء دارای روابط چند به چند هستند و از طریق استفاده از اشاره گرهایی که برای ایجاد روابط با آنها مرتبط است قابل دسترسی هستند. مانند هر قابل برنامه ریزی، OODB یک محیط توسعه برنامه و یک مخزن دائمی آماده برای بهره برداری را فراهم می کند. این اطلاعات را ذخیره می کند و دستکاری می کند که می تواند به شکل اشیا دیجیتالی شود، دسترسی سریع را فراهم می کند و قابلیت های پردازش عالی را ارائه می دهد.
مفاهیم اساسی مورد استفاده در پایگاه داده شی گرا:
- هویت شی;
- نوع سازنده؛
- سازگاری زبان؛
- نوع سلسله مراتب و وراثت؛
- پردازش اشیاء پیچیده؛
- چند ریختی و اضافه بار عملگر؛
- ایجاد نسخه.
برای در نظر گرفتن کامل تمام جنبه هایی که یک پایگاه داده شی گرا را مشخص می کند، مهم است که به همه پارادایم های مهم شی توجه کنید:
- Encapsulation خاصیتی است که به شما امکان می دهد اطلاعات دیگر اشیاء را مخفی کنید و در نتیجه از دسترسی یا تضاد نادرست جلوگیری کنید.
- وراثت خاصیتی است که توسط آن اشیا رفتار را در سلسله مراتب کلاس به ارث می برند.
- Polymorphism یک ویژگی یک عملیات است که با آن می توان آن را اعمال کردانواع مختلف اشیاء.
- واسط یا امضای یک عملیات شامل نام و انواع دادههای آرگومانها یا پارامترهای آن است.
- پیاده سازی یا روش یک عملیات به طور جداگانه مشخص شده است و می تواند بدون تأثیر بر رابط تغییر کند. برنامه های کاربردی کاربر می توانند با فراخوانی عملیات مشخص شده از طریق نام ها و آرگومان های خود، بدون توجه به نحوه پیاده سازی آنها، با داده ها کار کنند.
کلاس ها و عملکرد
هنگام در نظر گرفتن مفهوم کلاس ها در OODB، لازم است بین اصطلاحات "کلاس" و "نوع" تمایز قائل شد. یک نوع برای توصیف مجموعه ای از اشیاء با رفتار مشابه استفاده می شود. از این نظر، بستگی به این دارد که چه عملیاتی را می توان روی شیء فراخوانی کرد. یک کلاس مجموعه ای از اشیاء است که ساختار داخلی یکسانی دارند، بنابراین یک پیاده سازی را تعریف می کند، در حالی که یک نوع نحوه استفاده از آن را توضیح می دهد.
اصطلاح instantiation به این واقعیت اشاره دارد که نمونه سازی یک کلاس می تواند برای تولید مجموعه ای از اشیاء استفاده شود که ساختار و رفتاری مشابه با مجموعه کلاس دارند.
یک ویژگی که برای تکامل اشیا بسیار مهم است این است که می تواند کلاس خود را از جمله ویژگی ها و عملیات ها را تغییر دهد و در عین حال هویت خود را حفظ کند. این به مکانیزمی نیاز دارد تا یکپارچگی معنایی حاصل را مدیریت کند.
به ارث بردن پایگاه داده شی گرا سازمان اجازه می دهد تا یک کلاس به عنوان زیر کلاس یک سوپرکلاس موجود تعریف شود. تمام صفات و متدها را از دومی به ارث می برد و ممکن است به صورت اختیاری تعریف کندخود را این مفهوم مکانیسم مهمی برای حمایت از استفاده مجدد است. بخشهای مشابه ساختار دو کلاس مختلف را میتوان تنها یک بار در یک سوپرکلاس مشترک تعریف کرد، بنابراین کد کمتری نوشته میشود. برخی از سیستم ها وجود دارند که به یک کلاس اجازه می دهند تا زیر کلاسی از بیش از یک سوپرکلاس باشد. این ویژگی در مقابل وراثت منفرد، وراثت چندگانه نامیده میشود.
نمونه ای از پایگاه داده شی گرا
اغلب استفاده از یک نام برای روشهای مختلف اما مشابه سوپرکلاس رسانه از کلاسهای تصویر و ویدیو مفید است. بسیاری از فایل ها توسط بینندگان مختلف قابل مشاهده هستند. آنها اغلب نیاز به مشاهده تمام عکس ها و فیلم ها با استفاده از روش "نمایش" دارند و برنامه مناسب باید راه اندازی شود. هنگامی که عملکرد فراخوانی می شود و پیوندی به ویدیو ارسال می شود، پخش کننده رسانه راه اندازی می شود. برای پیاده سازی این ویژگی، ابتدا لازم است عملیات «ارائه» در سوپرکلاس رسانه های رایج از کلاس های تصویر و ویدیو تعریف شود. هر یک از زیر کلاس ها عملیات جستجو را برای نیازهای خاص خود دوباره تعریف می کنند. این منجر به روش های مختلفی می شود که نام عملیات مشابهی دارند. در این صورت استفاده از این تابع مزیت مهمی دارد.
ساختار OODB
پارادایم شی گرا بر اساس کپسوله کردن داده ها و کدهای مربوط به هر شی در یک ماژول است. از نظر مفهومی، تمام تعاملات بین آن و بقیه سیستم با استفاده از پیام ها انجام می شود. از این رو رابطبین آنها توسط مجموعه مجاز تعیین می شود.
به طور کلی، هر شی با مجموعه ای مرتبط است:
- متغیرهایی که حاوی داده های شی هستند و با ویژگی های مدل ER مطابقت دارند.
- پیام هایی که او به آنها پاسخ می دهد. هر کدام ممکن است یک یا چند پارامتر داشته باشند یا نداشته باشند.
- روشها، که هر کدام کدی هستند که پیامها را پیادهسازی میکنند و در پاسخ به آن مقداری را برمیگردانند.
پیام در یک محیط OO به معنای استفاده از SMS فیزیکی در شبکه های کامپیوتری نیست. برعکس، به تبادل درخواستها بین اشیا، بدون توجه به جزئیات صحیح اجرای آنها اشاره دارد. گاهی اوقات یک عبارت متدی را فراخوانی میکند تا پیامی به یک شیء ارسال شده باشد و از اجرای متد مربوطه استفاده میکند.
هویت شی
سیستم پایگاه داده شی گرا یک شناسایی منحصر به فرد برای هر شی مستقل ذخیره شده در پایگاه داده فراهم می کند. معمولاً با استفاده از یک شناسه شی منحصر به فرد یا OID تولید شده از سیستم پیاده سازی می شود. مقدار OID برای کاربر خارجی نامرئی است، اما سیستم از آن به صورت داخلی برای مدیریت پیوندهای بین اشیا استفاده می کند.
ویژگی اصلی OID تغییرناپذیر بودن است. مقدار OID برای یک شی خاص هرگز نباید تغییر کند. این امر هویت دنیای واقعی را حفظ می کند. همچنین ترجیح داده می شود که هر OID فقط یک بار استفاده شود، حتی اگر از پایگاه داده حذف شود، OID آن به دیگری اختصاص داده نشود. همچنین اغلب نامناسب تلقی می شود که آن را بر اساس فیزیکی قرار دهیمآدرس شی در ذخیره سازی، زیرا سازماندهی مجدد آنها در پایگاه داده می تواند OID را تغییر دهد. با این حال، برخی از سیستم ها از آدرس فیزیکی به عنوان OID برای افزایش کارایی بازیابی اشیا استفاده می کنند. یک چارچوب شی گرا به طور خودکار محدودیت های رابطه ای را اعمال می کند که معمولاً کاربرد بیشتری دارند: دامنه، کلید، یکپارچگی شی و یکپارچگی ارجاعی.
سه سازنده اصلی
در OODB، مقادیر یا حالتهای اشیاء پیچیده را میتوان با استفاده از سازندههای نوع خاصی از دیگران ایجاد کرد. یک راه برای نشان دادن آنها این است که هر کدام را به عنوان یک سه گانه (i, c, v) در نظر بگیریم، جایی که i شناسه منحصر به فرد شی (OID) است، c سازنده است، یعنی یک اشاره گر به اینکه مقدار شی چقدر است. ایجاد شده و v مقدار یا حالت شی است. بسته به مدل داده و سیستم OO ممکن است سازنده های متعددی وجود داشته باشد.
سه سازنده پایگاه داده اصلی شی گرا:
- اتم;
- Tuples;
- ست.
دیگر کاربردهای رایج تر، فهرست ها و نمودارها هستند. دامنه D نیز وجود دارد که شامل تمام مقادیر اتمی اساسی است که مستقیماً در سیستم موجود است. آنها معمولاً شامل اعداد صحیح، اعداد واقعی، رشته های کاراکتر، تاریخ و هر نوع داده دیگری هستند که سیستم مستقیماً آنها را مدیریت می کند. هم ساختار اشیا و هم عملیات در تعاریف کلاس گنجانده شده است.
سازگاری با زبان های برنامه نویسی
مفاهیم اصلی پایگاه های داده شی گرا در استفاده می شودبه عنوان ابزار طراحی و کدگذاری شده برای کار با پایگاه داده.
چندین زبان ممکن وجود دارد که این مفاهیم را می توان در آنها ادغام کرد:
- گسترش زبانی برای پردازش داده مانند SQL با افزودن انواع پیچیده و OOP. سیستمها پسوندهای شیگرا را برای سیستمهای رابطهای ارائه میکنند که به آنها سیستمهای رابطهای شیگرا میگویند.
- استفاده از یک زبان برنامه نویسی شی گرا موجود و گسترش آن برای کار با پایگاه های داده. آنها زبان های برنامه نویسی پایدار نامیده می شوند و به توسعه دهندگان اجازه می دهند بدون نیاز به استفاده از زبان پردازش داده مانند SQL مستقیماً با داده ها کار کنند. آنها پایدار نامیده می شوند زیرا داده ها پس از پایان برنامه ای که آن را ایجاد کرده به وجود خود ادامه می دهند.
هنگامی که تصمیم می گیرید از کدام گزینه استفاده کنید، به خاطر داشته باشید که زبان های پایدار معمولا قدرتمند هستند و اشتباهات برنامه نویسی که به پایگاه داده آسیب می زند نسبتا آسان است. پیچیدگی زبانها، بهینهسازی خودکار سطح بالا، مانند کاهش ورودی/خروجی دیسک را دشوار میکند. در بسیاری از برنامهها، توانایی ایجاد پرسوجوهای اعلامی مهم است، اما زبانهای دائمی در حال حاضر اجازه چنین پرسوجوهایی را بدون مشکل نمیدهند.
سلسله مراتب انواع وراثت
طرحواره های پایگاه داده شی گرا معمولاً به تعداد زیادی کلاس نیاز دارند. با این حال، چندین کلاس شبیه به یکدیگر هستند.آنها را به سلسله مراتبی از تخصص ها تبدیل می کنند. این مفهوم مشابه مدل های ER است. تخصصهای کلاس، زیر کلاسها نامیده میشوند که ویژگیها و روشهای اضافی را برای یک کلاس موجود تعریف میکنند. اشیاء ایجاد شده با زیر کلاس ها همه چیز را از والد به ارث می برند. برخی از این ویژگی های ارثی ممکن است خود از افراد بالاتر در سلسله مراتب وام گرفته شده باشند.
اشیاء پیچیده در نظر گرفته می شوند زیرا به فضای ذخیره سازی زیادی نیاز دارند و بخشی از انواع داده های استانداردی نیستند که معمولاً مدیریت پایگاه داده شی گرا (OODBS) ارائه می دهد. از آنجایی که اندازه اشیا قابل توجه است، SOOBMS ممکن است بخشی از یک شی را دریافت کند و قبل از دستیابی به کل شی، آن را در اختیار یک برنامه کاربردی قرار دهد. همچنین میتواند از روشهای بافر و حافظه پنهان برای دریافت قسمتهایی از یک شی قبل از زمان، قبل از اینکه برنامه بتواند به آنها دسترسی پیدا کند، استفاده کند.
OODB به کاربران اجازه می دهد تا انواع جدیدی ایجاد کنند که هم ساختار و هم عملیات را شامل می شود، در این مورد سیستم نوع توسعه پذیر. شما می توانید کتابخانه هایی از انواع جدید با تعریف ساختار و عملیات آنها ایجاد کنید. بسیاری از آنها می توانند یک شی ساختاریافته بزرگ را در قالب رشته ها و کاراکترها یا بیت ها ذخیره و دریافت کنند که "همانطور که هست" برای تفسیر به برنامه کاربردی ارسال می شود.
این روش می تواند مستقیماً به ویژگی های شی هدف با نام دسترسی داشته باشد، از جمله هر کدام از کلاس های والد به ارث رسیده است، اما باید به ویژگی های اشیاء دیگر با سیگنال های ثانویه دسترسی داشته باشد. این مفهوم به شما امکان می دهد نام یا نماد یک اپراتور را با آن مرتبط کنیددو یا چند پیاده سازی متفاوت از آن، بسته به نوع اشیایی که روی آنها اعمال می شود.
ساخت اپلیکیشن
بسیاری از برنامه های کاربردی پایگاه داده با استفاده از سیستم های OO به چندین نسخه از یک شی نیاز دارند. به طور معمول، فعالیتهای تعمیر و نگهداری با تغییر نیازمندیهای یک سیستم نرمافزاری اعمال میشوند و شامل تغییر برخی از ماژولهای توسعه و پیادهسازی میشوند. اگر سیستم از قبل در حال اجرا است و اگر یک یا چند ماژول نیاز به تغییر داشته باشد، توسعه دهنده باید با ایجاد تغییرات، نسخه جدیدی از هر یک از آنها ایجاد کند.
توجه داشته باشید که ممکن است بیش از دو نسخه از یک شی وجود داشته باشد، در صورتی که علاوه بر ماژول اصلی، دو نسخه لازم باشد. نسخه های شخصی همان ماژول نرم افزار را می توان همزمان به روز کرد. این طراحی پایگاه داده شی گرا موازی نامیده می شود. با این حال، همیشه یک نقطه وجود دارد که باید آنها را ادغام کرد تا OODB ترکیبی تغییرات ایجاد شده را بهگونهای ترکیب کند که سازگار باشند.
شرایط شی گرا
همه سیستم های کامپیوتری باید ویژگی های معماری خود را داشته باشند تا در نظر گرفته شوند. به عنوان مثال، یک سیستم باید جداول داشته باشد تا رابطه ای در نظر گرفته شود. OODB نیز از این قاعده مستثنی نیست و حاوی برخی از ویژگی های اساسی معماری شی است. با این حال، در دنیای واقعی، بسیاری از این ویژگیها مورد بحث قرار میگیرند و برخی مانند وراثت چندگانه، بهجای بهبود مدل پایگاه داده شیگرا در نظر گرفته میشوند.به عنوان بخشی از خط پایه به عنوان مثال، در زبان شی گرا Smalltalk، وراثت چندگانه پشتیبانی نمی شود، حتی اگر بخشی از معماری شی در نظر گرفته شود.
روشها برای یک کلاس مجموعهای از عملیات را تعریف میکنند که میتوان روی یک شی انجام داد. به عنوان مثال، هنگامی که بر روی یک شی اعمال می شود، یا مقداری را برمی گرداند یا عملیاتی را برای به روز رسانی مقادیر انجام می دهد. گاهی اوقات روش ها آن را بر نمی گرداند. اگر این روش برای بهروزرسانی تعداد مسافران یک وسیله نقلیه طراحی شده باشد، هیچ مقداری برگردانده نمیشود، اما عنصر داده در هدف آن را تغییر میدهد.
اشیاء یک مفهوم اساسی در OODB هستند. اساساً اشیاء نمایشی انتزاعی از چیزهای دنیای واقعی هستند که در آن ذخیره شده اند. یک شی نمونه ای از یک کلاس است به این معنا که از تعریف آن حذف شده است.
می توانید یک شی را به عنوان یک بسته مستقل در نظر بگیرید که دارای سه بخش است:
- دارای اطلاعات شخصی، مقادیر دادهها.
- روش های خصوصی که مقادیر را از طریق تعریف کلاس دستکاری می کند.
- اینترفیس را باز کنید تا این شی بتواند با دیگران ارتباط برقرار کند.
نمونه OODB
استفاده از OODB مفهوم سازی را ساده می کند زیرا نمایش اطلاعاتی که باید ذخیره شوند طبیعی تر است. برای مدل سازی ساختار یا منطق یک پایگاه داده، استفاده از نمودارهای کلاس به شما امکان می دهد کلاس ها را با روابط ساختاری و وراثت آنها معرفی کنید. به منظور مدل سازی بخشی از دینامیک، تعامل ورفتار بین اشیاء، یک نمودار توالی برای نشان دادن تعامل بین اشیاء واقع در یک رابطه موقت، توصیف حالت های ممکن استفاده می شود تا بتوان آنها را با توجه به حالت تغییر یافته پس از وقوع رویداد پیدا کرد.
نمونه ای از یک پایگاه داده شی گرا در زیر نشان داده شده است.
آنها یک نام و یک عمر دارند که می تواند موقت یا دائمی باشد. کلید OODB قابلیتی است که در اختیار توسعهدهنده قرار میدهد تا مشخص کند که چه تعداد ساختار و عملیات برای آنها اعمال خواهد شد. انعطاف پذیری و پشتیبانی برای مدیریت انواع داده های پیچیده وجود دارد. شما می توانید کلاس ها و زیر کلاس ها ایجاد کنید، به عنوان مثال، پایگاه مشتری می تواند یک زیر کلاس از پیوند این مشتری داشته باشد، و تمام ویژگی ها و ویژگی های کلاس اصلی را به ارث می برد، این رویکرد به شما اجازه می دهد تا داده های پیچیده را سریع و انعطاف پذیر پردازش کنید.