PDA

View Full Version : تعاریف سیستمهای محتلف NoSQL - تفاوت در چیست؟



Amir-Shabani
چهارشنبه 01 آبان 1392, 14:39 عصر
سلام بر همگی.

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

http://i.stack.imgur.com/lgjgF.jpg

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

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

3. ستون گرا: اين مدل از پايگاه داده اشيا را به صورت ستون‌هايي داده‌اي مرتبط به يکديگر نگه داري مي‌کند. اين مدل شبيه پايگاه داده‌هاي رابطه‌اي مي‌باشد اما به جاي نگهداري داده‌ها در سطرهايي از جداول داده‌ها را به صورت ستوني ذخيره مي‌کند جهت دستيابي به داده مورد نظر هر ستون داراي کليد مي‌باشد که با اشاره به آن کليد جدولي از اطلاعات مربوط به آن نمايش داده مي‌شود.
http://i.stack.imgur.com/kxjab.png
یه کلید داریم تعدادی جفتهای کلید مقدار برای نمایش اطلاعات!
--------------------------------
خب! فرقهای این سه مدل چیه؟
همشون یه کلید دارن و تعدادی جفتهای کلید-مقدار برای نمایش اطلاعات مربوطه...

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

مبین رنجبر
چهارشنبه 01 آبان 1392, 14:59 عصر
سلام بر همگی.

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

http://i.stack.imgur.com/lgjgF.jpg

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

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

3. ستون گرا: اين مدل از پايگاه داده اشيا را به صورت ستون‌هايي داده‌اي مرتبط به يکديگر نگه داري مي‌کند. اين مدل شبيه پايگاه داده‌هاي رابطه‌اي مي‌باشد اما به جاي نگهداري داده‌ها در سطرهايي از جداول داده‌ها را به صورت ستوني ذخيره مي‌کند جهت دستيابي به داده مورد نظر هر ستون داراي کليد مي‌باشد که با اشاره به آن کليد جدولي از اطلاعات مربوط به آن نمايش داده مي‌شود.
http://i.stack.imgur.com/kxjab.png
یه کلید داریم تعدادی جفتهای کلید مقدار برای نمایش اطلاعات!
--------------------------------
خب! فرقهای این سه مدل چیه؟
همشون یه کلید دارن و تعدادی جفتهای کلید-مقدار برای نمایش اطلاعات مربوطه...

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


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

Amir-Shabani
چهارشنبه 01 آبان 1392, 15:17 عصر
تشکر بابت پاسخگویی سریعتان....


هر کدام از این مدل ها برای کاربردی خاص با داده های خاص طراحی شده اند
اگه یه چند تا مثال کوچیک بزنید ممنون میشم!


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

مبین رنجبر
چهارشنبه 01 آبان 1392, 15:31 عصر
تشکر بابت پاسخگویی سریعتان....


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


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

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


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}
]
}


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

http://www.ingenioussql.com/wp-content/uploads/2013/02/ColumnDataStore.gif

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

Amir-Shabani
چهارشنبه 01 آبان 1392, 16:03 عصر
منظور از مثال ،کاربردهایشان بود!
مثلا ستون گرا برای چه کاربردهایی بهتره و سایر مدلها!
اگه لینک هم بدید هم خوبه

مبین رنجبر
چهارشنبه 01 آبان 1392, 16:26 عصر
منظور از مثال ،کاربردهایشان بود!
مثلا ستون گرا برای چه کاربردهایی بهتره و سایر مدلها!
اگه لینک هم بدید هم خوبه

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

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

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

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

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