20110708 dist_study okuyama

30
Kobe Digital Labo, Inc. 岩瀬 高博 Twitter: @okuyamaoo Mail: [email protected] http://d.hatena.ne.jp/okuyamaoo/ 分散KeyValue Storeについて

description

2011/07/08 dist_study introduction of okuyama

Transcript of 20110708 dist_study okuyama

Page 1: 20110708 dist_study okuyama

Kobe Digital Labo, Inc.

岩瀬 高博

Twitter: @okuyamaoo

Mail: [email protected]

http://d.hatena.ne.jp/okuyamaoo/

分散Key-Value Storeについて

Page 2: 20110708 dist_study okuyama

自己紹介 ・岩瀬 高博

> 株式会社 神戸デジタル・ラボ所属

> Twitter: @okuyamaoo

活動

>OSS活動

・分散キーバリューストア okuyama を作成

http://sourceforge.jp/projects/okuyama/

>勉強会

・分散ワークショップ in Kansaiを計画中

Page 3: 20110708 dist_study okuyama

1.分散Key-Value Storeとは?

分散Key-Value Storeの特徴

2.okuyamaについて

概要

特徴

こんな使い方をされています

アジェンダ

Page 4: 20110708 dist_study okuyama

分散Key-Value Storeとは?

・概要

・特徴

・基本機能

Page 5: 20110708 dist_study okuyama

NOSQLなデータベースの一種

Page 6: 20110708 dist_study okuyama

NOSQLなデータベースの一種

Column Document

分散Key-Value Store

Page 7: 20110708 dist_study okuyama

分散Key-Value Storeって?

分散Key-Value Storeとは?

Page 8: 20110708 dist_study okuyama

分散Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

Page 9: 20110708 dist_study okuyama

Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

>KeyとValueの関係で値を保持できる仕組み

Page 10: 20110708 dist_study okuyama

Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

>KeyとValueの関係で値を保持できる仕組み

Key-1

Key-2

Key-3

Value-1

Value-2

Value-3

“Key-1”のValueを取得 Key-1 Value-1

“Value-1”が取得できる

Page 11: 20110708 dist_study okuyama

Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

>KeyとValueの関係で値を保持できる仕組み

Key-1

Key-2

Key-3

Value-1

Value-2

Value-3 “Key-4”,“Value-4”を登録

Key-4 Value-4

Key-4 Value-4

Page 12: 20110708 dist_study okuyama

Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

>KeyとValueの関係で値を保持できる仕組み

>特徴

・シンプルなデータモデル

・シンプルな操作方法

・最小単位での一貫性

Page 13: 20110708 dist_study okuyama

Key-Value Storeって?

分散Key-Value Storeとは?

>その前にまずKey-Value Storeから

>KeyとValueの関係で値を保持できる仕組み

>特徴

・シンプルなデータモデル

・シンプルな操作方法

・最小単位での一貫性

Page 14: 20110708 dist_study okuyama

最小単位での一貫性?

1つのデータの更新が混在しないことのみ保障

>どんな利点が?

Page 15: 20110708 dist_study okuyama

最小単位での一貫性?

1つのデータの更新が混在しないことのみ保障

>どんな利点が?

>データの整合性確保の範囲を限定できる

2つのデータは個々で更新される

関係性を持たない Key-1

Key-2

Value-11

Value-2

“Key-1”を“Value-11”へ更新

Key-1 Value-11

Key-3 Value-3

Key-4 Value-44

“Key-4”を“Value-44”へ更新

Key-4 Value-44

Page 16: 20110708 dist_study okuyama

最小単位での一貫性?

データの整合性確保の範囲を限定できる

>ということは?

Page 17: 20110708 dist_study okuyama

最小単位での一貫性?

データの整合性確保の範囲を限定できる

>ということは?

>分散して管理することが可能

Key-1

Key-2

Value-11

Value-22

“Key-1”を“Value-11”へ更新

Key-1 Value-11

Key-3 Value-3

Key-4 Value-44

“Key-4”を“Value-44”へ更新

Key-4 Value-44

Page 18: 20110708 dist_study okuyama

最小単位での一貫性?

データの整合性確保の範囲を限定できる

>ということは?

>分散して管理することが可能

Key-1

Key-2

Value-11

Value-22

“Key-1”を“Value-11”へ更新

Key-1 Value-11

Key-3 Value-3

Key-4 Value-44

“Key-4”を“Value-44”へ更新

Key-4 Value-44

分散

Key-Value Store

Page 19: 20110708 dist_study okuyama

