43
Creat r’s Night 2012/03/16 事業創造室 加藤寛之 Wednesday, March 21, 12

10年後のデータベース アーキテクチャ と青春の日々

Embed Size (px)

DESCRIPTION

Datomicについて。更にアプリキャッシュのパフォーマンスの簡易テスト。

Citation preview

Page 1: 10年後のデータベース アーキテクチャ と青春の日々

Creat r’s Night2012/03/16

事業創造室 加藤寛之

Wednesday, March 21, 12

Page 2: 10年後のデータベース アーキテクチャ と青春の日々

本日のお題

10年後のデータベースアーキテクチャと青春の日々

Wednesday, March 21, 12

Page 3: 10年後のデータベース アーキテクチャ と青春の日々

10年後のデータベースアーキテクチャ?

Wednesday, March 21, 12

Page 4: 10年後のデータベース アーキテクチャ と青春の日々

DatomicWednesday, March 21, 12

Page 5: 10年後のデータベース アーキテクチャ と青春の日々

なにそれ美味しいの?

Wednesday, March 21, 12

Page 6: 10年後のデータベース アーキテクチャ と青春の日々

Hacker Newsのコメントより

Datomic is a UFO filled with advanced alian technology

Wednesday, March 21, 12

Page 7: 10年後のデータベース アーキテクチャ と青春の日々

ひっじょ~に興味深いね

Wednesday, March 21, 12

Page 8: 10年後のデータベース アーキテクチャ と青春の日々

ということでアーキテクチャをご紹介

Wednesday, March 21, 12

Page 9: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server

INSERT / UPDATE SELECT

Wednesday, March 21, 12

Page 10: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server

増えたらだめぇ!パンクしちゃう!

INSERT / UPDATE SELECT

Wednesday, March 21, 12

Page 11: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server(master)

DB Server(slave)

データ同期

INSERT / UPDATE SELECT

Wednesday, March 21, 12

Page 12: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server(master)

DB Server(slave)

データ同期

INSERT / UPDATE

SELECT

DB Server(master)

同期

Wednesday, March 21, 12

Page 13: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server(master)

DB Server(slave)

データ同期

INSERT / UPDATE

SELECT

DB Server(master)

同期

Wednesday, March 21, 12

Page 14: 10年後のデータベース アーキテクチャ と青春の日々

これまで

Web Server

DB Server(master)

DB Server(slave)

データ同期

INSERT / UPDATESELECT

DB Server(master)

同期

cache

Wednesday, March 21, 12

Page 15: 10年後のデータベース アーキテクチャ と青春の日々

頭を悩ませることがいっぱい ・INSERT / UPDATEがScaleしにくい ・データの復旧が面倒 ・キャッシュのTTLをコンテンツ毎に管理 ・レプリケーションサーバーが増える  => マスタへの負荷が増大 ・なによりDBがいつもボトルネック ・などなどどんどん物事が複雑になっていく。

Wednesday, March 21, 12

Page 16: 10年後のデータベース アーキテクチャ と青春の日々

そこでDatomic

Wednesday, March 21, 12

Page 17: 10年後のデータベース アーキテクチャ と青春の日々

特徴その1

保存されているデータは更新不可能(Append-Only)

・Lockされない(だって更新しないもん)・更新処理は後述するTransactorに新しいデータの作成 として実行キューに登録/処理される。

Wednesday, March 21, 12

Page 18: 10年後のデータベース アーキテクチャ と青春の日々

特徴その2

アプリケーションプロセスにてクエリ処理が行われる

・発行されるクエリの解析はアプリ側で行う。・クエリの解析結果と、ローカルに存在するインデックス から対応する固有ID(のリスト)を取得。

Wednesday, March 21, 12

Page 19: 10年後のデータベース アーキテクチャ と青春の日々

特徴その2

自プロセス内のキャッシュから固有IDに対応するデータを検索。

・キャッシュ上に存在すれば通信さえ発生しない。・キャッシュ上になければ元データの保存場所から取得。

Wednesday, March 21, 12

Page 20: 10年後のデータベース アーキテクチャ と青春の日々

特徴その3

データの追加 / 更新処理はすべてTransactor経由で行われる。

・元データの保存場所に対してアプリケーションが 直接更新処理を行う訳ではない。・全ての更新履歴を保存しているので、データの復旧とか 楽勝すぎワロタ。

