موضوعات وبسایت : برنامه نویسی
سوالات امتحان آیین نامه رانندگی

انواع بانک اطلاعاتی

نویسنده : رضا قربانی | زمان انتشار : 03 فروردین 1401 ساعت 16:10

جهت انجام پروژه های دانشجویی و یا تمرین‌های برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید

@AlirezaSepand



تعریف بانک اطلاعاتی:
مجموعه ای است از داده های ذخیره شده به صورت مجتمع و مبتنی بر یک ساختار تعریف شده به طور صوری، با حداقل افزونگی، تحت کنترل متمرکز، مورد استفاده یک یا چند کاربر،به طور اشتراکی و همزمان.

سوالات امتحان آیین نامه رانندگی

پایگاه  های داده به سه نوع اصلی تقسیم می‌شوند :

۱- پایگاه داده ی سلسله مراتبی

۲- پایگاه داده ی شبکه ای

۳-  پایگاه داده ی رابطه ای

پایگاه داده ی سلسله مراتبی

در پایگاه داده سسله مراتبی رتبه بندی و مرتب کردن اطلاعات از طریق اولویت بندی است. شاید بهترین مثال برای درک وتصور این مطلب و این گروه از ارتباطات ، یک درخت است ، در این درخت یک جدول تکی به صورت ریشه  (root) پایگاه داده عمل میکند و دیگر جداول پایگاه داده از آن به صورت شاخه شاخه منشعب میشوند.

 به عبارت دیگر در این مدل اطلاعات در درختی دسته بندی میشود که سلسله مراتبی از قطعات والد و فرزند(مولود) را داراست. این ساختار یک رکورد با قابلیت تکرار اطلاعات (بطور کلی در قطعه اطلاعات فرزند/مولود)ایجاد میکند.اطلاعات در یک سری از رکوردها قرار دارد .مقدار این رکوردها تنظیم شده و به آن وابسته است که بخصوص تمام موارد رکورد های ضمیمه را در نوعی از رکورد جمع آوری میکند.این نوع رکورد معادل جدولهای مدل رابطه ای است و با رکوردهای تکی ردیف های مساوی میسازد.
برای ایجاد پیوند و ارتباط میان انواع رکوردها پایگاه داده مدل سلسله مراتبی از روابط والد / فرزند(مولود)بهره میبرد و این عمل همانند مدل پایگاه داده رابطه ای که در آن از یک تئوری ریاضی استفاده شده است با استفاده از درخت انجام می‌شود.

پایگاه داده مدل سلسله مراتبی دارای یک سری معایب جدی است. اول اینکه شما نمیتوانید یک رکورد به جدول فرزند اضافه کنید تا زمانی که  با جدول والد یکی بشود.و این مسئله میتواند مشکل ساز باشد اگر برای مثال شما بخواهید یک دانشجو را که هنوز ثبت نام نکرده رااضافه کنید. از آن طرف  پایگاه داده سلسله مراتبی در داخل پایگاه داده اطلاعات راکد و تکراری ایجاد میکند.تصور کنید  یک سیستم پایگاه داده در سطوح بسیار بالا مسیرهای چند گانه ای را شامل شود، در این حالت در آن جا ممکن است اطلاعات حشو ایجاد شده باشدچراکه دانشجویان باید در چند رشته یا واحد ثبت نام کنند. در نتیجه هر درخت رشته بایداطلاعات زائد دانشجویان را داشته باشد.اطلاعات حشو به این دلیل ایجاد میشوند که پایگاه داده مدل سلسله مراتبی رابطی برای ارتباط یک به چند است ولی برای ارتباط چند به چند اینگونه نیست ، زیرا فرزندان/مولودها باید همواره یک والد داشته باشند.در هر صورت در حالات مختلف شما میخواهید یک فرزند/مولود بتواند بابیش از یک والد ارتبط داشته باشد.برای نمونه ارتباط دانشجو و کلاس یک ارتباط چند به چند است ، نه تنها یک دانشجو میتواند مبحث زیادی را برگزیند بلکه  یک مبحث میتواند بوسیله دانشجویان زیادی برگزیده شود.
اگرچه می شد در پایگاه داده های چندگانه با ایجاد لینک های منطقی بین والد و مولود این مشکل را حل کرداما تثبیت آن مشکل است.