・一般的に有している機能一覧

分散Key-Value Storeの機能

Storage Type

冗長性

データメンテナンス

非永続化・永続化が選択出来る

Key-Value Storeライブラリを利用した実装も

複数台のサーバで構成することを強く意識している

サーバ追加や削減も可能(無停止で可能な場合も)

データは多重化して保存することが可能 ノードの障害時などは自動的にフェイルオーバ single point of failureが存在しない

サーバ追加時や、障害時のデータへのメンテナンスを

自動で行うことも可能

Support Protocol 独自プロトコル, memcached(拡張も), HTTP

可用性

一貫性 一貫性のレベルは低い

一貫性レベル高くすることが出来る仕組みを持つものも

Page 20: 20110708 dist_study okuyama

okuyamaについて

・概要

・特徴

・こんな使い方をさています

Page 21: 20110708 dist_study okuyama

・okuyamaは全てJavaで作られています。

>2009年の12月から開発をはじめ、

現在 Version 0.8.8

・全て一からの実装になります。

>永続化の仕組み, ネットワークI/O周りの仕組み,

レプリケーションの仕組み全てオリジナルとなります

・分散KVSの機能一覧の内容を一通りサポート

概要

Page 22: 20110708 dist_study okuyama

特徴的な機能をいくつかご紹介

特徴

・ストレージ特性の自由度

・Tag付加機能

・JavaScript実行機能

・パーティション機能

・Valueへの全文検索機能

Page 23: 20110708 dist_study okuyama

・保存方式を自由に選択可能

KeyとValueの保存場所をメモリ、ファイル自由に選択可能

永続化は操作ログ方式のため、永続化+OnMemoryなど

SerializeMapを使うことで高速な圧縮と、メモリ効率化も可能

・仮想メモリ機能

メモリ不足などでノードがダウンしないように

自動的に利用される

ストレージ特性の自由度

Page 24: 20110708 dist_study okuyama

Tag付加機能

Key Value Tag KVS

RDBMS

KVS

・タグをデータに追加することができる

Key Value memcached

MySQL

okuyama

“The world‟s most popular open source database”

memcached

MySQL

okuyama

“The world‟s most popular open source database”

“The world‟s most popular open source kvs”

“Distributed Key Value Store implemented in Java”

“The world‟s most popular open source kvs”

“Distributed Key Value Store implemented in Java”

Page 25: 20110708 dist_study okuyama

JavaScript実行機能

Client

Key=“okuyama”

JavaScript=”if (dataValue == „nosql‟) { …..”

Request

Key=okuyama

Value=“nosql”

Execute JavaScript

結果を取得できる

(更新することも可能)

・JavaScriptをDataNodeで実行

DataNode MasterNode

Page 26: 20110708 dist_study okuyama

・okuyamaのクラスター内に領域を作成 ・1つのokuyamaクラスターを複数の用途で共有利用

パーティション機能

・パーティションの容量は可変

>初期設定は不要

・パーティション数の限度はなし

>追加、削除の制限なし

・利用側はMasterNodeのポート単位

>memcachedクライアント等でも意識

せずに利用可能

Page 27: 20110708 dist_study okuyama

全文検索機能 ・Valueに対しての全文検索機能を搭載 >機能特徴

1.N-Gramを利用した検索Index作成

2.N-GramのNの部分はValue単位で変更可能

3.検索対象のグルーピ化及びグループ指定検索が可能

blog

twitter

twitterのグループから

“勉強会”を検索

他のグループは対象から外せる

Page 28: 20110708 dist_study okuyama

・システムの持つ共有意義の強いデータを

集中管理するストレージ基盤を開発

構築事例(1)

・商品マスタ、ユーザマスタ、

在庫情報など複数のシステムが

利用するデータを集中管理

・okuyama内にパーティションを

使ってデータ単位の領域を作成

・データ別にアクセス用APIを

WebAPIとして随時開発、追加

アプリケーションはAPIを利用

することでokuyamaを意識しな

い利用を実現

Page 29: 20110708 dist_study okuyama

・okuyamaを利用して構築したクラスターを

自社のサービス利用ユーザに提供

構築事例(2)

・自社のインフラ上に構築した

okuyamaクラスターを自社の

サービス利用者に容量単位で

レンタル

・利用側は使った容量のみの

料金で冗長化された、メンテナン

スフリーのストレージを利用可能

・管理は個別管理ではなくクラス

ターの管理のみで多数のユーザ

にサービス提供できる

Page 30: 20110708 dist_study okuyama

Thank you!