1. HOME
  2. Neo4j
  3. Neo4jとRDBの比較

Neo4j

グラフデータベース

Neo4j 対 他のDBの比較

他のデータベースを否定するものではありません。それぞれ適切な使用があり、最適な分野があります。しかし、企業がデータ間の関係性から価値を引き出したい時は、Neo4jが役に立ちます。

世界をリードするグラフデータベース(=Neo4j)が、従来のリレーショナルデータベース(RDB。OracleタイプのDB)や他のNoSQLデータストアとどのように異なるかを説明します:

 

RDBとの比較

RDB(OracleタイプのDB)

Neo4j(ネイティブ・グラフデータベース)

データ保存方法 事前に定義され固定されている行と列からなるテーブルへデータを格納する。各テーブル間でキーを用いて、異なるテーブルに含まれるデータを関係付ける。テーブル間を跨ぐデータ検索においてはクエリ効率が悪くなります。 隣接ノードにインデックス計算なく移動できる特性(インデックス・フリー・アジェンシー)をもつグラフとしてのデータ保持形態により、関係性の検索が高速に可能となります。
データ・モデリング データベースモデルは、モデル設計のプロが、論理モデルから物理モデルに変換する必要があります。データ型とソースは事前にわかっている必要があるため、どのような変更も実装に数週間のダウンタイムを必要とします。 論理モデルと物理モデルの間が一致するホワイトボード・フレンドリーなフレキシブルなデータモデル。 データ型とソースはいつでも追加または変更できるため、開発期間が大幅に短縮され、アジャイルな反復が可能になります。
クエリのパフォーマンス データ処理のパフォーマンスは、JOINの数と深さによって影響を受けます。 グラフ処理は、関係性の数や深さに関係なく、待ち時間ゼロとリアルタイムパフォーマンスを保証します。
クエリ言語 SQL: テーブルをJOINの数が増えるにつれて複雑になるクエリ言語。 Cypher: 関係性を検索するための最も効率的で表現力豊かな方法を提供するネイティブグラフクエリ言語。
トランザクション・サポート エンタープライズアプリケーションに必要な一貫性と信頼性のあるデータのためのACIDトランザクションサポート。 RDB同様、完全で一貫性を保つACID性があります。これは、常に稼働しているグローバル企業アプリケーションの要件も完全に充します。
プロセスのスケール性 レプリケーションによるスケールアウトとアーキテクチャのスケールアップは可能ですが、コストが高い。複雑なデータの関係性をスケールさせることは難しいです。 グラフモデルは、本質的にパターンベースのクエリでありスケールします。 スケールアウトアーキテクチャは、レプリケーションによってデータの整合性を維持します。 IBM POWER8およびCAPI Flashシステムにより大規模なスケールアップが可能です。
データセンター運用での効率性 サーバー統合は可能ですが、スケールアップアーキテクチャーにはコストがかかります。 スケールアウトアーキテクチャは、購入時、エネルギー使用、および管理時間の点で高価です。 データとデータの関係性は、グラフ・ネイティブに保存されます。複雑さと規模が大きくなっても、パフォーマンスが保たれます。サーバー統合を可能とし、ハードウェアの効率的運用を可能とします。

 

他のNoSQL DBとの比較

他のNoSQL DB

Neo4j(ネイティブ・グラフデータベース)

データ保存方法
データベースレベルでの接続データのサポートはありません。 パフォーマンスとデータの信頼性は、接続の規模と複雑さによって低下します。
隣接ノードにインデックス計算なく移動できる特性(インデックス・フリー・アジェンシー)をもつグラフとしてのデータ保持形態により、関係性の検索が高速に可能となります。
データ・モデリング 幅の広い列やドキュメントストアではデザインレベルで制御できないため、データモデルはエンタープライズアーキテクチャには適していません。 問題をキャッチして解決するために、アプリケーションレベルに過度のプレッシャーをかけます。 論理モデルと物理モデルの間が一致するホワイトボード・フレンドリーなフレキシブルなデータモデル。 データ型とソースはいつでも追加または変更できるため、開発期間が大幅に短縮され、アジャイルな反復が可能になります。直感的なモデルが開発者とアーキテクト、データベース管理者間のコミュニケーションを容易にします。
クエリのパフォーマンス
データの関係性検索にはグラフ処理機能がないため、すべての関係はアプリケーションレベルで作成する必要があります。
グラフ処理は、関係性の数や深さに関係なく、待ち時間ゼロとリアルタイムパフォーマンスを保証します。
クエリ言語
クエリ言語はさまざまですが、データの関係性を検索するための特別のクエリ構造はありません。
Cypher: 関係性を検索するための最も効率的で表現力豊かな方法を提供するネイティブグラフクエリ言語。
トランザクション・サポート
データの関係性の観点からすると、BASEトランザクション・サポート、つまり、Basic Avilabilityや結果整合性(eventual consistency)ではデータの関係性の観点からは、データ破損の可能性があります。
完全なACID性があり、データは完全な一貫性があります。これは、常に稼働しているグローバル企業アプリケーションの要件も完全に充します。
プロセスのスケール性 データの書き込みに最適化されていますが、大規模のデータを読み取りに最適化されてはいません。 スケーラビリティは、グラフ・データの整合性を保護しないスケールアウトアーキテクチャに依存しており、関係性の観点からすると、データは信頼できません。 グラフモデルは、本質的にパターンベースのクエリでありスケールします。 スケールアウトアーキテクチャは、レプリケーションによってデータの整合性を維持します。 IBM POWER8およびCAPI Flashシステムにより大規模なスケールアップが可能です。
データセンター運用での効率性
スケールアウトアーキテクチャは、多くの汎用ハードウェアに継続的にアクセスできることを第一目的としています。エネルギーコスト、ネットワークの脆弱性、その他のリスクは優先順位は低くなっています。
データとデータの関係性は、グラフ・ネイティブに保存されます。複雑さと規模が大きくなっても、パフォーマンスが保たれます。サーバー統合を可能とし、ハードウェアの効率的運用を可能とします。