پایگاه داده ی شبکه ای

پایگاه داده مدل شبکه ای برای رفع مشکلات بسیار جدی مدل سلسله مراتبی به راه ها و روشهای مختلفی طراحی شد.بخصوص که مدل شبکه ای مشکلات داده های حشو و زائد را نسبت به مدل سلسله مراتبی حل نمود.
سرچشمه این مدل در کنفرانس سیستم های زبانهای اطلاعات بود که توسط گروه  data base task group مورد بررسی و طراحی قرار گرفت و برای جایگزینی مدل سلسله مراتبی ساخته شد.
پایگاه داده مدل شبکه ای بسیار شبیه مدل سلسله مراتبی است در واقع می‌توان مدل سلسله مراتبی را زیر مجموعه مدل شبکه ای به حساب آورد ، اما  به هر حال مدل شبکه ای به جای استفاده از والد تکی درخت سلسله مراتبی ، از یک تئوری دیگر استفاده میکند . در این روش یک درخت مانند مدل سلسله مراتبی ایجاد میکند با این تفاوت که جدولهای مولود میتوانند بیش از یک والد داشته باشند. این خصوصیت مدل شبکه ای را قادر به پشتیبانی از ارتباطات چند به چند میکند.
یک پایگاه داده مدل شبکه ای در نگاه اول شبیه به پایگاه داده مدل سلسله مراتبی است از این جهت که شما آن را به صورت یک درخت میبینید.در هر صورت چیزی که در این نوع پایگاه داده به نظر میرسد تعداد زیادی درخت است که شاخه هایشان را به اشتراک نهاده اند،درنتیجه فرزندان میتوانند چندین والد و والد ها میتوانند چندین مولود داشته باشند.
وقتی به این قضیه عمیق تر بنگریم میبینیم که ابزار استفاده و نگهداری این مدل مشکل بوده واجرا و بکار گیری آن بوسیله برنامه نویسان ترجیح داده میشود تا کاربران عادی ، و چیزی در این مدل نیاز بود تا توسط کاربر نهایی برای حل مسائل واقعی استفاده شود . این مسئله کمبود  این روش است.

پایگاه داده رابطه ای

پایگاه داده رابطه ای، به آن دسته از پایگاه‌های داده اطلاق می‌شود که بر اساس مدل رابطه‌ای طراحی و ایجاد شده باشند. پس از پایگاه‌های داده‌ای سلسله مراتبی و شبکه‌ای، که هر یک دارای ضعف‌هایی بودند، متخصصان در جستجوی مدلی بودند که دارای ساختار داده‌ای با انتزاع قوی ابداع گردید. مدل رابطه‌ای در سال ۱۹۷۰ توسط ادگار کاد مطرح شد. این مدل دارای ساختار داده‌ای با انتزاع قوی بوده و اساساً ساختار داده‌ای در آن بر اساس یک مفهوم ریاضی بنام رابطه استوار است. در اینجا لازم است به این نکته توجه شود که مفهوم رابطه با مفهوم ریاضی آن تاحدودی متفاوت است

در پایگاه داده رابطه‌ای بالاخص در محیط انتزاعی مورد استفاده کاربر، رابطه نمایشی جدولی دارد و اساساً پایگاه داده رابطه‌ای مجموعه‌ای است از تعدادی نوع جدول. مفاهیم ساختار جدولی عبارتند از: سطر، جدول و ستون

هر جدول از نظر محتوای داده‌ای مجموعه‌ای است از نمونه‌های متمایز از انواع سطرها و هر سطر نیز مجموعه‌ای از مقادیر است که هر کدام از یک مجموعه برگرفته شده‌اند. به هر یک از عناصر سطر یک ستون گویند. لازم به ذکر است که در ساختار جدولی، تنها عنصر ساختاری اساسی همین مفهوم نوع جدول است

تناظر بین اجزا مفهوم رابطه و جدولی در داده‌های رابطه‌ای

اجزا مفهوم رابطه

اجزا مفهوم جدولی

رابطه

جدول

