20140418 info talkセミナー資料

80
Kobe Digital Labo, Inc. 岩瀬 高博 Twitter: @okuyamaoo Mail: [email protected] FemtoDB On memory document database

Upload: takahiro-iwase

Post on 04-Jun-2015

355 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 20140418 info talkセミナー資料

Kobe Digital Labo, Inc.

         岩瀬 高博 Twitter: @okuyamaoo

Mail: [email protected]

FemtoDB On memory document database

Page 2: 20140418 info talkセミナー資料

自己紹介 ・岩瀬 高博(@okuyamaoo)  > (株) 神戸デジタル・ラボ所属

業務及び活動 >大規模e-コマースサイトのチューニング、運用 >分散処理、データベースの研究及び適応 >(独)情報通信研究機構 特別研究員      研究領域:大規模Webアーカイブ

>分散KVS okuyama、CEP Setsuna の開発   >OSS、Java、DB、車が好き

Page 3: 20140418 info talkセミナー資料

1.ドキュメント型データベース?

2.FemtoDBの紹介

今日のお話し

Page 4: 20140418 info talkセミナー資料

ドキュメント型データベース?

Page 5: 20140418 info talkセミナー資料

ドキュメント型データベース? ・ドキュメント型データベースとは?

・NOSQLデータベースと総称されるデータベースの中の1種類

Page 6: 20140418 info talkセミナー資料

NOSQL ・NOSQLデータベース

・NOSQLはSQLをインタフェースとしないデータベース

※wikipediaより

Page 7: 20140418 info talkセミナー資料

NOSQL ・NOSQLデータベース

・ 用途に特化させることで処理能力、キャパシティー

冗長性などの能力を高めたデータベース

Page 8: 20140418 info talkセミナー資料

NOSQL ・種類は?

・NOSQLは扱うデータ型に応じて種類分け出来きる

Page 9: 20140418 info talkセミナー資料

NOSQL ・種類は?

Key-Value型 Column型

Document型 Graph型

・NOSQLは扱うデータ型に応じて種類分け出来る

Page 10: 20140418 info talkセミナー資料

NOSQL ・種類は?

・NOSQLは扱うデータ型に応じて種類分け出来る

Key-Value型 Column型

Document型 Graph型

一意のKeyと値の関係

もっともシンプルなモデル

Page 11: 20140418 info talkセミナー資料

NOSQL ・種類は?

Key-Value型 Column型

Document型 Graph型

データをカラム単位で管理

カラム単位での操作が得意

・NOSQLは扱うデータ型に応じて種類分け出来る

Page 12: 20140418 info talkセミナー資料

NOSQL ・種類は?

Key-Value型 Column型

Document型 Graph型 グラフ構造データを管理

ファイルツリー、 ソーシャルグラフ

・NOSQLは扱うデータ型に応じて種類分け出来る

Page 13: 20140418 info talkセミナー資料

NOSQL ・種類は?

Key-Value型 Column型

Document型 Graph型

・NOSQLは扱うデータ型に応じて種類分け出来る

Page 14: 20140418 info talkセミナー資料

Document型 ・Document型データベースを詳しく

・扱うデータのフォーマットは?

自由なデータフォーマットを扱える

例えばリレーションナルデータベースの場合は?

テーブル定義 create table UserMaster ( UserID varchar(10) pkey, Name   varchar(50), Address varchar(100), Birthday date, Tel varchar(15), deleteFlg boolean )

事前にテーブル定義を作成 ↓

定義に沿ったデータ構造で登録

定義をデータベースで管理する

Page 15: 20140418 info talkセミナー資料

Document型 ・Document型データベースを詳しく

・扱うデータのフォーマットは?

自由なデータフォーマットを扱える

ではDocument型の場合は?

登録データ {”UserID” :”10001”, “Name” :”名前”, “Address” :”住所”, “Birthday” :”1981/09/08” “Tel” :”090-9999-8888”, “deleteFlg”:false }

登録されるデータ次第 ↓

