فرهاد مهریاری
Full Stack Web Developer

NoSQL چیست؟ مزیت NoSQL به SQL در چیست؟

NoSQL چیست؟ در اولین مقاله قصد مون بر این هست که مقدمه ای بر بانک های اطلاعاتی (Databases) رو که ساختار NoSQL دارند رو مطالعه بکنیم.برای همین ابتدا نیاز هست که توضیح مختصری درباره بانک های اطلاعاتی که ساختار relation دارند رو بدیم .در این نوع بانک های اطلاعاتی ، اطلاعات ما در قالب جدول هایی که به صورت سطر و ستون هستند ذخیره می شوند. که این توضیح یک سطری برای تمامی کسانی که با بانک های اطلاعاتی Sql Server یا Mysql , ... کار کردند کاملا واضح و آشکار هست.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

خب و اما NoSQL : دقیقا تفاوت اصلی و ساختاری NoSQL از همین نقطه آغاز میشه که در بانک های اطلاعاتی NoSQL اطلاعات ما در جداول ذخیره میشه ولی به صورت سطر و ستون 2 بعدی نیست ! خیلی ساده میشه توی یک جدولی یکی از عناصر در زیر شاخه خودش چندین عنصر دیگه رو جای بده ، برای مثال ما یک جدولی رو داریم که اطلاعات کتاب و ناشران رو ذخیره میکنه . ابتدا حالتی رو بیان می کنیم که بانک اطلاعاتی ما در قالب SQL باشه ، پس باید یک جدولی رو داشته باشیم که اطلاعات کتب در اون ذخیره بشه و یک جدولی رو داشته باشیم که اطلاعات ناشران رو در خودش جای بده

زمانی که ما اطمینان خاطر داریم برای هر کتاب تنها یک ناشر وجود خواهد داشت می تونیم توی جدول کتب یک ستونی رو به شماره ی ناشر اختصاص بدیم که به این طریق کتاب و ناشر باهم لینک بشن ولی ما می خواهیم شرایطی رو در نظر بگیریم که ممکن هست برای یک کتب چندین ناشر وجود داشته باشه پس باید جدول سومی داشته باشیم که لینک ID های ناشران و کتب باشه

آموزش NoSQL

با توجه به تصویر بالا واضح و آشکار هست که ما کتاب learn node js رو به دوتا ناشر farhad mehryari و jhon smit اختصاص دادیم.حالا همین کار رو در بانک اطلاعاتی با ساختار NoSQL انجام میدیم ، اغلب بانک های اطلاعاتی از قالب json پشتیبانی می کنند و ما تمامی اطلاعات کتاب رو در قالب json وارد جدول یا بهتر بخایم بگیم وارد collection کتاب می کنیم :

{
  "id": "5",
  "title": "Learn Node js",
  "authors": 
  {
    "id": [1,2],
    "firstname": ["farhad","jhon"],
    "lastname": ["mehryari","smith"]
  },
  "times": {
    "create": {"2016-06-12 12:32:35"},
    "update1": {},
    "update2": {}
  }
}

با این روش مرتب سازی و سرعت دسترسی به اطلاعات تفاوت چشمگیری با حالت قبلی داره ، حالا یک تعریف برای این نوع ساختار بانک اطلاعاتی بیان می کنیم : NoSQL برمیگرده به non SQL یا no SQL یا not only SQL که یک مکانیسمی رو ارائه میده برای ذخیره و بازیابی اطلاعات که برای برنامه های تحت وب real time و برنامه هایی که اطلاعات حجیمی دارند مناسب هست ، بعضی از این بانک های اطلاعاتی امکان تحلیل و آنالیز رو هم (مثل clusterpoint ) میدن که تاثیر مثبتی در سرعت و عملکرد برنامه میتونه داشته باشه

مزیت های nosql به sql

در noSQL نیازی به ایجاد ساختار و schema جدول (collection) نیست و با insert کردن اولین سری از اطلاعات ساختار خودکار ایجاد میشه

مقیاس پذیری و عملکرد بهتر نسبت به SQL

نیازی به تعریف نوع متغییر ها نیست این امر به صورت خودکار انجام میشه در حالی که در بانک های اطلاعاتی SQL ستونی که نوع اونت int هست نمیتونه مقدار رشته ای در اون قرار بگیره ، البته منظور از این مزیت ها این نیست که بانک های اطلاعاتی SQL برای همیشه کنار گذاشته بشه در مواردی هم از جمله transaction ها بانک های اطلاعاتی SQL مناسب تر از NoSQL ها هستند

انواع دیتابیس های NoSQL

  • ذخیره سازی key-value اندیس و مقدار
  • ذخیره سازی column ستونی
  • ذخیره سازی document سند
  • ذخیره سازی graph database

redis , mongo , cassandra , clusterpoint این ها هم از جمله بانک های اطلاعاتی NoSQL هستند که هر یک مزیت و کاربرد خاص خودش رو داره که در قسمت های بعدی تفصیلا بحث خواهد شد.


نظرات