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)で提供され、条件に従って複製、配布、ソースコードの公開、変更が認められる。