mrbardia72
mrbardia72
خواندن ۳ دقیقه·۴ سال پیش

مقدمه ای بر neo4j

neo4j
neo4j

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




گراف دیتابیس ها(graph database) این امکان را برای ما فراهم می کنند که ما داده ها و رابطه ها رو در قالب ساختار گراف ذخیره کنیم .



اما در طرف دیگه ماجرا پایگاه داده ای رابطه ای هست!

در پایگاه داده های رابطه ای بستگی به نوع سناریو که داریم بعضی اوقات نیاز هست که برای پیاده سازی روابط خیلی پیچیده ، داده ها را در قالب جداول متعدد ذخیره کنیم .. این جا ما مجبور به نوشتن Query ها و Join های زیادی بودیم که بتوانیم خروجی و گزارش دلخواه مان را بسازیم . همینطور که در جریان هستید هرچقدر کوئری های ما بزرگ و پیچیده بشود و روابط بین جداول زیاد (Join) ، هزینه اجرای دستور ما (Cost of Query) بالا میرود و سرعت اجرای دستورات پایین و پایین تر ...

دوستی ها در شبکه های اجتماعی، like ها ، مدیریت follower ها و پیشنهاد دوستی های چند گانه مثالی از این روابط پیچیده برای ذخیره سازی و بازیابی در پایگاه داده های رابطه ای است .

با استفاده از امکانات گراف دیتابیس می توانیم این پیچیدگی ها را ساده کنیم .




مفاهیم اصلی Graph Database ها :

  • گره‌ها یا node - نشان دهنده موجودیت یا entitiy های ما هستند .. مثل مردم، کسب و کار ، حساب‌های کاربری  ...
  • یال‌ها یا edge - و به‌طور کلی یال‌ها وظیفه نمایش روابط را در دیتابیس بر عهده دارند. همچنین بسیاری از اطلاعات مهم در یال‌ها ذخیره می‌شوند.

چه موقع از ساختار گراف بهتره استفاده کرد ؟

  1. مواقعی که برنامه شما دارای داده ها با ساختار سلسله مراتبی است (hierarchy) .. مثل  چارت سازمانی
  2. موجودیت های شما دارای روابط پیچیده چند به چند باشد




مزیت استفاده از پایگاه داده گراف:

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

معایب استفاده از پایگاه داده گراف:

  1. در تعداد استفاده از گره ها و روابط و خواص دارای محدودیت هست
  2. از sharding پشتیبانی نمی کند.


databaseneo4j
Go Developer(gopher-academy.ir)
شاید از این پست‌ها خوشتان بیاید