データ構造に合った構造となる

定義をアプリケーションで管理する

Page 16: 20140418 info talkセミナー資料

Document型 ・Document型データベース

・どのような特徴なのか?

登録データ {”UserID” : ”10001”, “Name” : ”名前”, “Address” : ”住所”, “Birthday” : ”1981/09/08” “Tel” :”090-9999-8888” “deleteFlg”:false }

登録データ {”UserID” : ”10002”, “Name” : ”名前”, “Address” :”住所”, “Birthday” :”1981/10/12” “Tel” :”080-6666-7777”, “Mail” :”[email protected]”, “deleteFlg”:false }

上記の2データを[Address=“住所”]の条件のもと扱える

データ構造の異なる2データを透過的に扱うことが出来る。 異なる部分の処理をアプリケーションに依存させる。

Page 17: 20140418 info talkセミナー資料

Document型 ・Document型データベース

・代表的なソフトウェアは?

MongoDB 開発元:MongoDB Inc. 開発言語:C++ ライセンス:GNU AGPL v3.0 企業サポートなども展開している。 独自クライアントによる問い合わせが基本となる データはJSONで表現(内部はBSON)

Page 18: 20140418 info talkセミナー資料

Document型 ・Document型データベース

・代表的なソフトウェアは?

CouchDB 開発元:Apache Software Foundation 開発言語:Erlang ライセンス:Apache License 2.0 Map/Reduceによるデータ操作 RestfulAPIによるアクセス (GET,POST,DELETなど) データはJSONとして表現

Page 19: 20140418 info talkセミナー資料

FemtoDB

Page 20: 20140418 info talkセミナー資料

FemtoDB? ・FemtoDBって?

・2014年より開発を開始したドキュメント型のデータベース

昨日Version 0.0.3をリリースしました

 

Apache License, Version 2.0

Page 21: 20140418 info talkセミナー資料

FemtoDB? ・なぜ開発したか?

・普段業務ではKVSのokuyamaを使ったアプリケーション開発

こういった用途には凄くむいている

・データ構造が単純

・一意のデータ登録/取得がメイン

 アプリケーションのキャッシュにしたり、ファイルサーバの

バックエンドストレージなどにつかったり

Page 22: 20140418 info talkセミナー資料

FemtoDB? ・なぜ開発したか?

・あるときokuyamaを使ってサイト内商品検索エンジンを構築

  >これを自社サービス化

顧客ECデータベース MySQLやOracleなど

TSV

商品のデータを出力 商品データと 全文検索インデックスなどを

作成し登録

検索エンジンの フロントサーバが参照

Page 23: 20140418 info talkセミナー資料

FemtoDB? ・なぜ開発したか?

・いろいろ問題が

これらのことから検索やソートが得意でトランザクションが使え

データ構造が柔軟なデータベースをつくろうと考えた

  ・トランザクションがないからデータの一括入れ替えとか出来ない

  ・全文検索はokuyamaで、それ以外の検索、ソートは検索アプリ ケーション上で実現しておりロジックが複数箇所に点在 ・okuyama+検索アプリケーションサーバの構成なのでどうしても 構成が大きくなりがち

Page 24: 20140418 info talkセミナー資料

特徴は? ・FemtoDBの特徴とは?

・ データ構造

・ インタフェース

・ データアクセス機能

・ トランザクション

・ データ管理機能

Page 25: 20140418 info talkセミナー資料

データ構造 ・FemtoDBのデータ構造

FemtoDB

Table

JSON

Page 26: 20140418 info talkセミナー資料

データ構造 ・FemtoDBのデータ構造

FemtoDB

Table

JSON

・1プロセスでのシングルプロセス構成 ・他プロセスとの連携等なし

Page 27: 20140418 info talkセミナー資料

データ構造 ・FemtoDBのデータ構造

FemtoDB

Table

JSON

・データ管理単位テーブル 全てのデータはいずれかのテーブルに属する ・リソースの許す限り作成可能

Page 28: 20140418 info talkセミナー資料

データ構造 ・FemtoDBのデータ構造

FemtoDB

Table

JSON ・KeyとValueが文字型である単純な連想配列型 ・ネストした形式は扱えない

Page 29: 20140418 info talkセミナー資料

データ構造 ・ 小単位のJSON部分を詳しく

JSON ・ネスト構造を持たない単純な構造のみ管理可能

{”UserID” :”10001”, “Name” :”名前”, “Address”:”住所”, “Birthday”:”1981/09/08”, “Tel” :”090-9999-8888”, “deleteFlg”:false }

{”UserID” :”10001”, “Name” :”名前”, “Address” :”住所”, “Birthday” :”1981/09/08” “Tel” :”090-9999-8888”,  “School” :{“小学校”:”XXXX”, “中学校”:”YYYY”, “高校”:”ZZZZZ”} “deleteFlg”:false }

扱える

扱えない

Page 30: 20140418 info talkセミナー資料

データ構造 ・ 小単位のJSON部分を詳しく

異なる構造のJSONを1テーブルで扱える ・以下の2種類のJSONデータを同じ条件で取得可能

{”UserID” :”10001”, “Name” :”名前XX”, “Address” :”住所XX”, “Birthday” :”1981/09/08” “Tel” :”090-9999-8888”, “deleteFlg” :false }

{”UserID” :”10002”, “Name” :”名前YY”, “Address” :”住所YY”, “Birthday” :”1985/09/08” “HighSchool”:”YYY高校”, “deleteFlg” :false }

・「deleteFlg = false」の条件で2件とも取得可能 ・「Tel = “090-9999-8888」の条件でUserIDが10001だけ取得

Page 31: 20140418 info talkセミナー資料

特徴は? ・FemtoDBの特徴とは?

・ データ構造

・ インタフェース

・ データアクセス機能

・ トランザクション

・ データ管理機能

Page 32: 20140418 info talkセミナー資料

インタフェース ・操作インターフェース

・RestfulAPIで全ての操作を行う 起動と同時にHTTPサーバが起動 ※デフォルトでは8080番ポートで起動

Page 33: 20140418 info talkセミナー資料

インタフェース

FemtoDB

HTTP:8080 ・HTTPサーバにはJettyを利用 ・ポートは起動引数で変更可能 ・ 大同時接続数は起動引数にて指定可能 ・クエリの同時実行数は接続数とは個別で指定可能 ・HTTPSは未対応

・RestfulAPIで全ての操作を行う 起動と同時にHTTPサーバが起動 ※デフォルトでは8080番ポートで起動

・操作インターフェース

Page 34: 20140418 info talkセミナー資料

インタフェース ・RestfulAPIインタフェース

・リクエスト:パスとメソッドの組み合わせ

・レスポンス:JSON形式による応答

FemtoDB

Request: GET : /femtodb/dataaccess

{”UserID”:”10001”, “Name”:”名前”, “Address”:”住所”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

Response: text/json

Page 35: 20140418 info talkセミナー資料

インタフェース ・データローダー

・TSV/CSVファイルを登録するデータローダ

FemtoDB

ローダー TSV

・1トランザクション処理内で行われる  登録失敗等が起こると自動ロールバック ・カラム情報はヘッダーに定義するか自動作成

Page 36: 20140418 info talkセミナー資料

特徴は? ・FemtoDBの特徴とは?

・ データ構造

・ インタフェース

・ トランザクション

・ データアクセス機能

・ データ管理機能

Page 37: 20140418 info talkセミナー資料

トランザクション ・トランザクション機能を搭載している

MVCCを参考にしたトランザクション機能

・MVCC(マルチバージョン コンカレンシー コントロール)

 MVCCの動きは書き込みトランザクション中に読み込み

 トランザクションが発生すると1つ前のバージョンの情報を返す  

そのため読み込みと書き込み処理を同一データに対して

 同時に実行可能

Page 38: 20140418 info talkセミナー資料

トランザクション ・MVCCの挙動

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false } 更新処理

