Neo4jの概要 - 主な特徴と動作環境

Neo4jの概要

Neo4jは、グラフ構造のデータモデル1を扱うデータベース管理システム(DBMS)であり、グラフデータベース2に分類される。

Neo4jは最も広く利用されているグラフデータベースの一つである。RDBMSの性能上の課題を解決するため2000年に開発が始まり、2002年に初期版が公開された。2007年にオープンソース化され、2010年にバージョン1.0がリリースされた。実装言語はJavaである。

スキーマレスなデータ構造、開発の容易さ、ACIDトランザクションなどが評価され、グラフデータに適したデータベースアーキテクチャとして世界的に注目されている。InfoWorld’s 2014 Technology of the Year Awardにも選出されている。

Neo4jの主な特徴

  • 強力なトランザクション
    • 原子性、一貫性、分離性、永続性を備えたACID準拠のトランザクションにより、データの整合性を保つ。
  • 柔軟なスキーマ
    • プロパティグラフモデルに基づき、自然な形でデータをモデル化できる。
  • 高性能なトラバーサル
    • Index-free adjacencyにより、グラフの規模や複雑さに左右されにくい高速なトラバーサルを実現する。
  • クエリ言語
    • 宣言型グラフクエリ言語Cypherを使用する。直感的で、SQLより少ないコードで記述できる場合が多い。
  • 主要な言語とフレームワークへの対応
    • Java、C#、Python、JavaScript用の公式ドライバーを提供する。コミュニティはSpring Data、Django ORM、Laravel、JDBCなども支援する。
  • クラウド対応
    • AWS、Microsoft Azure、Google Cloud Platformで利用でき、公式Dockerイメージで容易に導入できる。
  • マルチデータベース
    • Neo4j 4.0以降は、クラスターごとに複数のデータベースを扱える。
  • リアクティブアーキテクチャ
    • Neo4j 4.0以降はリアクティブアーキテクチャによって応答性、弾力性、耐障害性を高めている。

リレーショナルデータベースとの比較

リレーショナルデータベース Neo4j
データストレージ データを定義済みの行と列を持つテーブルに分割するため、接続データのクエリ効率が低下することがある。 Index-free adjacencyを持つグラフストレージにより、トランザクションと関係の処理が高速になる。
データモデル 論理モデルを物理モデルへ変換する必要があり、型やソースを事前に把握するため変更コストが高い。 論理モデルと物理モデルが一致し、型やソースを随時追加・変更できる。
クエリ性能 JOINや関係の数と深さに影響される。 関係の数や深さにかかわらず低遅延のグラフ処理を提供する。
クエリ言語 SQLはJOINが増えるほど複雑になる。 Cypherは関係クエリを表現力豊かに記述できる。
トランザクション ACIDトランザクションをサポートする。 ACIDトランザクションをサポートする。
データセンター効率 統合は可能だが、スケールアップとスケールアウトのコストが高い。 データと関係をまとめて保存し、効率的なサーバー統合とハードウェア利用を可能にする。

Neo4jのユースケース

  • セキュリティの強化
    • 従来はアカウント、IPアドレス、端末など個別のデータ点を検査する。Neo4jはそれらの関係も分析し、従来手法が見逃すパターンを検出できる。
  • 検索機能の強化
    • グラフベースの検索では、追加のキーワードを入力しなくても関連情報を表示できる。

Neo4jの動作環境

以下はNeo4j 4.xの要件である。

対応プラットフォーム

物理、仮想、コンテナを問わずx86_64アーキテクチャをサポートする。

ハードウェア

個人利用および開発環境:

項目 仕様
CPU Intel Core i3以上、Core i7推奨
メモリ 2 GB以上、16 GB以上推奨
ストレージ 10 GB SATA以上、SATA ExpressまたはNVMe SSD推奨

クラウド環境:

項目 仕様
CPU 2 vCPU以上、16以上推奨。可能ならXeon
メモリ 2 GB以上。実際の要件はワークロードとグラフサイズによる
ストレージ 10 GBブロックストレージ以上、NVMe SSD推奨。容量はDBサイズによる

オンプレミスサーバー:

項目 仕様
CPU Intel Xeonプロセッサー
メモリ 8 GB以上。実際の要件はワークロードとグラフサイズによる
ストレージ SATA 7.2K RPM 6 Gbps以上、NVMe SSD推奨。容量はDBサイズによる

ソフトウェア

互換性のあるJVMが必要である。Neo4j 3.xはJava 8、Neo4j 4.xはJava 11を必要とする。

個人利用および開発環境:

OS バージョン 対応JDK
macOS 10.14以降 Zulu JDK 11
Ubuntu Desktop 16.04以降 OpenJDK 11、Oracle JDK 11、Zulu JDK 11
Debian 9以降 OpenJDK 11、Oracle JDK 11、Zulu JDK 11
SUSE 15以降 Oracle JDK 11
Windows 10 Oracle JDK 11、Zulu JDK 11

クラウド環境:

OS 対応JDK
Ubuntu Server 16.04以降 OpenJDK 11、Oracle JDK 11、Zulu JDK 11
Red Hat Enterprise Linux Server 7.5以降 Red Hat OpenJDK 11、Oracle JDK 11、Zulu JDK 11
CentOS Server 7.7 OpenJDK 11
Amazon Linux 2 AMI Amazon Corretto 11、OpenJDK 11、Oracle JDK 11
Windows Server 2016以降 Oracle JDK 11、Zulu JDK 11

Neo4jのライセンス

Neo4j Community EditionはGNU General Public License(GPLv3.0)で提供され、条件に従って複製、配布、ソースコードの公開、変更が認められる。

Neo4jの参考情報


  1. グラフ構造のデータモデルとは、最小単位であるノードと、ノード間のリレーションシップからなるデータ構造である。 ↩︎

  2. グラフデータベースはグラフ理論を基礎とするNoSQLデータベースの一種である。テーブルに保存するリレーショナルデータベースとは異なり、複雑な関係に基づいてデータを処理できる。固定スキーマが不要で、複雑な階層のプロパティを管理でき、表現力の高いクエリやGUIツールを利用できる。 ↩︎