یادداشت خواندن
The Practitioner's Guide to Graph Data از یک تغییر ساده شروع میکند: بعضی مسئلهها را نمیشود فقط با جدول خوب دید.
گراف وقتی مفید میشود که خود رابطه بخشی از مسئله باشد: پیشنهاد محتوا، کشف تقلب، تحلیل شبکه، یا فهمیدن اینکه چند موجودیت چطور روی هم اثر میگذارند. کتاب همین تغییر نگاه را قدمبهقدم باز میکند.
تغییر نگاه
در مدل جدولی، رابطه معمولاً چیزی است که با join دوباره ساخته میشود. در مدل گراف، رابطه خودش بخشی از داده است.
این تفاوت ساده به نظر میرسد، اما روی طراحی query، storage و حتی زبان محصول اثر میگذارد. اگر سؤال اصلی این باشد که «این چیزها چطور به هم وصلاند؟»، گراف میتواند مدل طبیعیتری باشد.
چه چیزی از کتاب میماند
کتاب از مفاهیم پایه شروع میکند و به کاربردهای عملی نزدیک میشود: گره، یال، traversal، الگوریتمهای مسیر، recommendation، تحلیل شبکه و طراحی query.
برای من نکتهی مهم این است که گراف فقط ابزار database نیست. یک روش فکرکردن دربارهی مسئله است. گاهی بعد از این مدلسازی، شاید هنوز implementation با relational database کافی باشد. اما وقتی رابطهها زیاد، عمیق یا queryمحور میشوند، استفاده از graph database منطقیتر میشود.
trade-off
گراف راهحل جادویی نیست. اگر دادهی اصلی ساده و transactionمحور است، اضافهکردن graph database ممکن است فقط operational cost بسازد. ارزشش وقتی دیده میشود که رابطهها هستهی مسئله باشند، نه تزئین مدل داده.
برای همین، سؤال خوبی که کتاب یادآوری میکند این است:
آیا مسئله واقعاً رابطهمحور است؟
اگر جواب روشن نیست، بهتر است اول مدل ذهنی گراف را روی کاغذ امتحان کرد، پیش از اینکه زیرساخت جدید وارد سیستم شود.
منابع
- O’Reilly: The Practitioner's Guide to Graph Data
