جدول های گراف(Graph Tables) در SQL Server – بخش اول

naeemaei Sql Server , , , , , , , , , , ,

مقدمه Graph Tables

یکی از ویژگی های جدیدی که از نسخه ی SQL Server 2017 پشتیبانی می شود، Graph Table های می باشند. جدول های گراف برای پیاده سازی روابط پیچیده بین جداول کاربرد دارند. این نوع جداول برای پیاده سازی روابط پیچیده چند به چند، روابط سلسله مراتبی و… استفاده خواهند شد و یکی از کاربردهای عمومی که اکثراً با آن آشنایی دارند شبکه های اجتماعی می باشد و البته ساختار این نوع جداول با جداول معمولی در SQL Server تفاوت چندانی ندارد.

  1. یک گراف دیتابیس (Graph Database) از چه بخش هایی تشکیل می شود:
    1. Node : هر نود یک موجودیت است
    2. Edge : هر یال ارتباط بین دو موجودیت را برقرار می کند.

یک گراف دیتابیس مجموعه ای از یال ها و نودها می باشد که جداول نود مانند جداول معمولی در SQL Server می توانند دارای خصوصیت باشند و جداول یال می توانند بدون خصوصیت هم تعریف شوند. تصویر زیر شمای کلی یک گراف دیتابیس را نشان می دهد:

گراف دیتابیس graph database

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

graph database دیتابیس گراف

نمونه ی دیگری از گراف دیتابیس در شکل زیر نمایش داده شده است که در آن:

graph database

  1. یک فرد می تواند با فردی دیگر ارتباط دوستی داشته باشد
  2. یک فرد می تواند در یک شهر زندگی کند
  3. یک رستوران در یک شهر قرار دارد.
  4. یک فرد ممکن است یک رستوران را لایک کند یا به آن امتیاز دهد.

جدول Node :

همانطور که عنوان شد جداول نود مانند جداول معمولی دیتابیس دارای خصوصیات می باشند که شما در زمان ایجاد جدول این خصوصیات را نیز تعریف می کنید، اما نکته ی مهم این است که SQL Server در زمان ایجاد جدول یک ستون دیگر به نام $node_id به این موجودیت اضافه می کند. که این فیلد به عنوان کلید یکتای این موجودیت(نه هر رکورد) در دیتابیس محسوب می شود. مقدار این فیلد بصورت JSON می باشد که بصورت خودکار (Computed Field) تولید می شود و اطلاعاتی راجع به رکورد را در خود نگهداری می کند.

نحوه تعریف یک جدول نود بدین شکل می باشد.

مثال:

پس از ایجاد این جدول در پنجره Object Explorer می توانید در زیرشاخه ی Graph Tables جدولی که ساخته اید را ببینید:

graph tables

برای بررسی بیشتر چند رکورد به جدول اضافه می کنیم:

و در پایان یک Select از جدول می گیریم و نتیجه را می بینیم

select from node tables in graph database

همانطور که می بینید در کنار فیلدهایی که تعریف کردیم فیلد $node_id نیز به جدول اضافه گردیده است

 

بخش دوم

شاید دوست داشته باشید:

اهمیت پارامتر Auto Growth در SQL Server

رویداد Auto Growth چیست؟
زمانیکه که SQL Server برای انجام یک عملیات (مانند Insert کردن رکورد در دیتابیس) فضای کافی ندارد و نیاز به فضای جدیدی در دیسک دارد این رویداد اتفاق می افتد و فضای جدیدی در دیسک برای فایل دیتابیس رزرو می شود.

گراف دیتابیس (Graph Database) در SQL Server – بخش دوم Edge Table

برای ارتباط بین دو node در یک گراف از Edge استفاده می کنیم. هر Edge که ارتباط بین دو جدول node را برقرار می کند می تواند دارای خصوصیت (Property) باشد و یا نباشد. این نوع طراحی برای پیاده سازی روابط چند به چند پیچیده بسیار خوب خواهد بود.

4 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *