SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

初めてのHBase

HBaseを使ってグラフDBを作ってみよう(前編)

初めてのHBase 第5回


  • このエントリーをはてなブックマークに追加

 前回はHBaseを使ったアプリケーションのケーススタディとして、HBaseの強い一貫性を利用した簡易アクセス解析サービスを作りました。今回は、株式会社サイバーエージェントでのHBaseのユースケースの一つであるグラフDBを作ってみましょう。

  • このエントリーをはてなブックマークに追加

はじめに

 現在、株式会社サイバーエージェントでは、いくつかのケースでHBaseを使用しています。その中の一つがグラフDBです。

 簡単に経緯を説明します。株式会社サイバーエージェントでは、2012年6月にスマートフォン向けプラットフォームをリリースしました。

 このプラットフォームでは、「デカグラフ」構想というものを掲げています。「デカグラフ」構想とは、各サービスのユーザー層を「ミニグラフ」と名付け、ユーザーに共通のIDで自由に回遊してもらうことで1つの巨大なスマートフォン向けサービスを構築するというものです。

 そこで、必要になったのがグラフ構造を保持するデータベースでした。当然、データが大量になるのでスケールする必要があります。また、オンラインで用いられるので低レスポンスタイムで高スループットが求められます。

 そこで私達は、HBaseを用いてグラフDB(プロジェクト名「Hornet」)を開発することにしました(※1)。

 今回は、私達がグラフ構造をHBaseでどう表現したか、そして開発するにあたって用いたテクニックなどを紹介していきたいと思います。ただし、今回紹介するものは、説明のために実際のものと比べて簡易なものとなっていますのでご了承ください。

対象読者

  • HBaseを使ってみたいけど、どう使ったらよいか分からない方
  • MySQLなどのRDB以外のデータベースを使ってみたい方

要件定義

 まずは、要件定義からです。データモデルとしては、プロパティグラフを想定しています。

 プロパティグラフとは、以下のようなものです。

 プロパティグラフでは、ノードとそれの関係性を表すリレーションシップが存在します。ノードはノードIDを持ちます。リレーションシップには方向とタイプがあります。

 また、各ノードと各リレーションシップは、プロパティを持ちます。プロパティは、名前とそれに対する値というkey-valueの構造になっています。

 そしてプロパティグラフに対し、以下の操作が可能なグラフDBを想定しています。

  • ノードの作成・削除
  • ノードのプロパティの取得
  • ノードのプロパティの追加・更新・削除
  • リレーションシップの作成・削除
  • リレーションシップのプロパティの取得
  • リレーションシップのプロパティの追加・更新・削除
  • あるノードの隣接リレーションシップを最新順で取得(方向を指定できる)

論理設計

 今回対象とするグラフDBのER図は、以下のようになります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
物理設計

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
初めてのHBase連載記事一覧

もっと読む

この記事の著者

鈴木 俊裕(スズキ トシヒロ)

株式会社サイバーエージェント アメーバ事業本部 Ameba Technology Laboratory 2008年4月に株式会社サイバーエージェントに新卒で入社。基盤システムの開発・運用に従事する。 2010年4月にHadoop/Hiveを用いたログ解析基盤の開発・運用を担当する。 2011年4月に、ログ解析、レコメンド、検索エンジンなどを開発するAmeba Technology Laboratoryの立ち上げメンバーとなる。 2011年10月からHBaseを用...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7373 2013/12/17 12:21

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング