پایگاه داده گراف در Sql Server - قسمت دوم:ویژگی های پایگاه داده گراف SQL Server
ویژگی های پایگاه داده گراف SQL Server
همانطور که معمولاً شناخته شده است ، SQL Server یک پایگاه داده رابطه ای است. اما از SQL Server 2017 ، ویژگی های پایگاه داده گراف را به دست آورده است. این سوال را ایجاد می کند: آیا این یک پایگاه داده رابطه ای است یا یک پایگاه داده گراف؟
حقیقت این است که هنوز هم یک پایگاه داده رابطه ای است که با ویژگی های پایگاه داده گراف پوشش داده شده است. همانطور که بعداً خواهید دید هنگامی که ما برنامه اجرا را بررسی می کنیم ، SQL Server درخواستهای گراف شما را به معادل های پایگاه داده رابطه ای خود تبدیل می کند. اما از این واقعیت ناامید نشوید و تصور نکنید که عملکرد پایین می آید. همانطور که بعداً خواهید فهمید ، با حل مسئله درست ، ویژگی های گراف می توانند از یک مدل رابطه ای بهتر عمل کنند.
جداول گره و لبه
همانطور که گفته شد ، SQL Server گره ها و لبه ها را در جداول پیاده سازی می کند. و می توانید به جای کلیدهای اصلی و خارجی ، روابط را با جداول لبه تعریف کنید. بعداً ، نحوه ایجاد جداول به عنوان گره و لبه را مشاهده خواهید کرد.
علاوه بر این ، شما خصوصیات را به عنوان ستونهای جدول تعریف می کنید و نوع داده مناسب را به آنها اختصاص می دهید.
هنگامی که یک جدول گره ایجاد می کنید ، SQL Server یک ستون ضمنی $ node_id با داده هایی که هنگام وارد کردن رکورد به طور خودکار تولید می شوند ، ایجاد می کند. نمی توانید این ستون را حذف کنید یا حتی مقدار آن را به روز کنید.
به همین ترتیب ، هنگام ایجاد یک جدول edge ، سرور SQL ستون های $ edge_id ، $ from_id و $ to_id را ایجاد می کند.
$ from_id شناسه گره گره ای را دارد که لبه از آن سرچشمه می گیرد. در همین حال ، $ to_id دارای شناسه گره گره ای است که در آن لبه خاتمه می یابد. می توانید یک خط را با 2 امتیاز چپ و راست تصور کنید. نقطه سمت چپ $ from_id و نقطه سمت راست $ to_id است.
از طرف دیگر ، $ edge_id ستون id خودکار تولید شده منحصر به فرد برای جدول edge است. برای نشان دادن اینکه گره ها ، جداول لبه و شناسه های آنها چیست ، به شکل زیر مراجعه کنید:
اینکه کدام یک از 2 گره سمت چپ و راست لبه را پر کنید ، به خود شما بستگی دارد.
سپس ، ستونهای خودکار دیگری وجود دارد که SQL Server اضافه می کند و نباید آنها را حذف یا زحمت بکشید.
از آنجا که گره ها و لبه ها جداول هستند ، می توانید INSERT ، UPDATE ، DELETE و SELECT را انجام دهید. همچنین می توانید آنها را ایجاد کنید ، تغییر دهید و رها کنید. و برای سرعت بخشیدن به درخواست های خود ، می توانید فهرست ها را اضافه کنید.
علاوه بر اینها ، می توانید در بند WHERE برای مطابقت الگو و پیمایش یک مسابقه انجام دهید. بعداً نحو این موارد را خواهید دید.
آخرین و نه کمترین اهمیت ، از SQL Server 2019 ، مایکروسافت تابع SHORTEST_PATH را برای یافتن کوتاهترین مسیر بین 2 گره موجود در گراف معرفی کرده است.
محدودیت های ویژگی پایگاه داده گراف SQL سرور
مانند هر چیز دیگری در جهان ، ویژگی های پایگاه داده گراف SQL Server محدودیت های خود را دارند:
- اول از همه ، جداول موقتی ، متغیرهای نوع جدول ، جداول زمانی نسخه سیستم و جداول بهینه سازی حافظه نمی توانند جداول گره یا لبه باشند.
- در مرحله دوم ، در SQL Server Management Studio (SSMS) ، با کلیک راست روی یک گره یا جدول لبه ، بر خلاف جداول معمولی ، مورد منوی Design نشان داده نمی شود.
- در مرحله بعدی ، ایجاد شاخص برای node_id$ ، $ from_id و to_id$ با استفاده از GUI در SSMS خطایی ایجاد می کند. به جای آن از CREATE INDEX در ویرایشگر پرس و جو استفاده کنید.
- و سپس ، نمی توانید from_id $و to_id$ را با استفاده از دستور UPDATE به روز کنید. اگر لازم است رابطه ای بین 2 گره تغییر دهید ، یک رکورد جدید با جدید from_id $و to_id $وارد کنید و رکورد قدیمی را حذف کنید.
- به دنبال آن ، درخواست های پایگاه داده متقابل در مورد اشیا graph گرافی پشتیبانی نمی شوند.
- نکته منفی دیگر این است که شما نمی توانید یک جدول گره را به یک جدول لبه ای تغییر دهید و بالعکس.
- سرانجام ، SQL Server نمی تواند حدس بزند کدام گره مربوط به گره دیگری است. این شما هستید که می توانید رابطه هر گره را فراهم کنید.
توضیحات خود را بنویسید