خانه > بسترهای پردازش توزیع شده > نحوه کار و پرسوجو با Neo4j

نحوه کار و پرسوجو با Neo4j

در این بخش به نحوه کار و پرسوجو با بانک اطلاعات مبتنی بر گراف Neo4j میپردازیم. بعد از اجرا Neo4j در ویندوز یا در سیستم عامل لینوکس، در کاوشگر خود آدرس http://localhost:7474 را وارد میکنیم تا رابط کاربری برنامه نمایش داده شود.

برای کاربرانی که تازه میخواهند با آن کار کنند سندی جهت آشنایی با نحوه کار با آن ارایه می دهد که میتوان از بخش (علامت !) دسترسی پیدا کرد.

آشنایی با محیط کار Neo4j

رابط کاربری Neo4j دارای سه بخش اصلی زیر است:

Sidebar

Editor

Stream

نحوه اجرای query

Neo4jبرای مدیریت گراف از زبان query cypher استفاده می کند .برای اجرای query از ادیتور بالای صفحه استفاده می نماییم .به صورت

که query را در آن تایپ کرده بعد کلید play  را در مقابل آن کلیک نموده و یا از کلید میانبر Enter + ctrl استفاده می نماییم .

در صورت طولانی بودن  query وارد شده می توان از کلید میانبر Enter + shift برای ایجاد سطر جدید استفاده کرد .در صورتی که استفاده از یک query بیشتر باشد می توان آن را با استفاده از دکمه ستاره ذخیره کرد .برای دسترسی به query ذخیره شده از قسمت منوها آیکون ستاره را انتخاب کرده در بخش پایینی آن query مورد نظر ذخیره شده را انتخاب می کنیم .با انتخاب آن ، در ادیتور کپی می شود که می توان دوباره از آن استفاده کرد.

نحوه ایجاد گره یا نود

در Neo4J اساسا با دو مفهم سروکار داریم. -1 نودها -2 ارتباط بین نودها

باید توجه داشت که یک نود میتواند یک نود ساده ،بدون ارتباط ،برچسب و خصوصیت بوده و یا اینکه با نود یا نودهایی در ارتباط بوده و نیز دارای برچسب ها و خصوصیت هایی باشد .به عنوان مثال جهت نمایش دانش آموزان یک مدرسه و رابطه دوست بودن آنها گرافی با برچسب student می سازیم .همچنین هر نود می تواند دارای برخی خصوصیات باشد ،مانند : نام دانش آموز ، آدرس منزل دانش آموزی ، کد ملی و …

ساختار کلی ایجاد نود به صورت زیر میباشد:

create (a : Student {name : ’ali’ , address : ’tehran’ , fatherName : ’hossein’ } )

create : یک متغیر “a” و برچسب “Student” که نشان دهنده جنس نود می باشد . ک Ôدر neo4j برای کار با نود از یک متغیر دلخواه جهت دسترسی به آن استفاده می کنیم .هر نود می تواند یک یا چندین خصوصیت داشته باشد که داخل {} به صورت { مقدار خصوصیت : نام خصوصیت } تعریف می شود . یک نود حتی می تواند بدون خصوصیت هم باشد. بنابر توافق برچسب نود باید با حرف بزرگ شروع شود.

create (a:Student)

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

create a
create (a:Student)

برای ایجاد چندین نود از یک جنس میتوان از یک خط query استفاده کرد ؛به این صورت :

create (a:Student {name:’ali’}) , (b:Student {name:’hossein’})

الزم به ذکر است که در این صورت نباید برای نودها متغییر یکسانی درنظر گرفته شود .درغیر این صورت query اعمال نشده و neo4j خطا میدهد .برای

مثال کد زیر را وارد می کنیم:

create (a:Student {name:’ali’}) , (a:Student {name:’hossein’})

به همین دلیل بعد از اجرای کد بالا با خطای مواجه می شویم

برای وارد کردن چندین خصوصیت به یک نود به صورت زیر اقدام می نماییم

create (a:Student {name:’ali’ , family:’nadery’ , age:’25’})

 ایجاد رابطه بین نودها

برای ایجاد رابطه بین نودها به دو صورت می توان اقدام کرد. -1 هنگام ایجاد نودها ، رابطه های آنها را نیز تعریف کنیم. -2 بعد از ایجاد نود ها برایشان رابطه تعریف می نماییم.

برای مورد اول به این صورت عمل می کنیم:                                                  ,

create (a:Student),(b:Student),(a)-[:friend_of]->(b)

