20110708 dist_study okuyama

Post on 04-Jun-2015

1.158 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

2011/07/08 dist_study introduction of okuyama

TRANSCRIPT

Kobe Digital Labo, Inc.

岩瀬 高博

Twitter: @okuyamaoo

Mail: ta.okuyamaoo@gmail.com

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

分散Key-Value Storeについて

自己紹介 ・岩瀬 高博

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

> Twitter: @okuyamaoo

活動

>OSS活動

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

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

>勉強会

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

1.分散Key-Value Storeとは?

分散Key-Value Storeの特徴

2.okuyamaについて

概要

特徴

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

アジェンダ

分散Key-Value Storeとは?

・概要

・特徴

・基本機能

NOSQLなデータベースの一種

NOSQLなデータベースの一種

Column Document

分散Key-Value Store

分散Key-Value Storeって?

分散Key-Value Storeとは?

分散Key-Value Storeって?

分散Key-Value Storeとは?

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

Key-Value Storeって?

分散Key-Value Storeとは?

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

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

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”が取得できる

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

Key-Value Storeって?

分散Key-Value Storeとは?

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

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

>特徴

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

・シンプルな操作方法

・最小単位での一貫性

Key-Value Storeって?

分散Key-Value Storeとは?

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

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

>特徴

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

・シンプルな操作方法

・最小単位での一貫性

最小単位での一貫性?

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

>どんな利点が?

最小単位での一貫性?

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

最小単位での一貫性?

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

>ということは?

最小単位での一貫性?

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

>ということは?

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

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-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

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

分散Key-Value Storeの機能

Storage Type

冗長性

データメンテナンス

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

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

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

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

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

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

自動で行うことも可能

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

可用性

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

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

okuyamaについて

・概要

・特徴

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

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

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

現在 Version 0.8.8

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

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

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

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

概要

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

特徴

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

・Tag付加機能

・JavaScript実行機能

・パーティション機能

・Valueへの全文検索機能

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

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

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

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

・仮想メモリ機能

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

自動的に利用される

ストレージ特性の自由度

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”

JavaScript実行機能

Client

Key=“okuyama”

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

Request

Key=okuyama

Value=“nosql”

Execute JavaScript

結果を取得できる

(更新することも可能)

・JavaScriptをDataNodeで実行

DataNode MasterNode

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

パーティション機能

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

>初期設定は不要

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

>追加、削除の制限なし

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

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

せずに利用可能

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

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

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

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

blog

twitter

twitterのグループから

“勉強会”を検索

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

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

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

構築事例(1)

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

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

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

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

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

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

WebAPIとして随時開発、追加

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

することでokuyamaを意識しな

い利用を実現

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

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

構築事例(2)

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

okuyamaクラスターを自社の

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

レンタル

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

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

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

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

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

にサービス提供できる

Thank you!

top related