Neo4j情報
Neo4jとは
Neo4j(ネオフォージェイ)とは、グラフ構造のデータモデル(※1)を扱うデータベース管理システム(DBMS)であり、グラフデータベース(※2)に分類されます。
Neo4j(ネオフォージェイ)は、グラフデータベースの中で最も利用されている製品の一つであり、アメリカのNeo Technology社によって開発が行われています。開発言語はJavaです。
Neo4j(ネオフォージェイ)は、RDBMSのパフォーマンスの問題を解決するために2000年から開発が始まり、2002年に初期バージョンがリリースされ、2007年にオープンソース化、2010年にバージョン1.0がリリースされています。
Neo4j(ネオフォージェイ)は、スキーマレスなデータ構造、開発の容易性、ノード単位のACIDトランザクションなどが評価されており、グラフデータに適したデータベースアーキテクチャとして、世界中で注目を集めています。
アメリカIDG傘下のIT情報サイトInfoWorldが主催する、優れたハードウェア、ソフトウェア、開発ツール、クラウドサービスを表彰する「InfoWorld's 2014 Technology of the Year Award」で選出されるなど、すでに欧米では高い評価を得ているNeo4j(ネオフォージェイ)ですが、今後日本でも本格的な導入が進んでいくことが期待されています。
- グラフ構造のデータモデルとは、最小単位である「ノード」と、ノード間の「関係性」を持つようなデータ構造のことです。
- グラフデータベースはNoSQLの一種であり、グラフ理論を基に、ノードおよびノード間の関係性を扱うことができます。グラフデータベースは、データを表形式で保存するリレーショナルデータベースと異なり、複雑な関係性を基にしたデータ処理ができることが大きな特徴です。また、スキーマ(テーブル定義)が必要ないことも特徴です。ノードの属性を複雑な階層でも管理することができるうえ、クエリの作成が容易である、GUIツールが充実しているなどの理由から近年注目を集めています。
主な特徴
Neo4jの主な特徴は以下の通りです。
-
堅牢なトランザクション
Neo4jはACID準拠(原子性、一貫性、独立性、永続性)のトランザクションをサポートしており、常にデータの整合性を保証します。 -
柔軟なスキーマ
Neo4jはプロパティグラフモデルと呼ばれるモデル化手法に基づいており、自然に近い形でデータをモデル化することができます。 -
高性能な検索
Neo4jは一秒に数百万単位のデータを検索するのに最も高速であるindex-free adjacency(グラフのようにお互いに点と線で繋がっているデータの性質)を持っているため、データセットのボリュームや複雑さに関係なく、一定のパフォーマンスを保つことができます。 -
クエリ言語
Neo4jではCypherという宣言型のグラフクエリ言語を使用します。Cypherは直感的に理解と習得ができ、SQLよりもコード量を減らすことができます。 -
主要な言語とフレームワークに対応
Neo4jはJava、C#、Python、JavaScript等の主要な言語向けのドライバを公式にサポートしています。また、Neo4jコミュニティではSpring Data、Django ORM、Laravel、JDBC等の主要なフレームワークもサポートしています。 -
クラウド環境に対応
Neo4jはAmazon Web Services(AWS)、Microsoft Azure、Google Cloud Platformなどのクラウド環境でも利用可能です。また、公式のDockerイメージを使用すれば簡単に導入できます。 -
マルチデータベース
Neo4j 4.0 からはクラスタ毎に複数のデータベースを扱うことができるマルチデータベースに対応しました。 -
リアクティブアーキテクチャ
Neo4j 4.0 からはリアクティブアーキテクチャを導入し、応答性、弾力性、堅牢性を高めました。 -
自律したクラスタリング
Neo4j 5.0からは自律クラスタリングが導入されており、データベースの追加・削除を指令するだけで、プライマリ、セカンダリインスタンスを自動で分散し、様々なトポロジでデータベースを作成します。
リレーショナルデータベースとの比較 | ||
---|---|---|
リレーショナルデータベース |
Neo4j |
|
データストレージ |
データは事前に定義された行と列を持つ表に分割されるため、クエリの効率性を損ないます。 |
index-free adjacencyを持つグラフストレージ構造により、トランザクションやリレーションシップの処理がより高速になります。 |
データモデル |
データモデルは論理モデルから物理モデルに変換する必要があります。データタイプとソースを事前に知っておく必要があるため、変更にはコストがかかります。 |
データモデルは論理モデルと物理モデルが一致しており柔軟性があります。データタイプとソースはいつでも追加・変更することができ、開発期間が大幅に短縮されます。 |
クエリ性能 |
データ処理のパフォーマンスは、結合(またはリレーションシップ)の数と深さに影響を受けます。 |
グラフ処理は、リレーションシップの数と深さに関わらず、レイテンシが低く、リアルタイムのパフォーマンスを保証します。 |
クエリ言語 |
SQL:結合の数が増えるほど複雑になるクエリ言語。 |
Cypher:リレーションシップクエリを記述するための最も効率的で表現力豊かな方法を提供するグラフクエリ言語。 |
トランザクションサポート |
ACIDトランザクションをサポート。 |
ACIDトランザクションをサポート。 |
データセンター効率 |
サーバの統合は可能ですが、スケールアップにはコストがかかります。 また、スケールアウトも、購入、エネルギーの使用、および管理時間の面でコストがかかります。 |
データとリレーションシップは、一緒に格納されており、複雑さと規模が拡大するにつれてパフォーマンスが向上します。これにより、サーバの統合とハードウェアの非常に効率的な使用が実現します。 |
ユースケース
-
セキュリティの強化
従来の不正アクセスの検出は、ユーザアカウント・IPアドレス・利用デバイスなど個々のデータポイントに対して検出を行っています。 Neo4jでは、個々のデータポイントのリレーションシップに対する検出も行うことが可能であるため、従来の検出方法では、検知できなかった不正アクセスの検知を可能にします。 -
検索機能の強化
グラフベースの検索機能を利用することで、キーワード検索の場合、追加のキーワードを入力せずに関連する情報を表示することが可能です。
動作環境
Neo4jは以下の環境で動作します。
※Neo4j 5.x の場合
-
サポートされているプラットフォーム
物理、仮想、コンテナに関わらず、x86_64 およびARM アーキテクチャのシステムでサポートされます。 - ハードウェア
個人使用およびソフトウェア開発の場合 | |
---|---|
CPU |
最低intel x86-x64 Core i3。Intel Core i7またはAMD x86-x64、Mac ARM を推奨 |
メモリ |
最小2GB。16GB またはそれ以上を推奨 |
ストレージ |
最小10GB SATA。SATAExpressまたはNVMeを搭載したSSDを推奨。 |
クラウド環境の場合 | |
CPU |
最低2vCPU。16以上を推奨(可能であればXeon processor) |
メモリ |
最小2GB。サイズはワークロードによって異なります。場合により使用するグラフのサイズにあうメモリを備えたインスタンスを使用することを推奨。 |
ストレージ |
最小10GB ブロックストレージ。NVMe SSDを推奨。ストレージサイズはデータベースのサイズに依存します。 |
オンプレミス環境サーバの場合 | |
CPU |
Intel/AMD x86-x64。ARM64 |
メモリ |
最小8GB。サイズはワークロードによって異なります。場合により使用するグラフのサイズにあうメモリを備えたインスタンスを使用することを推奨。 |
ストレージ |
5000 IOPS を超える RAID/SAN または SSD。NVMe SSDを推奨。ストレージサイズはデータベースのサイズに依存します。 |
-
ソフトウェア
Neo4jインスタンスを実行するためには、互換性のあるJava仮想マシン(JVM)がインストールされている必要があります。Neo4j 3.x は Java 8、Neo4j 4.x では Java 11 が必要です。
個人使用およびソフトウェア開発の場合 | |
---|---|
OS種別 |
サポートされるJDK |
MacOS 11、12 |
ZuluJDK17 |
Ubuntu Desktop 22.04以上 |
OpenJDK17、OracleJDK17、ZuluJDK17 |
Debian 11 |
OpenJDK17、OracleJDK17、ZuluJDK17 |
SuSE Enterprise Desktop 15 |
OpenJDK17、OracleJDK17 |
Windows 10、11 |
OracleJDK17、ZuluJDK17 |
クラウド環境およびオンプレミスサーバー環境の場合 | |
Ubuntu Server 16.04、18.04、20.04、22.04 |
OpenJDK17、OracleJDK17、ZuluJDK17 |
Debian 11 |
OpenJDK17、OracleJDK17、ZuluJDK17 |
Red Hat Enterprise Linux Server 8.6、8.8、9.0 |
Red Hat OpenJDK17、OracleJDK17、ZuluJDK17 |
CentOS Stream 8、9 |
OpenJDK17、OracleJDK17、ZuluJDK17 |
Amazon Linux 2022 AMI |
Amazon Corretto 17、OracleJDK17 |
Windows Server 2016、2019、2022 |
OracleJDK17、ZuluJDK17 |
Neo4jのライセンス
Neo4j(ネオフォージェイ)のコミュニティ版のライセンスは、GNU General Public License(GPLv3.0)です。
ソフトウェアのコピーや配布、ソースコードの公開を原則として、ソースコードの自由な改変も認められています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Redis
レディス。キーバリュー型NoSQLデータベース 。スキーマレスに注目が集まるNoSQLデータベースです。