تاپل

سطر

صفت

ستون

دامنه

مجموع مقادیر ستون

درجه

تعداد ستون‌ها

کاردینالیتی

تعداد سطرها

نکته قابل توجه این است که مفاهیم جدول و رابطه تا حدود زیادی به یکدیگر نزدیک بوده و در مواردی به اشتباه بجای یکدیگر مورد استفاده قرار می‌گیرند.

انواع دیگر پایگاه داده

چند نوع پایگاه داده ی دیگر هم وجود دارد که البته رواج چندانی ندارند :

پایگاه داده‌های چند بعدی

پایگاه داده‌های رابطه‌ای توانست به سرعت بازار را تسخیر کند، هرچند کارهایی نیز وجود داشت که این پایگاه داده‌ها نمی‌توانست به خوبی انجام دهد. به ویژه به کارگیری کلیدها در چند رکورد مرتبط به هم و در چند پایگاه داده مشترک، کندی سیستم را موجب می‌شد. برای نمونه برای یافتن نشانی کاربری با نام دیوید، سیستم رابطه‌ای باید نام وی را در جدول کاربر جستجو کند و کلید اصلی را بیابد و سپس در جدول نشانی‌ها، دنبال آن کلید بگردد. اگر چه این وضعیت از نظر کاربر، فقط یک عملیات محسوب می‌شود، اما به جستجو درجداول نیازمند است که این کار پیچیده و زمان بر خواهد بود. راه کار این مشکل این است که پایگاه داده‌ها اطلاعات صریح درباره ارتباط بین داده‌ها را ذخیره نماید. می‌توان به جای یافتن نشانی دیوید با جستجو ی کلید در جدول نشانی، اشاره‌گر به داده‌ها را ذخیره نمود. در واقع، اگر رکورد اصلی، مالک داده باشد، در همان مکان فیزیکی ذخیره خواهد شد و از سوی دیگر سرعت دسترسی افزایش خواهد یافت. چنین سیستمی را پایگاه داده‌های چند بعدی می‌نامند. این سیستم در هنگامی که از مجموعه داده‌های بزرگ استفاده می‌شود، بسیار سودمند خواهد بود. از آنجاییکه این سیستم برای مجموعه داده‌های بزرگ به کار می‌رود، هیچگاه در بازار به طور مستقیم عمومیت نخواهد یافت.

پایگاه داده‌های شی گرا

اگر چه سیستم‌های چند بعدی نتوانستند بازار را تسخیر نمایند، اما به توسعه سیستم‌های شی گرا منجر شدند. این سیستم‌ها که مبتنی بر ساختار و مفاهیم سیستم‌های چند بعدی هستند ، به کاربر امکان می‌دهند تا اشیاء را به طور مستقیم در پایگاه داده‌ها ذخیره نماید. بدین ترتیب ساختار برنامه نویسی شیء گرا (object oriented ) را می‌توان به طور مستقیم و بدون تبدیل نمودن به سایر فرمت‌ها ، در پایگاه داده‌ها مورد استفاده قرار داد. این وضعیت به دلیل مفاهیم مالکیت در سیستم چند بعدی ، رخ می‌دهد. در برنامه شی گرا، یک شی خاص “مالک ” سایر اشیا در حافظه است، مثلاً دیوید مالک نشانی خود می‌باشد. در صورتی که مفهوم مالکیت در پایگاه داده‌های رابطه‌ای وجود ندارد.

