今時の企業の競争力はどこから生まれるのでしょうか? それは単純に大量のデータを保有し、高速に処理をするだけでは実現できません。データ同士の関連性や、そこから生まれる新しい知識が決め手になります。多くの企業は既にNeo4jによるグラフデータベース技術を採用し、データ活用による新しい企業競争力を生み出しています。
真にスマートなアプリの開発
データの関連性を超高速に検索することを基本設計としているNeo4jは、SQLよりも数千倍の性能を簡単に実現します。10年以上培われたこの技術は、従来型のデータベースにおける性能劣化の様々な要因、例えばSQLジョイン等の工程を完全に取り除きます。
ビジネスと共にデータベースも安定成長
SQLジョインは、データベースの規模拡大と共に、性能劣化を引き起こす最大の要因。バッチ前処理を行う等の対策もありますが、演算処理量の増大とデータの自由度損失を引き起こします。一方のNeo4jは、とにかく性能が命。大量データと複雑なクエリーでも、安定した速度とデータ加工の柔軟性を保証します。

Neo4jとは?
Neo4jは、関係型データベースの性能問題を解決するために、2000年頃から開発が始まったグラフデータベースです。グラフデータベースは、グラフを描画するのではなく、グラフ理論の頭脳をもってデータ処理を行うことができる、とても汎用性の高いデータベースです。多様なメリットが期待され、不正検知、リアルタイムでの商品レコメンド、マスターデータ管理なども実現できます。
データ分析に最適な「直感的」なアプローチ
データ処理を最も自然に、効果的に行う手法を提供するのがグラフデータ。
人間の脳内のアイディアやコンセプトを最も直感的に表現する手法として評価されています。
Neo4jの特長
-
- 柔軟性
- 実世界と全く同じデータモデルを可視化:現実世界のデータを無理やりテーブル化させる物理/デジタル変換の工程はもはや過去の手法。限りなく自由度の高いデータモデリングの世界がnodeとrelationshipのデータ構造によって実現されます。想像を超える開発スピードとアジリティの世界を実現します。
-
- 性能
- Neo4jのグラフDB処理エンジンは、比類なき性能を発揮するよう、開発されています。グラフデータモデルに特化した設計により、データ間の関連性を自由自在に、性能や信頼性に影響を及ぼすことなく、つなぎ合わせることができます。
-
- スケーラビリティ
- Neo4jはスケールアップ、スケールアウトの両方をサポートします。この双方向の拡張性により、一秒に数十万のACIDトランザクションを、億単位のnodeやrelationshipに対して処理することも可能です。データはお客様の最も重要な資産の一つ、信頼できるデータベースで運用しましょう。
もう少し詳しく
-
抜群の処理性能
- Neo4jはとにかく速い! データセットが大きくなりクエリーが複雑化すればする程、その違いがわかります。一秒に数百万単位のコネクションの検索を、データベースの大小に関係なく、リアルタイムで運用することができます。
-
柔軟なスキーマ設計
- Neo4jはリアルな世界に限りなく近い形でデータをモデル化するため、変更要求、新規データ追加、ルール変更、等に自然に対応できます。これはアジャイルなアプリ開発や、変更要求の多い近年のデータベース開発に最適です。
-
ネイティブなグラフストレージ
- グラフデータベース内の関連性のあるデータはすべて繋がっています。これは逆に関連性の無いデータ同士は全く接続を持たない構造を持つことを意味し、検索の際に、非常に効率の良いデータアクセスを生む根拠です。この構造が優れた性能とスケーラビリティを実現する秘密でもあります。
-
ネイティブなグラフ処理
- データ間の接続が最適化されているだけではなく、データ同士の関連性はそれぞれ単一のノードでリンクしています。この単純な構造が一秒に数百万単位の検索速度を実現する理由です。
-
ACID保証
- 多くのNoSQLは性能とスケールと引き換えにデータの同期保証を犠牲にしています。Neo4jは完全にACID属性を保証し、データベースとしての保全性を完全に提供します。
-
ビッグデータの要件をクリア
- Neo4jのグラフ技術はスケーラビリティのすべての面(データボリューム、リード/ライト)でその先進性が活きています。これが高速なクエリー性能、安定したレスポンスタイム、データの保全性を保証します。
-
強力なクエリー言語
- Cypherは、信じられない程、グラフパターンの表記を簡単にします。その効果は大きく、SQLのコード量の1/10〜1/100をも達成する事例が多数存在します。
-
Neo4J ブラウザー
- データベースのフロントエンドとしては非常に高度な機能を使いやすい様に設計/配置されています。この優れたGUIはグラフデータベースの習得時間の短縮にも大きく寄与します。
-
言語とフレームワーク
- Neo4jはほとんどの開発言語とフレームワークでサポートされています。もちろん、Neo4jのREST APIを使ってCypher言語を使用することも可能ですが、コミュニティにも支えられている様々な言語ドライバーを使うことも容易です。
-
データインポート
- グラフデータのETL機能は、データ規模の大小を問わず、関係型データベースや他のデータベースからのデータ移行を支援します。 初期的な大量インポートにはCSV Importツールを、小規模な定期的なデータロードにはCypher LOAD CSVコマンドが適しています。
-
高性能キャッシュ
- Neo4j Enterpriseの機能として、高速キャッシュ処理機能がサポートされています。これを採用することで、通常処理の10倍の性能を引き出せます。
-
クラスタリング/
キャッシュ シャーディング- Neo4jのクラスタ機能は、データをスケールアウトサーバのメモリに分散配置することにより、リード機能を大幅に向上させます。この性能向上は、グラフデータベースの成長とともに、高い可用性を維持しながらも導入することができます。
-
ホットバックアップ
- ホットバックアップもNeo4j Enterpriseで提供される機能です。データベースを稼働状態のまま、指定時間にデータベースのバックアップを取れるので、アプリケーションの24時間運用が大きなメリットとして評価され、採用されています。

他のデータベースとの比較
機能比較
区分 | ドキュメント | リレーション | カラム指向 | キーバリュー | グラフ |
---|---|---|---|---|---|
スキーマ定義 | ![]() |
![]() |
![]() |
![]() |
![]() |
データ更新 | ![]() |
![]() |
![]() |
![]() |
![]() |
トランザクション管理 | ![]() |
![]() |
![]() |
![]() |
![]() |
フィルター | ![]() |
![]() |
![]() |
![]() |
![]() |
集計 | ![]() |
![]() |
![]() |
![]() |
![]() |
JOIN | ![]() |
![]() |
![]() |
![]() |
![]() |
関係化 ※1 | ![]() |
![]() |
![]() |
![]() |
![]() |
グラフ化 ※2 | ![]() |
![]() |
![]() |
![]() |
![]() |
できる、必要である
エンジンに依存する
できない、要らない
※1 データ間の複雑な関係の定義や処理という意味です。
※2 グラフにして可視化するという意味です。
アーキテクチャ/データモデルの分類
アーキテクチャ データモデル |
マスタ型 | P2P型 | イネーブラ型 | |
---|---|---|---|---|
オンメモリ | オンディスク | |||
キー・バリュー型 | Hibari | Dynamo Voldmort Riak |
Memcached Redis Scalaris |
Tokyo Cabinet/Tryant |
カラム指向型 | BigTable Hbase Hypertable |
Cassandra | ||
ドキュメント指向型 | MongoDB CouchDB |
|||
グラフ型 | Neo4j | InfiniteGraph | ||
関係型データベース ※1 | Oracle SQL Server DB2 MySQL |
出典:NoSQLの基礎知識,リックテレコム,2012
※1)関係型データベースは、弊社が追加しています。
