トップ OSS紹介 Neo4j

Neo4j

NRIのOpenStandiaが提供するNeo4j最新情報

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
    サポート対象

    Redis

    レディス。キーバリュー型NoSQLデータベース 。スキーマレスに注目が集まるNoSQLデータベースです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。