Neo4j-概要

Neo4jは、Javaテクノロジを使用して開発された世界をリードするオープンソースのグラフデータベースです。非常にスケーラブルでスキーマフリー(NoSQL)です。

グラフデータベースとは何ですか?

グラフは、オブジェクトのペアがリンクで接続されているオブジェクトのセットを図で表したものです。これは、ノード(頂点)と関係(エッジ)の2つの要素で構成されています。

グラフデータベースは、データをグラフ形式でモデル化するために使用されるデータベースです。ここでは、グラフのノードはエンティティを表し、関係はこれらのノードの関連付けを表します。

人気のグラフデータベース

Neo4jは人気のあるグラフデータベースです。その他のグラフデータベースは、Oracle NoSQL Database、OrientDB、HypherGraphDB、GraphBase、InfiniteGraph、およびAllegroGraphです。

なぜグラフデータベースなのか?

現在、ほとんどのデータは異なるオブジェクト間の関係の形で存在し、多くの場合、データ間の関係はデータ自体よりも価値があります。

リレーショナルデータベースは、同じタイプのデータを格納する複数のレコードを持つ高度に構造化されたデータを格納するため、構造化データの格納に使用できますが、データ間の関係は格納されません。

他のデータベースとは異なり、グラフデータベースは関係と接続をファーストクラスのエンティティとして保存します。

グラフデータベースのデータモデルは他のデータベースに比べて単純であり、OLTPシステムで使用できます。これらは、トランザクションの整合性や運用上の可用性などの機能を提供します。

RDBMS対グラフデータベース

以下は、リレーショナルデータベースとグラフデータベースを比較した表です。

シニア番号 RDBMS グラフデータベース
1 テーブル グラフ
2 ノード
3 列とデータ プロパティとその値
4 制約 関係
5 参加する トラバーサル

Neo4jの利点

Neo4jの利点は次のとおりです。

  • Flexible data model − Neo4jは、アプリケーションや業界に応じて簡単に変更できる、柔軟でシンプルかつ強力なデータモデルを提供します。

  • Real-time insights − Neo4jは、リアルタイムデータに基づいた結果を提供します。

  • High availability − Neo4jは、トランザクションが保証された大企業のリアルタイムアプリケーションで高可用性を実現します。

  • Connected and semi structures data − Neo4jを使用すると、接続された半構造化データを簡単に表すことができます。

  • Easy retrieval − Neo4jを使用すると、他のデータベースと比較して、接続されたデータをより速く表現できるだけでなく、簡単に取得(トラバース/ナビゲート)することもできます。

  • Cypher query language− Neo4jは、アスキーアート構文を使用してグラフを視覚的に表現するための宣言型クエリ言語を提供します。この言語のコマンドは人間が読める形式であり、非常に簡単に習得できます。

  • No joins − Neo4jを使用すると、結合やインデックスなしで隣接ノードまたは関係の詳細を取得するのが非常に簡単であるため、接続/関連データを取得するために複雑な結合を必要としません。

Neo4jの機能

以下はNeo4jの注目すべき機能です-

  • Data model (flexible schema)− Neo4jは、ネイティブプロパティグラフモデルという名前のデータモデルに従います。ここで、グラフにはノード(エンティティ)が含まれており、これらのノードは相互に接続されています(関係によって示されています)。ノードとリレーションシップは、プロパティと呼ばれるキーと値のペアでデータを格納します。

    Neo4jでは、固定スキーマに従う必要はありません。要件に応じてプロパティを追加または削除できます。また、スキーマの制約も提供します。

  • ACID properties − Neo4jは、完全なACID(原子性、一貫性、分離、および耐久性)ルールをサポートします。

  • Scalability and reliability−クエリの処理速度とデータの整合性に影響を与えることなく、読み取り/書き込みの数とボリュームを増やすことで、データベースを拡張できます。Neo4jは、replication データの安全性と信頼性のために。

  • Cypher Query Language− Neo4jは、Cypherと呼ばれる強力な宣言型クエリ言語を提供します。グラフの描写にASCIIアートを使用しています。暗号は習得が容易で、結合などの複雑なクエリを使用せずにデータ間の関係を作成および取得するために使用できます。

  • Built-in web application −Neo4jは組み込みを提供します Neo4j Browserウェブアプリケーション。これを使用して、グラフデータを作成およびクエリできます。

  • Drivers − Neo4jは以下で動作します−

    • Java、Spring、Scalaなどのプログラミング言語で動作するRESTAPI。

    • NodeJSなどのUIMVCフレームワークと連携するJavaスクリプト。

    • Javaアプリケーションを開発するために、CypherAPIとNativeJavaAPIの2種類のJavaAPIをサポートしています。これらに加えて、MongoDB、Cassandraなどの他のデータベースを操作することもできます。

  • Indexing − Neo4jは、ApacheLucenceを使用してインデックスをサポートします。