بانک های اطلاعاتی رابطه ای : مفاهيم و تعاريف
قبل از پرداختن به موضوع بانک های اطلاعاتی رابطه ای (Relational Data Base) ، بهتر است اشاره ای به مفاهيم ذيل داشته باشيم :

  • موجوديت (Entity)
    به هر چيزی (شی ، شخص ، محل و ...) که می خواهيم در يک سيستم راجع به آن اطلاعاتی را جمع آوری ، پردازش و نگهداری نمائيم ، يک موجوديت گفته می شود . تعريف فوق ، متداولترين برداشت اوليه از موجوديت می باشد . مجموعه موجوديت های يک سيستم ، ساختار اطلاعاتی آن سيستم را مشخص می كند . هر موجوديت شامل اجزاء و المان هائی است که آن موجوديت را توصيف می كند كه به آنها  خصيصه و يا Attribute گفته می شود . هر موجوديت بسته به اين كه  در سيستم مورد مطالعه چه ميزان اطلاعات راجع به آن می خواهيم داشته باشيم ، شامل حداقل يک و يا چند خصيصه خواهد بود. از آنجا که هر موجوديت راجع به يک موضوع به خصوص می باشد ، بنابراين يک ارتباط منطقی بين کليه خصايص موجوديت وجود خواهد داشت .در واقع  ،‌ تمام خصائص يک موجوديت توصيف کننده آن موجوديت خواهد بود . برای روشن شدن موضوع بد نيست به نمونه مثال ذيل توجه نمائيد :
    - موجوديت مشتری شامل خصلت های نام مشتری ، آدرس مشتری ، تلفن مشتری و ... است .
    - موجوديت سفارش شامل خصلت های شماره سفارش ، تاريخ سفارش ، نام مشتری ، کالای سفارش شده ، تعداد کالای سفارش شده و ... است
    همانگونه که در مثال فوق مشاهده گرديد ،  تمام خصلت های موجوديت مشتری توصيف کننده يک مشتری و تمام خصلت های موجوديت سفارش توصيف کننده يک سفارش می باشند .
  • کليد (Key)
    هر رخداد از يک موجوديت را بايد بتوان به وسيله يک و يا ترکيبی از چند خصيصه آن به صورت يکتا شناسائی نمود . به تعبير ديگر ، هر يک از رخدادهای يک موجوديت بايد يکتا باشد ، در غير اينصورت تغيير و يا حذف يک رخداد از موجوديت (در مثال فوق يک مشتری) غير ممکن خواهد بود . از اينرو از بين خصلت های يک موجوديت يک و يا ترکيبی از چند خصيصه به عنوان کليد آن موجوديت انتخاب می شود .  اين خصلت (و يا ترکيب خصلت ها) بايد بتواند يکتائی هر رخداد از موجوديت را تضمين نمايد . در موجوديت سفارش مثال فوق ، خصلت شماره سفارش می تواند بعنوان کليد انتخاب شود .
    توضيح : در برخی از موارد در يک موجوديت چندين کليد وجود دارد  كه به هر يک از آنها يک Candidate Key يا Alternate Key گفته می شود .
    در برخی از حالات نمی توان در يک موجوديت هيچ کانديدی براي کليد يافت ، مانند موجوديت مشتری در مثال فوق . در اين موجوديت هيچيك از خصلت ها و يا هيچ ترکيبی از آنها نمی تواند صد درصد تضمين کننده يکتائی آن باشد (با اينکه احتمال وجود دو مشتری هم نام در يک آدرس و با يک شماره تلفن بسيار کم است ، اما باز هم احتمال وقوع دارد) . در چنين مواردی مجبور هستيم يک خصلت به موجوديت اضافه کنيم تا تضمين کننده يکتائی رخدادهای آن باشد . در مثال فوق با اضافه کردن خصلت کد مشتری به موجوديت مشتری ، می توان يکتائی آن را تضمين نمود . به اين نکته دقت شود که بسياری از خصلت های يک موجوديت در کنترل سيستم نيست و از خارج به سيستم تحميل می گردد . به عنوان مثال ما نمی توانيم تعيين کنيم که نام مشتری های سازمان تکراری نباشد . اما عدم تکراری بودن خصلت هائی که خود ما ايجاد نموده ايم را می توان تضمين کرد ( نظير کد مشتری که توسط سيستم و يا سازمان مربوطه توليد می شود )  .
  • کليد اصلی (Primary Key)
    از بين کليدهای يک موجوديت (Candidate Key) ، می بايست يک کليد را به عنوان کليد اصلی انتخاب نمود . معيارهای مختلفی در اين انتخاب دخيل هستند ، اما معمولا" بهترين کليدی که معرف مفهوم و ماهيت موجوديت باشد به عنوان کليد اصلی انتخاب می گردد .
  • وابستگی تابعی (Functional Dependency)
    وابستگی تابعی مفهومی است که مابين خصلت های يک موجوديت تعريف می گردد . به اين معني که می گوئيم خصلت A با خصلت B وابستگی تابعی دارد ، در صورتيکه به ازای هر مقدار مشخص از خصلت B بتوان مقدار مشخص و يکتائی از خصلت A را بدست آورد ، اما عکس آن ممکن است صادق نباشد . در موجوديت مشتری مثال قبل ، به ازای هر کد مشتری می توان نام او را بدست آورد در اين صورت می گوئيم خصلت نام مشتری با خصلت کد مشتری وابستگی تابعی دارد . اما عکس آن صادق نيست چرا که به ازای يک نام مشتری مشخص ، نمی توان يک کد مشتری يکتا استخراج نمود (دو مشتری مختلف می توانند نام يکسان داشته باشند ، در اين حالت يک نام مشتری ممکن است متناظر با دو  و يا حتی چند کد مشتری باشد).
  • انواع رابطه بين خصلت های يک موجوديت
    بين خصلت های يک موجوديت سه نوع رابطه وجود دارد :
    رابطه يک به يک (One To One) : در حالتی اتفاق می افتد که خصلت A وابستگی تابعی به خصلت B داشته باشد و خصلت B نيز وابستگی تابعی به خصلت A داشته باشد . در اين حالت هر دو خصلت A و B کانديدای کليد شدن می باشند.
    رابطه يک به چند (One To Many) : اگر خصلت A وابستگی تابعی به خصلت B داشته باشد و عکس آن صادق نباشد ، يك ارتباط از نوع يک به چند وجود خواهد داشت . در اين حالت ، خصلت B کانديد کليد شدن است و خصلت A صرفا" يکی از توصيف گرهای موجوديت محسوب می گردد .
     -  رابطه چند به چند (Many To Many) : اگر دو خصلت هيچکدام وابستگی تابعی به يکديگر نداشته باشند آنگاه رابطه بين آنها چند به چند خواهد بود . در اين حالت هيچيکدام از آنها کانديد کليد شدن نبوده (ممکن است ترکيب آنها کانديد کليد شدن باشد) و صرفا" توصيف کننده موجوديت خواهند بود .
  • هنجار سازی (Normalization)
    هنجار سازی ، فرآيندی است كه طی آن يك موجوديت جهت به حداقل رسانی نابهنجاری های بوجود آمده در خلال تغييرات اعمال شده بر روی رخدادهاي يک موجوديت مورد بررسی و تبديل قرار می گيرد. اگر اين فرآیند به طور صحيح بر روی يک موجوديت اعمال نگردد ، آنگاه نمی توان هيچ تضمينی در خصوص حفظ يکپارچگی اطلاعات آن موجوديت ارائه داد . فرآيند هنجار سازی به دليل اهميت و گستردگی آن  در مقاله ای جداگانه تشريح خواهد شد. 
  • نا بهنجاری
    به پيامدهای ناخواسته تغيير اطلاعات نابهنجاری گفته می شود .
  • Relation
    موجوديت ها در مدل منطقی داده های سيستم مورد بحث و بررسی قرار می گيرند و پس از طی فرآيند هنجارسازی در مرحله فيزيکی به صورت ماتريسهای دوبعدی مشتمل بر سطرها (رخدادهاي مختلف يک موجوديت) و ستون ها (خصلت های مختلف آن موجوديت) تعريف می گردند . هر يک از اين ماتريس ها را يک ارتباط يا Relation می نامند که در مدل فيزيکی معمولا" آنها را با نام جدول (Table) معرفی می کنند . همانطور که پيش از اين اشاره شد تمام خصلت های يک موجوديت با يکديگر ارتباط منطقی داشته و معرف آن موجوديت می باشند ، از اينرو به اين جداول ارتباط می گويند .
  • Tuple
    هر يک از رخدادهای مختلف يک موجوديت را يک Tuple می گويند که در مدل فيزيکی معمولا" از آنها با نام رديف (Row) و يا رکورد (Record) نام برده می شود . بنابراين Tuples ، رديف های جدول دو بعدی هستند که آن را به عنوان Relation و يا Table می شناسيم .
  • Attribute
    هريک از خصلت های مختلف يک موجوديت را Attribute می نامند ( نظير کد مشتری ) . معمولا" در مدل فيزيکی به جای Attribute از فيلد (Field) و يا ستون (Column) استفاده می شود . بنابراين Attributes ، ستون های جدول دو بعدی هستند که آن را به عنوان Relation و يا Table می شناسيم .

