Neo4jとRDBの比較
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システムにより大規模なスケールアップが可能です。 |
データセンター運用での効率性 |
スケールアウトアーキテクチャは、多くの汎用ハードウェアに継続的にアクセスできることを第一目的としています。エネルギーコスト、ネットワークの脆弱性、その他のリスクは優先順位が低くなっています。
|
データとリレーションシップは、グラフ・ネイティブに保存されます。複雑さと規模が大きくなっても、パフォーマンスが保たれます。サーバー統合を可能とし、ハードウェアの効率的運用を可能とします。 |