در این مقاله اطلاعات کاملی را در مورد پایگاه داده Neo4j و موارد استفاده آن، به شما ارائه میکنیم. Neo4j نوعی پایگاه دادهی Graph و Open source است که با استفاده از زبان برنامه نویسی جاوا نوشته شده است. این بانک اطلاعاتی Scalability بالایی داشته و بدون Schema NoSQL است.
آن چه در این مقاله خواهید خواند:
پایگاه دادهی Graph چیست؟
گراف نمایش مجموعهای از Object ها بهصورت تصویر است که در آن برخی از جفت Object ها توسط Link به هم متصل میشوند. این نوع پایگاه داده از دو عنصر Node ها (رئوس) و Relationship ها (لبهها) تشکیلشده است.
پایگاه دادهی Graph، پایگاه دادهای است که از آن برای مدلسازی دادهها بهصورت Graph استفاده میشود. Node های نمودار، موجودیتها و Relationship ها، ارتباط این Node ها را نشان میدهد.
پایگاه دادههای معروف از نوع Graph
Neo4j یک پایگاه دادهی معروف از نوع Graph است. Oracle NoSQL Database، Orient DB، HypherGraphDB، GraphBase، InfiniteGraph و AllegroGraph ازجمله نمونههای دیگر این نوع پایگاه دادهها هستند.
چرا از پایگاه دادههای Graph استفاده کنیم؟
امروزه، بیشتر دادهها بهصورت روابط بین Object های متفاوتاند و بیشتر اوقات، رابطهی بین دادهها نسبت به خود داده ارزش بیشتری دارد. پایگاهدادههای رابطهای دادههای Highly structured را ذخیره میکنند که در آنها چندین Record، یک نوع دادهی یکسان را ذخیره میکنند، بنابراین میتوانند برای ذخیره دادههای Structured استفاده شوند و روابط بین دادهها را ذخیره نمیکنند. برخلاف سایر پایگاه دادهها، پایگاه دادههای Graph روابط و اتصالات را بهعنوان موجودیتهای First-class ذخیره میکنند.
Data model برای پایگاه دادههای Graph در مقایسه با سایر پایگاه دادهها سادهتر است و میتوان آنها را با سیستمهای OLTP استفاده کرد و ویژگیهایی مانند یکپارچگی Transactional و Operational availability را نیز ارائه میدهند.