شكل زير يك Relation را به همراه اجزاء آن نشان می دهد :


 يك Relation به همراه اجزاء آن

  • ارتباط (Relationship)
    منظور ارتباط بين دو Relation  و یا جدول است که بر اساس برابری فيلدهای يکسان در هر جدول تعريف و دارای انواع مختلفی است . ( به دليل اهميت و گستردگی ، در مقاله ای جداگانه تشريح خواهد شد) .  اين ارتباط ها در مدل منطقی مابين موجوديت ها (خصوصا" موجوديت های نرمال شده ) تعيين می گردند و به آن Entity Relation یا ER سيستم می گويند . مدل ER سيستم توسط ابزارهای مستند سازی جهت درک بهتر مدل داده ای سيستم ترسيم می گردد که به آنها ERD می گويند .

پس از تشريح برخی از مفاهيم اوليه و در عين حال مهم بانك های اطلاعاتی رابطه ای ، به اختصار می توان گفت که يک بانک اطلاعات رابطه ای مجموعه ای از رابطه ها (Relations) و يا جداول به همراه تمامی ارتباط هائی (Relationship) است که بين آنها وجود دارد  . هر بانک اطلاعاتی در خصوص يک سيستم مورد نظر طراحی و ايجاد می گردد ، اما در برخی از سازمان های بزرگ که بين سيستم های مختلف آن ارتباط وجود دارد (نظير سيستم پرسنلی ، حقوق و دستمزد و مالی و ...) ممکن است  بانک های اطلاعاتی با يکديگر تجميع  و پس از طی فرآيند يکپارچه سازی به صورت يک بانک اطلاعاتی جامع و يکپارچه برای آن سازمان تعريف و ايجاد گردد .
امروزه سيستم های مديريتی بانک های اطلاعاتی رابطه ای مختلفی وجود دارد که هر يک ويژگی ها و قابليت هايی خاص خود را دارند . به اين سيستم ها و يا نرم افزارها اختصارا" RDBMS گفته می شود .  MS ACCESS ،  MS SQL ، ORACLE ، SYBASE   ، نمونه هائی  متداول در اين زمينه می باشند .
تمامی سيستم های مديريت بانک های اطلاعاتی رابطه ای به منظور ارائه قابليت های خود و استفاده از آنها از زبان مشترکی که به آن SQL  ( برگرفته شده از Structured Query Language )  گفته می شود ، استفاده می نمايند . تمامی نيازها و انتظارات  کاربران از بانک های اطلاعاتی نظير جستجوی اطلاعات ، ايجاد ، تغيير و يا حذف اطلاعات حتی ايجاد بانک اطلاعاتی و يا ساير اجزاء مرتبط با آن توسط زبان فوق تعريف و تحويل RDBMS داده خواهد شد تا پس از بررسی بر روی بانک اعمال گردد.

انواع مختلف بانک‌های اطلاعاتی NoSQL

رده و گروه عمده بانک‌های اطلاعاتی NoSQL وجود دارند؛ شامل:
الف) Key-Value stores که پایه بانک‌های اطلاعاتی NoSQL را تشکیل داده و اهدافی عمومی را دنبال می‌کنند.
ب) Wide column stores که در شرکت‌های بزرگ اینترنتی بیشتر مورد استفاده قرار گرفته‌اند.
ج) Document stores یا بانک‌های اطلاعاتی NoSQL سندگرا.
د) Graph databases که بیشتر برای ردیابی ارتباطات بین موجودیت‌ها بکار می‌روند.

