معرفی و بررسی Neo4j

من ارسلان میربزرگی، می‌خواهم در این مقاله اطلاعات کاملی را در مورد Neo4j و اینکه برای چه کاری مناسب است و از آن چه استفاده‌هایی می شود با شما و به زبان ساده و غیرتخصصی صحبت کنم. Neo4j نوعی پایگاه داده‌ی Graph و Open source است که با استفاده از زبان برنامه نویسی جاوا نوشته‌شده است. این بانک اطلاعاتی Scalability بالایی داشته و بدون Schema NoSQL است.

1- پایگاه داده‌ی Graph چیست؟

گراف نمایش مجموعه‌ای از Object ها به‌صورت تصویر است که در آن برخی از جفت Object ها توسط Link به هم متصل می‌شوند. این نوع پایگاه داده از دو عنصر Node ها (رئوس) و Relationship ها (لبه‌ها) تشکیل‌شده است.
پایگاه داده‌ی Graph، پایگاه داده‌ای است که از آن برای مدل‌سازی داده‌ها به‌صورت Graph استفاده می‌شود. Node های نمودار، موجودیت‌ها و Relationship ها، ارتباط این Node ها را نشان می‌دهد.

2- پایگاه داده‌های معروف از نوع Graph

Neo4j یک پایگاه داده‌ی معروف از نوع Graph است. Oracle NoSQL Database، Orient DB، HypherGraphDB، GraphBase، InfiniteGraph و AllegroGraph ازجمله نمونه‌های دیگر این نوع پایگاه داده‌ها هستند.

3- چرا از پایگاه داده‌های Graph استفاده کنیم؟

پایگاه داده graph

امروزه، بیشتر داده‌ها به‌صورت روابط بین Object های متفاوت‌اند و بیشتر اوقات، رابطه‌ی بین داده‌ها نسبت به خود داده ارزش بیشتری دارد. پایگاه‌داده‌های رابطه‌ای داده‌های Highly structured را ذخیره می‌کنند که در آن‌ها چندین Record، یک نوع داده‌ی یکسان را ذخیره می‌کنند، بنابراین می‌توانند برای ذخیره داده‌های Structured استفاده شوند و روابط بین داده‌ها را ذخیره نمی‌کنند. برخلاف سایر پایگاه داده‌ها، پایگاه داده‌های Graph روابط و اتصالات را به‌عنوان موجودیت‌های First-class ذخیره می‌کنند.
Data model برای پایگاه داده‌های Graph در مقایسه با سایر پایگاه داده‌ها ساده‌تر است و می‌توان آن‌ها را با سیستم‌های OLTP استفاده کرد و ویژگی‌هایی مانند یکپارچگی Transactional و Operational availability را نیز ارائه می‌دهند.

4- تفاوت RDBMS و Graph Database

در جدول زیر پایگاه داده‌های رابطه‌ای و پایگاه داده‌های Graph مقایسه شده‌اند:

 

5- مزایای 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 ها بسیار آسان است.

6- ویژگی‌های Neo4j

در زیر ویژگی‌های قابل‌توجه Neo4j آورده شده است:

 Data model (Flexible schema)

Neo4j از Data model ای به نام Native property graph model پیروی می‌کند. یک Graph شامل یکسری Node ها (Entity ها یا موجودیت‌ها) است که این Node ها با یکدیگر متصل می‌شوند (توسط Relationship ها به تصویر کشیده می‌شوند). Node ها و Relationship ها، داده‌ها را در جفت key-value که به‌عنوان Property شناخته می‌شوند ذخیره می‌کنند.
در Neo4j نیازی به پیروی از یک Schema ثابت نیست و طبق نیازتان می‌توانید خصوصیات را اضافه یا حذف کنید. همچنین می‌توانید محدودیت‌هایی برای Schema ایجاد کنید.

 خواص ACID

Neo4j از قوانین کامل ACID (Atomicity، Consistency، Isolation و Durability) پشتیبانی می‌کند.

Scalability و Reliability

می‌توانید با افزایش تعداد Read/Write ها و Volume، بدون تأثیر بر سرعت پردازش Query و یکپارچگی داده‌ها، پایگاه داده را بزرگ کنید. Neo4j همچنین از Replication برای Safety و Reliability داده‌ها پشتیبانی می‌کند.

 Cypher Query Language

Neo4j یک‌زبان Declarative query قدرتمند ارائه می‌دهد که به Cypher معروف است و در آن برای به تصویر کشیدن Graph ها از ASCII استفاده می‌شود. Cypher به‌راحتی قابل یادگیری است و می‌تواند بدون استفاده از Query های پیچیده مانند Join، برای ایجاد و Retrieve روابط بین داده‌ها مورداستفاده قرار گیرد.

 برنامه‌ی Built-in web

Neo4j یک برنامه وب مرورگر Built-in را ارائه می‌دهد که با استفاده از آن، می‌توانید داده‌های Graph خود را ایجاد کرده و برای آن ها Query بنویسید.

 Driver ها

Neo4j می‌تواند با موارد زیر کار کند:

  •  REST API: برای کار با زبان‌های برنامه‌نویسی مانند Java، Spring، Scala و غیره.
  •  جاوا اسکریپت: برای کار با Framework های UI MVC مانند Node JS.
  •  این برنامه از دو نوع Java API پشتیبانی می‌کند: Cypher API و Native Java API برای توسعه برنامه‌های جاوا. علاوه بر این، می‌توانید با پایگاه داده‌های دیگری مانند MongoDB، Cassandra و غیره نیز کار کنید.

Indexing

Neo4j با استفاده از Apache License از Index ها پشتیبانی می‌کند.

 

و در آخر

وبسایت میربزرگی قصد دارد تا با ارائه مقاله‌ها و تجربه‌های کاربردی شما را در زمینه یادگیری و رفع اشکالاتتان کمک کند. در صورت وجود هرگونه سوالی به من ایمیل بزنید.

این جا قراره با هم زبان برنامه نویسی جاوا رو یاد بگیریم. اگه جواب سوالتو توی مقاله ها پیدا نکردی، میتونی بهم ایمیل بزنی تا راهنماییت کنم. اگر موضوعاتی رو پیشنهاد داری حتما برام بفرست. منتظر ایمیلتم

پیام با موفقیت ثبت شد.
خطایی رخ داده است.