گراف یکی از روشهای ذخیره و بازیابی اطلاعات هستش که چند سالی میشه خیلی محبوب شده و در خیلی از اینترپرایس ها دارن ازش استفاده میکنند مخصوصا در شبکه های اجتماعی و هوش مصنوعی.
مهمترین مزیت گراف به نظر من این است که داده در مرحله ذخیره و بازیابی شباهت بیشتری به دنیای واقعی داره. ساختار گراف، موجودت و روابطشون رو به راحتی در خودش جا میده و تقریبا هرچیزی رو میشه با گراف مدل کرد. در مقایسه با روشهایی مثل SQL که داده رو مجبوریم normalize کنیم یا منگو که مجبوریم داده را denormalize کنیم.
یکی از پیشتازان و بهترین پیاده سازی هایی که از این سیستم دخیره و بازیابی وجود داره دیتابیس Neo4j هستش. جدید ماکروسافت هم به sql server قابلیت گراف رو اضافه کرده که زیاد مورد پسند من نبود و به شخصه باهاش کار نکردم.
درایور آفیشیال Neo4j تقریبا واسه اکثر زبانها برنامه نویسی وجود داره و اگه هم نداشته باشه میتونید با اینترفیس REST باهاش کار کنید.
این دیتابیس زبان مخصوص به خودش داره به اسم Cypher که برای ذخیره و بازیابی اطلاعات میشه ازش استفاده کرد.
دیتابیس Neo4j یک رابطه کاربری تحت وب برای اجرای دستورات Cypher و نمایش گراف و کلی کار باحال دیگه داره و چند نمونه داده آماده که من برای آموزش از همون ها استفاده خواهم کرد.
دیتابیس Neo4j را با جاوا نشوتن و بر اساس JVM هستش (اگه براتون مهمه!) و برای نصب Neo4j کافیه به این لینک برید و دانلودش کنید و نصبش کنید.
در قسمت بعدی با نمونه داده فیلم که خیلی شبیه داده های IMDB هست شروع میکنیم به آموزش گراف و Cypher .