و در تمام این گروه‌ها، مکانیزم‌های Key-Value به شدت مورد استفاده‌اند.

ا Key-Value stores   
Key-Value stores یکی از عمومی‌ترین و پایه‌ای‌ترین گروه‌های بانک‌های اطلاعاتی NoSQL را تشکیل می‌دهند. البته این مورد بدین معنا نیست که این رده، جزو محبوب‌ترین‌ها نیز به‌شمار می‌روند.
این نوع بانک‌های اطلاعاتی شامل جداولی از اطلاعات هستند. هر جدول نیز شامل تعدادی ردیف است؛ چیزی همانند بانک‌های اطلاعاتی رابطه‌ای. اما در هر ردیف، یک Dictionary یا آرایه‌ای از اطلاعات key-value شکل را شاهد خواهید بود. در اینجا ساختار و اسکیمای ردیف‌ها می‌توانند نسبت به یکدیگر کاملا متفاوت باشند (دید لیبرال نسبت به اسکیما، که در قسمت قبل به آن پرداخته شد). در این بین، تنها تضمین خواهد شد که هر ردیف، Id منحصربفردی دارد.
از این نوع بانک‌های اطلاعاتی، در سکوهای کاری ابری زیاد استفاده می‌شود. دو مثال مهم در اینباره شامل Amazon SimpleDB  و Azure Table Storage هستند.
سایر نمونه‌های مهم دیگری از بانک‌های اطلاعاتی NoSQL که بر مبنای مفهوم  Key-Value stores کار می‌کنند، عبارتند از MemcacheDB و Voldemort. به علاوه در Amazon web services بانک اطلاعاتی دیگری به نام         DynamoDB به عنوان یک سرویس عمومی در دسترس است. همچنین Dynomite نیز به عنوان نمونه سورس باز Dynamo مطرح است.
Redis و Riak نیز جزو بانک‌های اطلاعاتی Key-Value store بسیار معروف به‌شمار می‌روند.

