1. HOME
  2. ブログ
  3. Neo4j
  4. グラフデータベースとは

BLOG

ブログ

Neo4j

グラフデータベースとは

非常に簡単に言うとグラフデータベースは、データ間の関係性を、データ自体と同様、重要なものとして扱うよう設計されたデータベースです。グラフデータベースは、事前に定義したモデルに、制限されることなくデータを保存することができます。それどころか、データは最初に(ホワイトボード等に)描き出されたように格納され、個々のエンティティが他のエンティティとどのように接続しているか、他のエンティティとどのように関連しているかを示してます。

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

私たちはつながった世界に住んでいます!私たちの周りには接続されていない単独の情報はなく、豊富に接続されたドメイン情報があります。関係性をネイティブに取り込むデータベースだけが、接続を効率的に格納、処理、および問い合わせできます。他のデータベースは、問い合わせ時に負荷がかかるJOIN操作によって関係性を計算処理しますが、グラフデータベースはモデル内のデータと共に接続情報も格納します。

ネイティブグラフデータベースにあるノードやリレーションシップにアクセスすることは、効率的で、一定時間の操作でコアごとに毎秒数百万もの接続を迅速に走査することができます。

データセットの合計サイズに関係なく、グラフデータベースは関連性の高いデータと複雑なクエリの管理に優れています。パターンと一連の開始点だけを使用して、グラフデータベースは、これらの最初の開始点周辺にある隣接データを探索し、何百万のノードとリレーションシップからの情報を収集および集約します。検索範囲外のデータは探索せず、そのままにしておきます。

プロパティグラフモデル

ほとんどのテクノロジーと同様に、グラフデータベースの主要コンポーネントを構成する方法について、いくつかのアプローチがあります。そのアプローチの1つが、データがノードとリレーションシップ、およびプロパティ(ノードまたはリレーションシップに格納されているデータ項目)として編成されているプロパティグラフモデルです。

このモデルの詳細については、開発ガイドのデータモデリングのセクションで説明しますが、ここでは、プロパティグラフモデルを構成するコンポーネントについて簡単に定義します。

ノードはグラフ内のエンティティです。プロパティと呼ばれる属性(キーと値のペア)をいくつでも保持できます。ノードには、ドメイン内でさまざまな役割を表すラベルを付加できます。特定のノードのラベルは、メタデータ(インデックスや制約情報など)を付ける場合もあります。

リレーションシップによって、2つのノードエンティティ間に、名前が付いた、意味的に関連のある接続ができます。(例:Employee WORKS_FOR Company)リレーションシップには、常に方向、タイプ、開始ノード、および終了ノードがあります。ノードと同様に、リレーションシップもプロパティを持つことができます。多くの場合、リレーションシップには、重みやコスト、距離、評価、時間間隔、強度などの定量的なプロパティを付けます。リレーションシップが効率的に格納されるため、2つのノードはパフォーマンスを犠牲にすることなく、任意の数またはタイプのリレーションシップを共有できます。リレーションシップはどちらかの向きで格納されますが、常にどちらの方向にも効率的に移動できます。

プロパティグラフモデルの構成要素

Neo4jとは

Neo4jは、オープンソースのNoSQLネイティブグラフデータベースです。アプリケーションにACID準拠のトランザクションバックエンド処理を提供します。最初の開発は2003年に始まりましたが、2007年からは一般に公開されています。JavaとScalaで書かれたソースコードは、GitHub、または、ユーザーフレンドリーなデスクトップアプリケーションのダウンロードによって無料で利用できまます。Neo4jにはデータベースのCommunity版とEnterprise版の両方があります。Enterprise版には、Community版が提供するすべての機能に加えて、バックアップ、クラスタリング、フェイルオーバー機能などの追加のエンタープライズ要件が含まれています。

Neo4jは、プロパティグラフモデルをストレージレベルまで効率的に実装するため、ネイティブグラフデータベースと呼ばれます。つまり、データはホワイトボードに表示されているのと同じように格納され、データベースはポインタを使用してグラフを移動や走査します。また、グラフ処理やインメモリライブラリとは対照的に、Neo4jは、ACIDトランザクション準拠、クラスタサポート、ランタイムフェイルオーバーなどの完全なデータベース特性も備えているため、運用シナリオでのデータの使用にも適しています。

次にあげる特定の機能は、開発者やアーキテクト、DBAの間で、Neo4jが非常に人気です。

  • Cypher。SQLに似ているが、グラフ用に最適化された宣言型クエリ言語。現在、openCypherプロジェクトによって、SAP HANA GraphやRedis graphなどの他のデータベースも使われています。
  • ノードとリレーションシップの効率的な表現により、深さと幅の両方を表す大きなグラフの一定時間の走査。中程度のハードウェアで何十億ものノードへのスケールアップを可能にします。
  • 時間の経過とともに適応できる柔軟なプロパティグラフのスキーマ。これによりビジネスニーズが変化したときに、後で新しいリレーションシップを具体化して追加し、ドメインデータをショートカットおよび高速化できます。
  • Java、JavaScript、.NET、Pythonなど、一般的なプログラミング言語のドライバ。
Neo4jの概要

Neo4jのユースケース

Neo4jは、金融サービス、政府、エネルギー、テクノロジー、小売、製造業など、ほぼすべての業界で何千もの企業や組織によって今日使用されています。技術を取り巻く活発で活発なコミュニティは、開発者や企業向けの製品とサービスの向上に引き続き役立っています。

本記事は、次のリンクの記事を翻訳(一部、解釈を加えて訳)しています。記事の正確性、翻訳の正確性については保証しませんので、ご了解の上、ご自身のリスク・ご判断でご利用ください:https://neo4j.com/developer/graph-database/

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


関連記事