1.トランザクション内で更新処理が始まる

Page 39: 20140418 info talkセミナー資料

トランザクション ・MVCCの挙動

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false } 更新処理

1.トランザクション内で更新処理が始まる 2.更新前データと更新中データが分離される

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

更新前

更新中

Page 40: 20140418 info talkセミナー資料

トランザクション ・MVCCの挙動

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

更新前

更新中

更新処理

参照処理

1.トランザクション内で更新処理が始まる 2.更新前データと更新中データが分離される 3.参照処理には更新前データが返される

Page 41: 20140418 info talkセミナー資料

トランザクション ・MVCCの挙動

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

{”UserID”:”10001”, “Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

更新前

更新中

更新処理

参照処理

更新中データを別トランザクションが 更新しようとした場合は、後続処理がエラーとなる

別の更新処理 ☓

Page 42: 20140418 info talkセミナー資料

トランザクション ・トランザクションの適応範囲

・全てのデータ操作処理(テーブル操作は対象外)は  トランザクションが適応されて処理される。

・明示的なトランザクション開始、コミット、ロールバック、終了  

トランザクションで隠蔽された範囲内で複数のデータ処理を 行うことができる。

・開始を宣言しないオートコミットトランザクション

1リクエスト単位でトランザクションを作成し処理  処理失敗時は自動的にロールバック  処理成功時は自動的にコミット

Page 43: 20140418 info talkセミナー資料

特徴は? ・FemtoDBの特徴とは?

・ データ構造

・ インタフェース

・ トランザクション

・ データアクセス機能

・ データ管理機能

Page 44: 20140418 info talkセミナー資料

データアクセス機能 ・FemtoDBへのアクセスAPI

・テーブル作成用API

・トランザクション操作用API

・データ操作用API

Page 45: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの作成

・テーブル削除

・インデックスの追加作成

・テーブル情報の閲覧

Page 46: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの作成 URLパス:/femtodb/table メソッド:POST  パラメータ:table=usermst :indexcolumns=userid:equal

http://localhost:8080/femtodb/table?table=usermst&indexcolumns=userid:equal 実際にURLで指定すると以下のようになる

$curl http://localhost:8080/femtodb/table?table=usermst&indexcolumns=userid:equal -X POST

Page 47: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの作成

・テーブル削除

・インデックスの追加作成

・テーブル情報の閲覧

Page 48: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの削除 URLパス:/femtodb/table メソッド:DELETE  パラメータ:table=usermst

http://localhost:8080/femtodb/table?table=usermst 実際にURLで指定すると以下のようになる

$curl “http://localhost:8080/femtodb/table?table=usermst” -X DELETE

このようにURLとメソッドの

組み合わせで処理を実行

Page 49: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの作成

・テーブル削除

・インデックスの追加作成

・テーブル情報の閲覧

Page 50: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・インデックスの追加作成

Page 51: 20140418 info talkセミナー資料

インデックスの説明 ・検索用インデックスを作成可能

 検索を高速に行うインデックスを作成可能

インデックスの種類は2種類

ハッシュIndex:完全一致、範囲一致用 テキストIndex:全文検索用のインデックス

Page 52: 20140418 info talkセミナー資料

インデックスの説明 ・ハッシュIndex

データのカラムの値 カラムデータが同じデータ

100000 [{データ1},{データ5}] 100001 [{データ42},{データ452}] 108100 [{データ2},{データ6}, {データ9}] 200000 ・・・ 200100 ・・・ 200200 ・・・ 300009 ・・・ 400000 ・・・ {”UserID”:”10001”,

“Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

カラムデータの部分が 同じデータが束ねられるて 管理される

Page 53: 20140418 info talkセミナー資料

インデックスの説明 ・テキストIndex

データのカラムの値 カラムデータが同じデータ

名前YY [{データ1},{データ5}] 名前XX [{データ42},{データ452}] 名前ZZ [{データ2},{データ6}, {データ9}] ・・・・・ ・・・ ・・・・・ ・・・ ・・・・・ ・・・ ・・・・・ ・・・ ・・・・・ ・・・ {”UserID”:”10001”,

“Name”:”名前XX”, “Address”:”住所XX”, “Birthday”:”1981/09/08” “Tel”:”090-9999-8888” “deleteFlg”:false }

カラム内の文字列を構文解析し 転置インデックスを作成 解析には形態素解析器のkuromojiを利用 m(_ _)m

Page 54: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・インデックスの追加作成 URLパス:/femtodb/table メソッド:PUT  パラメータ:table=usermst :indexcolumns=userid:equal  テーブル作成時に指定しなかった場合に  データ登録後に追加作成可能

Page 55: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブルの作成

・テーブル削除

・インデックスの追加作成

・テーブル情報の閲覧

Page 56: 20140418 info talkセミナー資料

テーブル操作 ・テーブル操作API

・テーブル閲覧 URLパス:/femtodb/table メソッド:GET  パラメータ:table=usermst  作成されているテーブルの一覧と  インデックスの一覧情報を取得

Page 57: 20140418 info talkセミナー資料

データアクセス機能 ・FemtoDBへのアクセスAPI

・テーブル作成用API

・トランザクション操作用API

・データ操作用API

Page 58: 20140418 info talkセミナー資料

トランザクション操作 ・トランザクション操作API

トランザクション操作は大きく以下の4種類

・トランザクションを開始する

・トランザクションをコミットする

・トランザクションをロールバックする

・トランザクションを終了する

これらの命令がそれぞれAPIとして提供されている

Page 59: 20140418 info talkセミナー資料

トランザクション操作 ・利用イメージ

1.トランザクション開始API呼び出し

FemtoDB

ユニークなIDが返される

2. データ操作APIを呼び出す その際1で取得したIDをパラメータとして付加

3.コミット/ロールバックAPI呼び出し 1で取得したIDをパラメータとして付加

4.トランザクション終了API呼び出し 1で取得したIDをパラメータとして付加

transactionno=1002

Page 60: 20140418 info talkセミナー資料

トランザクション操作 ・利用イメージ

1.トランザクション開始API呼び出し

FemtoDB

ユニークなIDが返される

2. データ操作APIを呼び出す その際1で取得したIDをパラメータとして付加

3.コミット/ロールバックAPI呼び出し 1で取得したIDをパラメータとして付加

4.トランザクション終了API呼び出し 1で取得したIDをパラメータとして付加

・異なるIDでデータ操作を呼び出し 2の操作中のデータは参照出来ない

transactionno=9998

Page 61: 20140418 info talkセミナー資料

データアクセス機能 ・FemtoDBへのアクセスAPI

・テーブル作成用API

・トランザクション操作用API

・データ操作用API

Page 62: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ登録

・データ検索

・データ更新

・データ削除

Page 63: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ登録 URLパス:/femtodb/dataaccess メソッド:POST  パラメータ:table=usermst :data={JSON形式}

実際にURLで指定すると以下のようになる $curl http://localhost:8080/femtodb/dataaccess

-d “table=usermst“ -d “data={‘userid’:’0001’, ‘name’:’名前XXX’, ‘address’:’住所XXX’}” -d “data={‘userid’:’0002’, ‘name’:’名前YYY’, ‘tel’:’090-9999-8888’}”

-X POST

主キーの概念はないので同一内容のデータも複数登録される

Page 64: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ登録

・データ検索

・データ更新

・データ削除

Page 65: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ検索 URLパス:/femtodb/dataaccess メソッド:GET  パラメータ:table=usermst :where=条件 :sort=並び替えカラム名 :limit=取得件数 :offset=取得開始位置

Page 66: 20140418 info talkセミナー資料

データ操作 ・where部分

・取得条件を指定

指定は

カラム名 [条件式] パラメータ

 条件式は “=“ , “text” , “<” ,”>” , “in”, “notin” ※ “=“及び、”text”は定義したインデックスカラムの場合      インデックス検索が行われる

※ 全てのデータに含まれないカラムの場合は含まれない データは除外される

Page 67: 20140418 info talkセミナー資料

データ操作 ・sort部分

・並び替えを指定

指定は

カラム名 順序 [数値ヒント]

・順序はasc/desc

・数値ヒントはデータを数値として並び替える

  ※ データによってカラムが存在しない場合は後端へ

Page 68: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ登録

・データ検索

・データ更新

・データ削除

Page 69: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ更新

URLパス:/femtodb/dataaccess メソッド:PUT  パラメータ:table=usermst :where=条件 :data={JSON} where部分は検索と同様の指定方法。インデックスも適応。

更新データはJSONフォーマットで指定 {“deleteflg”:”0”} 、 {“newcolumn”:”newdata”}

Page 70: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ登録

・データ検索

・データ更新

・データ削除

Page 71: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・データ削除

URLパス:/femtodb/dataaccess メソッド:DELETE  パラメータ:table=usermst :where=条件

where部分は検索と同様の指定方法 インデックスも適応

条件の対象が全て削除される

Page 72: 20140418 info talkセミナー資料

データ操作 ・データ操作API

・トランザクションIDの付加   全てのデータ操作APIにトランザクションIDを 付加することが出来る

例)更新の場合 $curl http://localhost:8080/femtodb/dataaccess

-d “table=usermst“ -d “where=userid = 0001” -d “data={‘deleteflg’:’1’}”

-d “transactionno=1002” -X PUT

Page 73: 20140418 info talkセミナー資料

特徴は? ・FemtoDBの特徴とは?

・ データ構造

・ インタフェース

・ トランザクション

・ データアクセス機能

・ データ管理機能

Page 74: 20140418 info talkセミナー資料

データ管理機能 ・全てのデータはメモリ上で管理

テーブル定義、データ、インデックス情報の

全てがメモリ上で管理される

そのため処理においてディスクアクセスは発生しない

FemtoDB

テーブル作成、データ登録処理…etc

データ検索処理…etc

Page 75: 20140418 info talkセミナー資料

データ管理機能 ・メモリデータ+ジャーナルファイル

メモリ上のデータのため、FemtoDBが停止すると

データは全て消失する

使いづらいのでジャーナル機能を搭載 ※デフォルトOff 起動オプションで利用可能

FemtoDB

テーブル作成、データ登録処理…etc

データ検索処理…etc

データは全てメモリへ 参照も全てメモリ

・更新系操作は全てログとして記録 ・起動時にログからデータを復元

Page 76: 20140418 info talkセミナー資料

データ管理機能 ・スナップショット機能を開発中

ジャーナルファルだけでは操作の蓄積でログが肥大化し

復元が長時間化する

 ・ 一定時間毎に全てのデータをストアするスナップショット機能

操作ログ

長時間稼働しデータ更新を 行うとログが肥大化する

初から 後まで トレースするのに 凄く時間がかかる

Page 77: 20140418 info talkセミナー資料

データ管理機能 ・スナップショット機能を開発中

ジャーナルファルだけでは操作の蓄積でログが肥大化し

復元が長時間化する

 ・ 一定時間毎に全てのデータをストアするスナップショット機能

操作ログ

稼働中にある程度 ログが溜まったタイミングでスナップショットを作成

FemtoDB スナップショット作成

Page 78: 20140418 info talkセミナー資料

データ管理機能 ・スナップショット機能を開発中

ジャーナルファルだけでは操作の蓄積でログが肥大化し

復元が長時間化する

 ・ 一定時間毎に全てのデータをストアするスナップショット機能

操作ログ

稼働中にある程度 ログが溜まったタイミングでスナップショットを作成

FemtoDB スナップショット作成

作成した部分までを削除

操作ログ

Page 79: 20140418 info talkセミナー資料

後に ・Information GitHub   https://github.com/okuyamaoo/femtodb

twitter @okuyamaoo

Page 80: 20140418 info talkセミナー資料

Thank you!