Neo4j-overview
提供:Dev Guides
Neo4j-概要
Neo4jは、Javaテクノロジを使用して開発された世界有数のオープンソースグラフデータベースです。 非常にスケーラブルでスキーマフリーです(NoSQL)。
グラフデータベースとは
グラフは、オブジェクトのいくつかのペアがリンクで接続されているオブジェクトのセットの図的表現です。 ノード(頂点)と関係(エッジ)の2つの要素で構成されます。
グラフデータベースは、グラフ形式でデータをモデル化するために使用されるデータベースです。 ここでは、グラフのノードはエンティティを表し、関係はこれらのノードの関連付けを表します。
人気のあるグラフデータベース
Neo4jは人気のあるグラフデータベースです。 他のグラフデータベースは、Oracle NoSQLデータベース、OrientDB、HypherGraphDB、GraphBase、InfiniteGraph、およびAllegroGraphです。
グラフデータベースを使用する理由
今日、データのほとんどは異なるオブジェクト間の関係の形で存在し、多くの場合、データ間の関係はデータ自体よりも価値があります。
リレーショナルデータベースは、同じタイプのデータを格納する複数のレコードを持つ高度に構造化されたデータを格納するため、構造化データの格納に使用でき、データ間の関係は格納しません。
他のデータベースとは異なり、グラフデータベースは関係と接続をファーストエンティティとして保存します。
グラフデータベースのデータモデルは、他のデータベースと比較して単純であり、OLTPシステムで使用できます。 トランザクションの整合性や運用の可用性などの機能を提供します。
RDBMS対グラフデータベース
以下は、リレーショナルデータベースとグラフデータベースを比較する表です。
Sr.No | RDBMS | Graph Database |
---|---|---|
1 | Tables | Graphs |
2 | Rows | Nodes |
3 | Columns and Data | Properties and its values |
4 | Constraints | Relationships |
5 | Joins | Traversal |
Neo4jの利点
Neo4jの利点は次のとおりです。
- 柔軟なデータモデル-Neo4jは、柔軟でシンプルかつ強力なデータモデルを提供します。これは、アプリケーションや業界に応じて簡単に変更できます。
- リアルタイムの洞察-Neo4jは、リアルタイムのデータに基づいて結果を提供します。
- 高可用性-Neo4jは、トランザクションが保証された大規模なエンタープライズリアルタイムアプリケーションで高可用性を提供します。
- 接続および半構造データ-Neo4jを使用すると、接続および半構造データを簡単に表現できます。
- 簡単な検索-Neo4jを使用すると、他のデータベースと比較して、接続されたデータをより速く表現するだけでなく、簡単に検索(トラバース/ナビゲート)することもできます。
- * Cypherクエリ言語*-Neo4jは、ascii-art構文を使用してグラフを視覚的に表現する宣言クエリ言語を提供します。 この言語のコマンドは人間が読める形式であり、非常に簡単に習得できます。
- 結合なし-Neo4jを使用すると、結合またはインデックスなしで隣接ノードまたは関係の詳細を取得するのが非常に簡単なので、接続/関連データを取得するために複雑な結合を必要としません。
Neo4jの機能
Neo4jの注目すべき機能は次のとおりです-
- データモデル(柔軟なスキーマ)-Neo4jは、ネイティブプロパティグラフモデルという名前のデータモデルに従います。 ここで、グラフにはノード(エンティティ)が含まれており、これらのノードは相互に接続されています(関係によって示されています)。 ノードと関係は、プロパティと呼ばれるキーと値のペアでデータを保存します。 + Neo4jでは、固定スキーマに従う必要はありません。 要件ごとにプロパティを追加または削除できます。 また、スキーマの制約も提供します。
- * ACIDプロパティ*-Neo4jは、完全なACID(原子性、一貫性、分離、および耐久性)ルールをサポートしています。
- スケーラビリティと信頼性-クエリの処理速度とデータの整合性に影響を与えることなく、読み取り/書き込みの数とボリュームを増やすことで、データベースをスケーリングできます。 Neo4jは、データの安全性と信頼性のための*レプリケーション*のサポートも提供します。
- * Cypherクエリ言語*-Neo4jは、Cypherとして知られる強力な宣言型クエリ言語を提供します。 グラフの描画にASCIIアートを使用します。 Cypherは簡単に習得でき、Joinsなどの複雑なクエリを使用せずにデータ間の関係を作成および取得するために使用できます。
- ビルトインウェブアプリケーション-Neo4jはビルトイン* Neo4jブラウザ*ウェブアプリケーションを提供します。 これを使用して、グラフデータを作成およびクエリできます。
- ドライバー-Neo4jは以下で動作します-
- Java、Spring、Scalaなどのプログラミング言語で動作するREST API
- Node JSなどのUI MVCフレームワークで動作するJavaスクリプト。
- Javaアプリケーションを開発するために、Cypher APIとNative Java APIの2種類のJava APIをサポートしています。 これらに加えて、MongoDB、Cassandraなどの他のデータベースを使用することもできます。
- インデックス作成-Neo4jは、Apache Lucenceを使用してインデックスをサポートします。