1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

グラフデータベースについて聞いてきた(OSS カンファレンス)

Last updated at Posted at 2021-12-24

グラフ型データベースとは

  • データをグラフ構造に持つ
    • データ間の関連性を管理
    • 基本的な要素はノードとプロパティとリレーションシップ
  • 大量データを高速処理
    • RDB は join を利用し、コストをかけて検索するが、グラフ型データベースはリレーションシップを辿るから早い

インスタンスモデル

  • グラフ型データベースを設計する上で重要
  • 具体的なインスタンス(値を持ったオブジェクト)を作成しつつ、開発を進めていく
  • ノードを作り、ノードにプロパティ(属性)をつけて、ノード間にリレーションシップを設定していく

グラフ型データベース

  • Neo4j
  • ハイパーグラフ
    • 数学の集合でよく表される
  • トリプル
  • 主語(私は)、述語(通っていた)、目的語(大学)の3つを格納してデータを表す

グラフ型データベースの利用例

  • EC サイト
    • 商品のレコメンデーション
  • SNS
    • 友達の候補表示
  • 通信機器の管理
    • 機器の故障時、他の通信経路の確認や通信速度の確認
  • 医療
    • 患者、地域、症状、持病、性別、習慣、くせなどの情報を関連付けた分析や研究
  • 道案内
    • 最短経路の提示

Neo4j とは

  • Neo Technology 社が開発したグラフ型データベース
    • 2003年に設立
    • 拠点はもともとスウェーデン。今はアメリカ(シリコンバレー)に拠点を移している
  • 世界中で500サービス以上稼働し、グラフ型データベースの中では最も知名度が高い
  • Google/Facebook などでも利用されている
  • NoSQL

Neo4j の特徴

  • ACID(原子性/一貫性/独立性/耐久性) 特性に準拠したデータベース
    • NoSQL 系データベースだが、「ACID 特性」に準拠し、整合性を確保できる
  • 高いパフォーマンス
    • データベースが肥大化しても、処理速度の低下は少なく、1秒あたり数百のトランザクションを実行できる
    • RDB の1000倍程のパフォーマンス
  • Cypher Query
    • RDB を操作する SQL 文と同様に、Neo4j を操作するクエリ言語
    • CRUD 操作が可能
    • ノードやリレーションのパターンマッチングを行う
    • インデックスや制約を管理
    • 慣れてしまえば、簡単に記述できる
    • コード量は SQL と比べ、10倍〜100倍少なくすることができる
  • 幅広い開発言語に対応
    • Java/.NET/JavaScript/Python/Ruby/PHP/R/Go
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?