امروزه، بیشتر دادهها بهصورت روابط بین Object های متفاوتاند و بیشتر اوقات، رابطهی بین دادهها نسبت به خود داده ارزش بیشتری دارد. پایگاهدادههای رابطهای دادههای Highly structured را ذخیره میکنند که در آنها چندین Record، یک نوع دادهی یکسان را ذخیره میکنند، بنابراین میتوانند برای ذخیره دادههای Structured استفاده شوند و روابط بین دادهها را ذخیره نمیکنند. برخلاف سایر پایگاه دادهها، پایگاه دادههای Graph روابط و اتصالات را بهعنوان موجودیتهای First-class ذخیره میکنند.
Data model برای پایگاه دادههای Graph در مقایسه با سایر پایگاه دادهها سادهتر است و میتوان آنها را با سیستمهای OLTP استفاده کرد و ویژگیهایی مانند یکپارچگی Transactional و Operational availability را نیز ارائه میدهند.
تفاوت RDBMS و Graph Database
در جدول زیر پایگاه دادههای رابطهای و پایگاه دادههای Graph مقایسه شدهاند:
Graph Database | RDBMS |
نمایش داده با Graph | نمایش داده با جدول |
نمونه موجودیتها را با Node نشان میدهد. | از Row برای نمایش نمونه موجودیتها استفاده میکند |
Properties و Value آنها | Data و Columns |
Relationships | Constraints |
Traversal | Joins |
مزایای Neo4j
این مدل پایگاه داده مزایای زیادی دارد که در ادامه به بررسی برخی از آنها پرداختهشده است:
- Flexibility – Neo4j: یک Data model انعطافپذیر ساده و درعینحال قدرتمند ارائه میدهد که با توجه به کاربردها بهراحتی قابلتغییر است.
- Real-time insight – Neo4j: نتایج را بر اساس دادههای Real-time ارائه میدهد.
- Availability بالا – Neo4j: برای برنامههای بزرگ Real-time، بسیار Available است.
- دادههای Semi structure و متصل: با استفاده از Neo4j میتوانید بهراحتی دادههای متصل و Semi structure را نشان دهید.
- Retrieval آسان: با استفاده از Neo4j، نهتنها میتوانید دادههای متصل را در مقایسه با پایگاه دادههای دیگر سریعتر نمایشن دهید، بلکه بهراحتی نیز میتوانید آنها را Retrieval (Traverse/Navigate) کنید.
- زبان Cypher query – Neo4j: با استفاده از Ascii-art syntax، یکزبان Declarative query ارائه میدهد تا نمودار را بهصورت Graph نشان دهد. دستورات این زبان توسط انسان قابلخواندن و یادگیری آن بسیار آسان است.
- بدون Join: با استفاده از Neo4j، برای Retrieval دادههای Connected/Related، نیازی به Join های پیچیده نیست زیرا بازیابی Node مجاور یا جزئیات رابطهی آن بدون استفاده از Join ها یا Index ها بسیار آسان است.
ویژگیهای Neo4j
در زیر ویژگیهای قابلتوجه Neo4j آورده شده است:
1. Data model (Flexible schema)
Neo4j از Data model ای به نام Native property graph model پیروی میکند. یک Graph شامل یکسری Node ها (Entity ها یا موجودیتها) است که این Node ها با یکدیگر متصل میشوند (توسط Relationship ها به تصویر کشیده میشوند). Node ها و Relationship ها، دادهها را در جفت key-value که بهعنوان Property شناخته میشوند ذخیره میکنند.
در Neo4j نیازی به پیروی از یک Schema ثابت نیست و طبق نیازتان میتوانید خصوصیات را اضافه یا حذف کنید. همچنین میتوانید محدودیتهایی برای Schema ایجاد کنید.
2. خواص ACID
Neo4j از قوانین کامل ACID (Atomicity، Consistency، Isolation و Durability) پشتیبانی میکند.
3. Scalability و Reliability
میتوانید با افزایش تعداد Read/Write ها و Volume، بدون تأثیر بر سرعت پردازش Query و یکپارچگی دادهها، پایگاه داده را بزرگ کنید. Neo4j همچنین از Replication برای Safety و Reliability دادهها پشتیبانی میکند.
4. Cypher Query Language
Neo4j یکزبان Declarative query قدرتمند ارائه میدهد که به Cypher معروف است و در آن برای به تصویر کشیدن Graph ها از ASCII استفاده میشود. Cypher بهراحتی قابل یادگیری است و میتواند بدون استفاده از Query های پیچیده مانند Join، برای ایجاد و Retrieve روابط بین دادهها مورداستفاده قرار گیرد.
5. برنامهی Built-in web
Neo4j یک برنامه وب مرورگر Built-in را ارائه میدهد که با استفاده از آن، میتوانید دادههای Graph خود را ایجاد کرده و برای آن ها Query بنویسید.
6. Drivers
Neo4j میتواند با موارد زیر کار کند:
- REST API: برای کار با زبانهای برنامهنویسی مانند Java، Spring، Scala و غیره.
- جاوا اسکریپت: برای کار با Framework های UI MVC مانند Node JS.
- این برنامه از دو نوع Java API پشتیبانی میکند: Cypher API و Native Java API برای توسعه برنامههای جاوا. علاوه بر این، میتوانید با پایگاه دادههای دیگری مانند MongoDB، Cassandra و غیره نیز کار کنید.
7. Indexing
Neo4j با استفاده از Apache License از Index ها پشتیبانی میکند.