پایگاه داده گراف(Graph Database) چیست؟

«از مجموعه: آشنایی با پایگاه داده های NoSQL»

پیش نیازهای این درس

بهتر است ابتدا درس پایگاده داده NoSQL چیست و انواع پایگاه داده های NoSQL را بررسی کنیم

پایگاه داده گراف یا پایگاه داده های مبتنی بر تئوری گراف، در واقع مجموعه ای موجودیت ها و ارتباط بین آن هاست، که به صورت منظم ذخیره سازی شده اند. احتمالاً با پایگاه داده ها آشنایی داشته باشید(اگر آشنایی ندارید اینجا را بخوانید). معمولاً در پایگاه داده هایی که به صورت سطر و ستون ذخیره می شوند، سرعت دسترسی به اطلاعات خوب و منطقی به نظر میرسد(به خصوص زمانی که از Indexing استفاده شود)، این در حالی است که در بسیاری از مواقع(به دلیل نیاز به سرعت بالای دسترسی به اطلاعات)، سرعت واکشی و درج داده ها، در پایگاه داده های رابطه ای، مناسب به نظر نمی رسد. این اتفاق معمولاً زمانی رخ می دهد که میخواهید، یک یا چند Join مختلف، بر روی جداول مختلف یک پایگاه داده بزنید.

یک مثال ساده را در نظر بگیرید. فرض کنید، ۳موجودیت(Entity) داریم: نویسنده، کتاب، خریدار

حتماً در ذهن خود، میتوانید این سه موجودیت را به یکدیگر ارتباط دهید. نویسنده یک یا چند کتاب مینویسد، و خریدار یک یا چند کتاب را میخرد. در چنین پایگاه داده ای، ارتباط نقش اساسی و مهمی را دارد. در واقع اطلاعات(در اینجا) کاملاً به ارتباط بین آن ها بستگی دارد. حال فرض کنید، میخواهید از بین میلیون ها کتاب، هزاران نویسنده و چند ۱۰هزار خریدار، پرس و جو(Query)های مختلفی بزنید. مثلاً میخواهید، تمامی خریدارانی که از یک نویسنده خاص، خرید انجام داده اند، را مشاهده کنید. این قبیل پرس و جو ها، در پایگاه داده های رابطه ای، اگر چه سریع است، ولی همیشه به اندازه کافی سرعت لازم را ندارد. مثلا فرض کنید، پایگاه داده شما، بسیار بزرگ شده است و میخواهید پرس و جو های بسیار زیاد، در لحظه(بدون هیچ دیرکردی) پاسخ داده شوند. اینجاست که میتوانید، به جای استفاده از پایگاه داده های رابطه و معمولی، از پایگاه داده های گراف(Graph Databases) استفاده کنید.

تصویر زیر را نگاه کنید:

در اینجا، دو نویسنده داریم، که هر کدام یک کتاب نوشته اند. دو خریدار هم داریم که خریدار اولی ۲ کتاب، و خریدار دومی، ۱ کتاب خریده است.

در اینجا، مدل نگاه ما به ساختار داده، به صورت رابطه ای بوده است و همان طور که میدانید، گراف ها نیز، بر اساس رابطه ی بین گره ها(Nodes) تشکیل شده اند. در مثال بالا، هر گره، یک نوع نیز دارد. در این جا سه نوع مختلف داریم: نویسنده، کتاب و خریدار، که در رابطه با یکدیگر در سیستم فعالیت می کنند. همان طور که میبینید، یال ها(Edges) نیز، انواعی دارند. در این جا ۲ نوع یال داریم(نوشتن کتاب، خریدن کتاب)، که به وسیله این یال ها، رابطه های مختلف شناسایی می شوند.

این نوع نگاه به ساختار داده ای، قابلیت پیاده سازی توسط پایگاه داده های گراف را دارد. این پایگاه داده ها میتوانند، گره ها و یال ها را در سطح اول(First Class) دسترسی ذخیره کنند. با این کار، سرعت اجرای پرس و جوهایی که نیاز به رابطه دارند بسیار بیشتر از مدل رابطه ای می شوند. مدل های رابطه ای، این ارتباطات را به وسیله کلید های خارجی مدل میکنند و در مواقع لازم از آن ها استفاده می کنند.

پایگاه داده های مبتنی بر گراف، کاربرد فراگیری در زمینه های مختلف، مانند: داده کاوی شبکه های اجتماعی، مدل های زنجیره تامین و… دارند.

 

منابع این بحث و اطلاعات بیشتر

وب سایت Neo4J

این قسمت از وب سایت Neo4J

وب سایت TechTarget

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

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