همانطور که در تصویر فوق ملاحظه می‌کنید، Key-Value stores دارای بانک‌های اطلاعاتی شامل جداول مختلف هستند. در اینجا همچنین ساختار ردیف‌هایی از اطلاعات این جداول نیز مشخص شده‌اند. هر ردیف، یک کلید دارد به همراه تعدادی جفت کلید-مقدار. در این جداول، اسکیما ثابت نگه داشته شده است و از ردیفی به ردیف دیگر متفاوت نیست؛ اما این مساله اختیاری است. برای مثال می‌توان در ردیف اطلاعات یک مشتری خاص، کلید-مقدارهایی خاص او را نیز درج کرد که لزوما در سایر ردیف‌ها، نیازی به وجود آن‌ها نیست.
به علاوه باید به خاطر داشت که هرچند به ظاهر last_orderها به شماره Id سفارشات مرتبط هستند، اما مفاهیمی مانند کلیدهای خارجی بانک‌های اطلاعاتی رابطه‌ای، در اینجا وجود خارجی ندارند. بیشتر در اینجا هدف سهولت جستجوی اطلاعات است.

Wide column stores
Wide column stores دارای جداولی است که درون آن‌ها ستون‌هایی قابل تعریف است. درون این ستون‌ها که یادآور بانک‌های اطلاعاتی رابطه‌ای هستند، اطلاعات به شکل key-value با ساختاری متفاوت، قابل ذخیره سازی هستند. در اینجا هر ستون، می‌تواند شامل گروهی از ستون‌ها که بر اساس مفاهیم جفت‌های key-value کار می‌کنند، باشد.
این نوع بانک‌های اطلاعاتی عموما در سایت‌های اینترنتی بسیار بزرگ و برنامه‌های «Big data» استفاده می‌شوند. برای مثال:

Hadoop

Cassandra

Apache HBASE

- BigTable گوگل که یک محصول اختصاصی و غیرعمومی است؛ اما جزئیات آن را به عنوان مقالات علمی منتشر کرده است.
– دنیای سورس باز به رهبری Yahoo، نمونه سورس باز BigTable را به نام Hbase ارائه داده است.
– در فیس بوک، از بانک اطلاعاتی دیگری به نام Cassandra استفاده می‌کنند. در اینجا به گروهی از ستون‌ها super columns و جداول super column families گفته می‌شود.

آیا این مطلب برای شما مفید بود؟


منبع: hit.mums.ac.ir



ارسال نظر

نام


ایمیل


نظر