20110708 dist_study okuyama
-
Upload
takahiro-iwase -
Category
Technology
-
view
1.159 -
download
0
description
Transcript of 20110708 dist_study okuyama
Kobe Digital Labo, Inc.
岩瀬 高博
Twitter: @okuyamaoo
Mail: [email protected]
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のグループから
“勉強会”を検索
他のグループは対象から外せる
・システムの持つ共有意義の強いデータを
集中管理するストレージ基盤を開発
構築事例(1)
・商品マスタ、ユーザマスタ、
在庫情報など複数のシステムが
利用するデータを集中管理
・okuyama内にパーティションを
使ってデータ単位の領域を作成
・データ別にアクセス用APIを
WebAPIとして随時開発、追加
アプリケーションはAPIを利用
することでokuyamaを意識しな
い利用を実現
・okuyamaを利用して構築したクラスターを
自社のサービス利用ユーザに提供
構築事例(2)
・自社のインフラ上に構築した
okuyamaクラスターを自社の
サービス利用者に容量単位で
レンタル
・利用側は使った容量のみの
料金で冗長化された、メンテナン
スフリーのストレージを利用可能
・管理は個別管理ではなくクラス
ターの管理のみで多数のユーザ
にサービス提供できる
Thank you!