لازم  به ذکر است که برای ایجاد رابطه ، برای آن باید یک type به صورت name] type relation [: انتخاب کنیم .در غیر این صورت با خطای مواجه خواهیم شد:

علاوه براین می توان برای رابطه نیز متغییر همانند تعریف متغیر برای نود ،تعریف کنیم

create (a:Student),(b:Student),(a)-[r:friend_of]->(b)

همچنین می توان برای هر رابطه خصوصیت های دیگری همانند اضافه کردن خصوصیت برای نود ، اضافه کرد

create (a:Student),(b:Student),(a)-[r:friend_of{year:’2014′}]->(b)

 برای مورد دوم فرض می کنیم که نودهای a و b با مشخصات زیر ساخته شده است

(a:Student {name:’ali’})
(b:Student {name:’hossein’})

 حال با دستور match ( در بخش های بعد در مورد این دستور توضیح خواهیم داد )نودها را انتخاب کرده و برایشان رابطه تعریف می کنیم

match (a:Student {name:’ali’}) , (b:Student {name:’hossein’})
(a)-[:friend_of]->(b)

نکته :علامت فلش در دستور ایجاد رابطه نشان دهنده جهت رابطه می باشد که می تواند جهت آن برعکس باشد.  -[]-> و یا  <-[]-

انتخاب نود

برای انتخاب نود یا نودها از دستور match استفاده می کنیم که همانند دستور select در mysql می باشد .بعد انتخاب نود یا نودها می توان مشخصات

آنها ، رابطه ها و مشخصات آنها را تغییر ، پاک و یا نشان داد و یا حتی برای آنها رابطه ایجاد کرد.

نودهایی رو انتخاب کرده ، برایشان رابطه تعریف می کند:

match (a:Student {name:’ali’}) , (c:Student) , (g:Student) , (u:Student)

create (a)-[:friend-of]->(b),
(g)-[:friend-of]->(c)

نودهایی را انتخاب ، خصوصیت یکی از آنها را بروز می نماییم

match (a:Student {name:’ali’}) , (c:Student) , (g:Student) , (u:Student)

Set a.name=’nima’

نکته :در مورد دستور set در ادامه توضیح خواهیم داد

نودی را انتخاب ، آن را پاک می نماییم

match (a:Student {name:’ali’})

delete a

نکته :در مورد دستور delete در ادامه توضیح خواهیم داد نود یا نودهایی را انتخاب کرده ، آنها را نمایش می دهیم

match (a:Student {name:’ali’})-[r]-> (c:Student)

return a

برای نشان دادن کل گراف به صورت زیر عمل می کنیم

match(a:Student )
return a

دستور delete

از این دستور می توان برای پاک کردن نود(ها )و رابطه(ها )استفاده کرد

match (a:Student {name:’ali’})
delete a
match (a:Student {name:’ali’}) –[r]-> (b:Student {name:’hossein’})
delete r

نکته :الزم به ذکر است در صورتی که نودی دارای رابطه ای باشد نمی توان آن را حذف کرد و درصورت اجرای query با خطای مواجه می شویم

بنابراین قبل از پاک کردن نود مورد نظر ، اول باید رابطه یا رابطه هایی را که با نودهای دیگر دارد پاک کنیم بعد اقدام به پاک کردن خود نود نماییم.

match (a:Student {name:’ali’}) –[r]-> (b:Student {name:’hossein’})
delete r ,a

دستور set

این دستور برای برورز رسانی مشخصات نودها و رابطه ها می باشد

match (a:Student {name:’ali’})
set a.name=’nima’ , a.family=’saeedi’

 دستورwhere

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

Match (a:Student)
where a.name=’ali’
Delete a

برای اضافه کردن فیلتر بیشتر می توان از دستور and و یا or نیز در دستور where استفاده کرد

Match (a:Student) , (b:Student)
Where a.name =’ali’ and b.name=’kazem’
Create (b)-[:friend-of]->(b)

Create  نمایش گراف

برای مشاهده گراف ایجاد شده در منوی کناری سمت چپ گزینه شکل لگوی Neo4j را کلیک کرده در بخش labels Node برچسب مورد نظر را انتخاب می کنیم .در سمت راست صفحه پنجره ای باز می شود که حاوی گراف ایجاد شده می باشد. هر پنجره باز شده در صفحه قابلیت بسته شدن نیز دارد .برای این منظور وقتی که اشاره گر ماوس برروی پنجره باز شده باشد در باالی سمت راست پنجره علامت سطل زباله نشان داده می شود که با کلیک آن پنجره مربوطه بسته می شود.

جهت مشاهده مشخصات یک نود یا رابطه برروی آن کلیک می کنیم ، آنگاه در سمت راست باالی صفحه کادر سیاه رنگی ظاهر می شود که دارای دو زبانه می باشد .در زبانه اول مشخصات نود یا رابطه ایجاد شده نشان داده می شود و در زبانه دوم می توان ظاهر آن از جمله رنگ نود ، اندازه ظاهری نود ، برچسبی که در داخل نود نشان داده شود را می توان تعیین کرد.

پاسخی بگذارید

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