20110519 okuyama tokyo_linuxstudy

24
Kobe Digital Labo, Inc. 岩瀬 高博 Twitter: @okuyamaoo Mail: [email protected] http://d.hatena.ne.jp/okuyamaoo/ Distributed Key-Value Store

Transcript of 20110519 okuyama tokyo_linuxstudy

Kobe Digital Labo, Inc.

岩瀬 高博

Twitter: @okuyamaoo

Mail: [email protected]

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

Distributed Key-Value Store

1.自己紹介

2.okuyamaについて

3.新機能のご紹介

アジェンダ

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

>神戸を基盤にICTソリューションを展開

・岩瀬 高博 (Twitter: @okuyamaoo)

>okuyama、ECサイト関係、研究系の案件

>車とか好き. okuyamaの由来もそこから

>活動

>OSS分散キーバリューストア #okuyama を開発

自己紹介

okuyamaとは?

・概要

・全体イメージ

・基本機能

・分散Key-Value Store

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

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

現在 Version 0.8.7.2

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

>開発動機は自身の勉強目的

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

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

okuyamaとは?

・全体イメージ

・Client → Master Node → Data Node(×3)

Master Node

Data Node

Data Node

Client

Client

Master Node Client

Data Node

Data Node

Data Node Data Node

Data Node Data Node

全体イメージ

Data Node

Data Node

Data Node

Data Node

・機能一覧

okuyamaに出来ること

Storage Type

冗長性

データメンテナンス

永続化・非永続化の選択、一貫性レベルの選択 保存先の選択(Memory, Disk, Disk + Memory)

複数台のサーバで構成されており、 サーバ追加も無停止で可能(アルゴリズム分散)

全てのデータは多重化されて保存され 全ての構成要素が多重化可能となっている single point of failureが存在しない

サーバ追加時や、障害時、復旧時の

データ再配置は全て自動で行われる。

Support Protocol Original, memcached, HTTP

可用性

データTag付加機能

JavaScript実行機能

Keyを束ねるTagを設定可能。取得時はKeyの集合、

又はKeyとValueを選択可能。Tagの数は制限なし。

JavaScriptをDataNodeで実行可能。

データの更新も同時に実行可能。

最近追加した機能

・パーティション機能

・ストレージ機能の強化

・全文検索機能

・Key-Value Storeを利用するアプリが

増えてきた場合に発生する問題

パーティション機能

・アプリ単位で環境を用意

・1つのKVSを共有利用

・Key-Value Storeを利用するアプリが

増えてきた場合に発生する問題

パーティション機能

・アプリ単位で環境を用意

・1つのKVSを共有利用

1つのサーバ上に複数のKVS

複数のサーバを用意

管理コストの増大

アプリ側でなんだかの工夫

ロジックに環境依存が発生する

操作ミスなどで他のデータに影響

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

パーティション機能

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

>初期設定は不要

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

>追加、削除の制限なし

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

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

せずに利用可能

・内部的にはパーティション単位での

プレフィックス付加での分離

・暗号化などは今後の検討課題

・仮想メモリ機構 ・完全ディスクモード以外の場合にメモリ使用量が

上限に達した場合に自動的にディスクをメモリとして利用

ストレージ機能強化

・Value圧縮機構 ・Valueを保存する際に圧縮し保存する(zipアルゴリズム)

圧縮しても意味がないデータは自動判定

・Valueがメモリモードの場合のみ利用可能

・データファイル遅延書き込み機構 ・トランザクション、データ両ファイルのディスクへの書き込みを

遅延させることが可能

・データ保全性の面ではトレードオフ

全文検索機能 ・標準機能として全文検索機能を搭載

>機能特徴

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

次のリリースで辞書方式のMixに変更

全文検索機能 ・もう少し特徴を出してみようと 1.辞書方式とのMix

2.N-GramのNの部分はIndex作成、検索時に

設定できるように(デフォルトはN=1, 2, 3で作成)

3.作成Indexのグルーピングが可能

全文検索機能 ・検索Indexをグループ別で作成、検索

データ登録時に任意のグループを指定することで

検索時の範囲を限定することが可能

>今日の勉強会の内容を

グループを決めて検索

とかも可能

twitterのグループから

“今日の勉強会”を検索

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

blog

twitter

ATND

全文検索機能

デモ

全文検索機能 ・デモ内容説明

登録されているデータはYahooと、MSNの

ニュースのRSS情報

Yahooのグループの検索Indexから

全部検索をおこなっている

検索ノイズの除外

Yahoo

MSN

全文検索機能 ・デモ内容説明

登録されているデータはYahooと、MSNの

ニュースのRSS情報

Yahooのグループの検索Indexから

全部検索をおこなっている

検索ノイズの除外

もう少しつくり込んでいくと

Yahoo

MSN

全文検索機能

デモ2

全文検索機能 ・デモ内容説明

最初のデモは情報元のグループに全ての情報を

付加して検索を行った

今回のデモは情報の属性単位でグループを付加し

どのグループを検索してももとのRSS情報を取得する

ことが出来るように情報を付加してあらかじめデータを

登録しておいた

全文検索機能 ・データ内容説明

カテゴリ

タイトル

日付

RSS情報

・情報元

・カテゴリ

・タイトル

・日付

情報元

Key

RSSを一意にする値+”情報元”

RSSを一意にする値+”カテゴリ”

RSSを一意にする値+”タイトル”

RSSを一意にする値+”日付”

Value

AAAAAAAAAAAAAAAAA

BBBBBBBBBBBBBBBBB

CCCCCCCCCCCCCCC

DDDDDDDDDDDDDDD

RSS情報そのものはJSONなどでokuyamaに登録

Key値は日付とタイトルと情報元のHash値など

Group

検索Indexも作成

全文検索機能 ・データ検索説明

カテゴリ

タイトル

日付

情報元

Key

RSSを一意にする値+”情報元”

RSSを一意にする値+”カテゴリ”

RSSを一意にする値+”タイトル”

RSSを一意にする値+”日付”

Value

AAAAAAAAAAAAAAAAA

BBBBBBBBBBBBBBBBB

CCCCCCCCCCCCCCC

DDDDDDDDDDDDDDD

タイトルグループの検索Indexを検索

該当したKeyの配列が取れてくる

Key値にはRSSを一意にする値が入っているので、本体のRSSを取得

RSS本体が取得出来た

複数のGroupを検索して、それぞれの

結果をマージするなどすれば複合検索も

可能

最後に

・Information

UserGroup

http://groups.google.com/group/kvs_okuyama/

Development

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

Facebook

http://www.facebook.com/okuyama.jp

Thank you!