# پایگاه‌های داده > NoSQL >  تعاریف سیستمهای محتلف NoSQL - تفاوت در چیست؟

## Amir-Shabani

سلام بر همگی.

هر چی میگردم و میخونم متوجه تفاوتهای سه مدل از سیستمهای مختلف پایگاه داده به قرار کلید-مقدار، سند گرا و ستون گرا نمیشم! هر چی بیشتر میخونم میبینم اینا خیلی به هم شبیه هستند!!!!! پس تفاوت اینا توی چیه؟
چیزایی که من فهمیدم:
1. کلید- مقدار :
چیزی شبیه برنامه نویسی شی گرا!



یک کلید داریم که به مجموعه ای از اطلاعات که به صورت کلید-مقدار هستن وصل میشه... جستجو فقط بر مبنای اون کلید هست. یعنی شما نمیتونی بگی برو اونایی رو پیدا کن که نامشون امیر هست. یه کلید میدنی و نتیجه همون کلید رو هم میگیری! حتی نمیتونی بین یک محدوده کلید هم اقدام به جستجو کنی

2. سند گرا: یک سند داریم که اطلاعات به صورت حفتهای از کلید-مقدار درونش قرار دارند. یک id هم داریم برای شناسایی اون سند. یه فرقی فقط با کلید مقدار داره اونم اینکه جستجو همه رقمه امکان پذیره...
اسناد میتونن به یه سند دیگه ارجاع داده بشن یا حتی از آرایه ها استفاده کردن برای فیلدها

3. ستون گرا: اين مدل از پايگاه داده اشيا را به صورت ستون‌هايي داده‌اي مرتبط به يکديگر نگه داري مي‌کند. اين مدل شبيه پايگاه داده‌هاي رابطه‌اي مي‌باشد اما به جاي نگهداري داده‌ها در سطرهايي از جداول داده‌ها را به صورت ستوني ذخيره مي‌کند جهت دستيابي به داده مورد نظر هر ستون داراي کليد مي‌باشد که با اشاره به آن کليد جدولي از اطلاعات مربوط به آن نمايش داده مي‌شود. 

یه کلید داریم تعدادی جفتهای کلید مقدار برای نمایش اطلاعات!
--------------------------------
خب! فرقهای این سه مدل چیه؟
همشون یه کلید دارن و تعدادی جفتهای کلید-مقدار برای نمایش اطلاعات مربوطه...

با تشکر
امیر شعبانی

----------


## مبین رنجبر

> سلام بر همگی.
> 
> هر چی میگردم و میخونم متوجه تفاوتهای سه مدل از سیستمهای مختلف پایگاه داده به قرار کلید-مقدار، سند گرا و ستون گرا نمیشم! هر چی بیشتر میخونم میبینم اینا خیلی به هم شبیه هستند!!!!! پس تفاوت اینا توی چیه؟
> چیزایی که من فهمیدم:
> 1. کلید- مقدار :
> چیزی شبیه برنامه نویسی شی گرا!
> 
> 
> 
> ...


سلام دوست عزیز.دیتابیس های نوع کلید-مقدار و سندگرا کاملا شبیه یکدیگر هستند ولی تنها فرقی که وجود دارد این است که در نوع سندگرا شما از ساختار و کدگزاری های مختلفی از جمعه XML،JSON،BSON و ... استفاده میکنید.فرق دیگری هم دارند که شما خودتان اشاره کردید.در مدل سندگرا شما می توانید در محتویات سند جستجو کنید ولی در مدل کلید-مقدار جستجو فقط از طریق کلید میسر است.در مدل ستونی هم که تفاوت ساختار مشهود است.هر کدام از این مدل ها برای کاربردی خاص با داده های خاص طراحی شده اند و در زمان مشکل می توانید متوجه بشوید که کدام مدل برای داده های شما مناسب تر می باشد.

----------


## Amir-Shabani

تشکر بابت پاسخگویی سریعتان....




> هر کدام از این مدل ها برای کاربردی خاص با داده های خاص طراحی شده اند


اگه یه چند تا مثال کوچیک بزنید ممنون میشم!




> در مدل ستونی هم که تفاوت ساختار مشهود است


فقط تفاوت ساختار با مدل رابطه ای که به صورت سطری ذخیره میکنه؟ همین؟

----------


## مبین رنجبر

> تشکر بابت پاسخگویی سریعتان....
> 
> 
> اگه یه چند تا مثال کوچیک بزنید ممنون میشم!
> 
> 
> فقط تفاوت ساختار با مدل رابطه ای که به صورت سطری ذخیره میکنه؟ همین؟


مثالی از مدل کلید-مقدار :

user1923_color    Red
user1923_age      18
user3371_color    Blue
user4344_color    Brackish
user1923_height   6' 0"
user3371_age      34

مثالی از مدل سندگرا :

  {
      FirstName: "Jonathan",
      Address: "15 Wanamassa Point Road",
      Children: [
         {Name: "Michael", Age: 10},
         {Name: "Jennifer", Age: 8},
         {Name: "Samantha", Age: 5},
         {Name: "Elena", Age: 2}
    ]
   }
 

مثالی از مدل ستون‌گرا :



در مدل ستون‌گرا همانطور که از نامش پیداست بحث ستون مطرح هست.همانطور که در مثال بالا مشاهده می کنید گروهی از مقادیر تشکیل یک ستون را داده اند که این کار در مدل رابطه ای امکان پذیر نیست هرچند شباهت هایی دارند.

----------


## Amir-Shabani

منظور از مثال ،کاربردهایشان بود!
مثلا ستون گرا برای چه کاربردهایی بهتره و سایر مدلها!
اگه لینک هم بدید هم خوبه

----------


## مبین رنجبر

> منظور از مثال ،کاربردهایشان بود!
> مثلا ستون گرا برای چه کاربردهایی بهتره و سایر مدلها!
> اگه لینک هم بدید هم خوبه


قبلا عرض کردم:



> هر کدام از این مدل ها برای کاربردی خاص با داده های خاص طراحی شده اند و در زمان مشکل می توانید متوجه بشوید که کدام مدل برای داده های شما مناسب تر می باشد.


با توجه به اینکه داده های شما چه ساختاری داشته باشند از هر کدام از این مدل ها می توانید استفاده کنید.

مثلا تصور کنید داده های شما در هر سطر دارای ساختاری مخصوص به خود است و نمی توان آنها را در یک ستون گروه بندی کرد.و همچنین نمی شود این سند داده ای را به صورت گسسته ذخیره کرد.راه حل این مشکل استفاده از مدل سندگرا است.

در مثالی دیگر هم تصور کنید می بایست جمعی از کلید-مقدارها را گروه بندی و تحت نامی خاص ذخیره کنید و روند افزایشی نخواهند داشت(روند افزایشی یعنی اینکه بر تعداد کلیدها هیچ وقت افزوده نمی شود ولی کم می شود).هرچند می توان با روش سندگرا هم ذخیره کرد ولی ممکن است روند افزایشی کلیدها را داشته باشیم.پس مدل مناسب ، مدل ستون‌گرا خواهد بود.

----------