Wednesday, March 21, 12

Page 21: 10年後のデータベース アーキテクチャ と青春の日々

Datomic

Web Server

Storage Service

INSERT / UPDATE

GET ENTITY(request only data segments, not query)

Transactor(data segments)

Data Index

cache Live Index cache Live Indexcache Live Index

Wednesday, March 21, 12

Page 22: 10年後のデータベース アーキテクチャ と青春の日々

Datomic(更新時)

Web Server

Storage Service

INSERT / UPDATE

Transactor(data segments)

Data Index

cache Live Index cache Live Indexcache Live Index

Wednesday, March 21, 12

Page 23: 10年後のデータベース アーキテクチャ と青春の日々

Datomic(更新時)

Web Server

Storage Service

INSERT / UPDATE

Transactor(data segments)

Data Index

cache Live Index cache Live Indexcache Live Index

Wednesday, March 21, 12

Page 24: 10年後のデータベース アーキテクチャ と青春の日々

何が嬉しいの? ・そもそもキャッシュHITしたら  Storage Serviceにアクセスさえない。 ・UPDATEがないのでlockしない。  => 他のクエリに迷惑をかけない。 ・Storage Serviceは単純にデータを  提供するだけ!クエリ解析とか  キャッシュとか考えなくていい。

Wednesday, March 21, 12

Page 25: 10年後のデータベース アーキテクチャ と青春の日々

個人的に各サーバーの役割分担がより明確になってると思ったり

Wednesday, March 21, 12

Page 26: 10年後のデータベース アーキテクチャ と青春の日々

でもサービスはリリース前でした(́・ω・`)

Wednesday, March 21, 12

Page 27: 10年後のデータベース アーキテクチャ と青春の日々

でもアプリケーションに組み込むライブラリの参照実装(Java)は公開されている。。

Wednesday, March 21, 12

Page 28: 10年後のデータベース アーキテクチャ と青春の日々

なぜRubyがないのか?

Wednesday, March 21, 12

Page 29: 10年後のデータベース アーキテクチャ と青春の日々

ないなら作っちゃえ!(^O^)

Wednesday, March 21, 12

Page 30: 10年後のデータベース アーキテクチャ と青春の日々

ごめんなさい間に合いませんでした

Wednesday, March 21, 12

Page 31: 10年後のデータベース アーキテクチャ と青春の日々

日本語でおk

Wednesday, March 21, 12

Page 32: 10年後のデータベース アーキテクチャ と青春の日々

時間まで、しばしご鑑賞ください

Wednesday, March 21, 12

Page 33: 10年後のデータベース アーキテクチャ と青春の日々

というのもアレなので別の策を考えてみた

Wednesday, March 21, 12

Page 34: 10年後のデータベース アーキテクチャ と青春の日々

アプリケーション内キャッシュって

どこまで有効なんだろ?

Wednesday, March 21, 12

Page 35: 10年後のデータベース アーキテクチャ と青春の日々

とある社内ツールで試してみた

Wednesday, March 21, 12

Page 36: 10年後のデータベース アーキテクチャ と青春の日々

その名もKatomic

Wednesday, March 21, 12

Page 37: 10年後のデータベース アーキテクチャ と青春の日々

Katomic= in-memory KVSwritten with Ruby

Wednesday, March 21, 12

Page 38: 10年後のデータベース アーキテクチャ と青春の日々

Katomicの有効/無効で処理速度の変化を比較

してみたよ

Wednesday, March 21, 12

Page 39: 10年後のデータベース アーキテクチャ と青春の日々

結果Katomic 合計 ビュー DB その他

無効 1,608.6 735.5 8.3 864.8

有効 327.1 323.7 0.6 2.8

速度比 490% 230% 138% 3,086%

単位: ミリ秒

Wednesday, March 21, 12

Page 40: 10年後のデータベース アーキテクチャ と青春の日々

圧倒的じゃないか、我が軍は!

Wednesday, March 21, 12

Page 41: 10年後のデータベース アーキテクチャ と青春の日々

アプリ内キャッシュっていいかもー

Wednesday, March 21, 12

Page 42: 10年後のデータベース アーキテクチャ と青春の日々

ということでDatomicをもっと調査/検証します!

Wednesday, March 21, 12

Page 43: 10年後のデータベース アーキテクチャ と青春の日々

Thanks!

Wednesday, March 21, 12