SlideShare a Scribd company logo
Kai = (Dynamo + memcache API) / Erlang
Takeru INOUE
1
2009-02-20 1st Key-Value Store Workshop
たけまる
2
Kaiとは?
3
Dynamo + memcache API
Erlang
4
以上
5
質問?
6
:-P
自己紹介
7
  井上 武(たける)
  http://teahut.sakura.ne.jp/
  主な仕事
  分散システムの研究開発
  マルチキャストとその応用システム
  Web アーキテクチャとデータストア
  オープンソース
  AtomPub (Perl)
  Kai (Erlang)
  Erlang 分散システム勉強会を開催(次回は5~6月頃?)
8
Kaiとは?
9
Dynamo + memcache API
Erlang
Dynamo の特徴(1/2)
10
  Key, valueデータストア
  分散ハッシュテーブルっぽい
  高い分散透過性
  Peer-to-peer アーキテクチャ
  クラスタ管理コストの抑制
  耐障害性
  たとえデータセンター障害であっても
  障害時にも待ち時間要求を満たす
get(“joe”)
joe
joe
joe
Dynamo の特徴(2/2)
11
  Service Level Agreements
  99.9%のクエリに対して300ms以内
  平均では,読み取りに15ms, 書き込みに30ms
  高い可用性
  ロックなし,いつでも書き込める
  結果整合性 (Eventually Consistent)
  複製はゆるく同期
  不整合はあとで解消
可用性と一貫性のトレードオフ
- RDBMSは一貫性を優先
- Dynamoは可用性を重視
joe
joe
joe
get(“joe”)
Eventually Consistent – 書き込みの振る舞い
  3レプリカを並行して書き込み
  Consistent Hashing で選択
12
joe
厳密に正確ではないが,Dynamo の特徴を理解しやすく説明
Eventually Consistent – 書き込みの振る舞い
  3レプリカを並行して書き込み
  Consistent Hashing で選択
  分散ロック・コミットなし
  ベクトルタイムスタンプを刻印
  不整合は読み取り時に解消
  高い可用性!
13
joe
joe
Eventually Consistent – 書き込みの振る舞い
  3レプリカを並行して書き込み
  Consistent Hashing で選択
  分散ロック・コミットなし
  ベクトルタイムスタンプを刻印
  不整合は読み取り時に解消
  高い可用性!
14
joe
joe
joe
joe
Eventually Consistent – 読み取りの振る舞い
  3レプリカから並行して読み取り
  Consistent Hashing で選択
15
joe
joe
joe
古いデータ
Eventually Consistent – 読み取りの振る舞い
  3レプリカから並行して読み取り
  Consistent Hashing で選択
  バージョン不整合を解消
  ベクトルタイムスタンプを比較
16
joe
joe
joe
joe
joe
joe
古いデータ
Eventually Consistent – 読み取りの振る舞い
  3レプリカから並行して読み取り
  Consistent Hashing で選択
  バージョン不整合を解消
  ベクトルタイムスタンプを比較
  古いデータを上書き
  結果的に整合性がとれた
  Eventually Consistent!
17
joe
joe
joe
joe
上書き
分散透過性とは?
18
  分散透過性とは?
  分散していることの隠蔽度
  Peer-to-peer アーキテクチャは透過性が高い(ことが多い)
  透過性が高いと管理コストは低下
  自律的なクラスタシステム
  クライアント(アプリケーションサーバ)の簡易化
  性能とのトレードオフに注意
  自律制御のためのオーバヘッドあり
  日本のWebサイトは透過性より性能を優先する傾向あり?
  場所
  × クライアントがデータとノードの対応関係を保持
  パーティショニング情報を管理
  ○ システムが個々のデータの位置を隠蔽
  どのノードにアクセスしてもよい
  移動
  × ノード追加・離脱時にクライアントがデータを移動
  責任クライアントの選択と信頼性に課題
  ○ システムが適切に移動
  障害
  × クライアントが障害を検知して回避
  × 性能の急激な低下(Master-Slave だと半減)
  ○ システムが障害装置を除去,軽微な性能低下
  管理コストの低下
  Peer-to-peer アーキテクチャ
分散透過性の種類
master
 master
 master
slave
 slave
 slave
分散システム
19
×
○
Dynamo まとめ
20
  分散 key-value store
  高い分散透過性
  Peer-to-peer アーキテクチャ
  クラスタ管理コストの抑制
  高い可用性
  ロックなし,いつでも書き込める
  結果整合性(Eventually Consistent)
21
Dynamo + memcache API
Erlang
memcache API
22
require ‘memcache’
# サーバを指定
cache = MemCache.new ‘127.0.0.1:11211’
# set: ‘key’ に ‘value’ を格納
cache[‘key’] = ‘value’
# get: ‘key’ に対応するデータを取得
p cache[‘key’]
Ruby
use Cache::Memcached;
# サーバを指定
my $cache = Cache::Memcached->new({
servers => [‘127.0.0.1:11211’],
});
# set: ‘key’ に ‘value’ を格納
$cache->set(‘key’, ‘value’);
# get: ‘key’ に対応するデータを取得
print $cache->get(‘key’);
Perl
<?php
# サーバを指定
$cache = new Memcache;
$cache->connect(’127.0.0.1', 11211);
# set: ‘key’ に ‘value’ を格納
$cache->set('key', ‘value’);
# get: ‘key’ に対応するデータを取得
$cache->get('key');
?>
PHP
# サーバを指定
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(new String[]{“127.0.0.1:11211"});
pool.initialize();
MemCachedClien tcache = new MemCachedClient();
# set: ‘key’ に ‘value’ を格納
cache.set(“key”, “value”);
# get: ‘key’ に対応するデータを取得
System.out.println((String) cache.get(“key”));
Java
memcache API
23
  クライアント実装がたくさん存在
  開発の手間を省略
  Not perfect, but enough
  じつは Dynamo の機能を完全に実現するには貧弱
  Dynamo は独自 API
  ほとんどの場合は問題なし
24
Dynamo + memcache API
Erlang
Erlang の使いどころ
25
  Distributed key-value store に適
  11 のうち 5つが Erlang 製(右表)
  Anti-RDBMS:A list of distributed key-value
stores より(Last.fm の中の人)
  分散透過性の高いシステムに多い
  Kai も紹介されてます 
  どうして日本では使われないのだろう?
分散システム開発におけるErlangの特徴
  マルチコア・プログラミングの簡易化
  アクターモデル
  イベント駆動と比較
  例:3レプリカから並行して読み取り,2つを得たらレスポンス
  非破壊メモリ(変数への再代入不可)
  分散システム開発の簡易化
  組み込みの直列化関数
  組み込みのノード管理システム
  そこそこ速い
  Java未満,LL以上
  弱点もある(正規表現など)
26
イベント駆動(Perl POE)
  イベント単位に関数を実装
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
my $State;
sub recv_from_client;
sub recv_from_node;
sub timeout;
sub another_error;
擬似コード
27
共有リソース
イベント駆動(Perl POE)
  クライアントがリクエスト
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
sub recv_from_client {
$cli_sock->recv(my $req, 1024);
28
共有リソース
イベント駆動(Perl POE)
  レプリカを持っている3ノードに転送
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
29
共有リソース
state_init($cli_sock);
my @nodes = choose_nodes($req);
for my $node (@nodes) {
$sock = IO::Socket::Inet->new(…);
$sock->write($req);
$poe->kernel->select_read(
$sock, 
‘recv_from_node’,
$cli_sock,
);
}
イベント駆動(Perl POE)
  1つめからレスポンス
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
sub recv_from_node {
my $cli_sock = $poe->args->[2];
$node_sock->read(my $res, 1024);
stat_add_res($cli_sock, $res);
my $count = stat_count_res($cli_sock);
if ($count == 2) {
30
共有リソース
イベント駆動(Perl POE)
  2つめのレスポンスでクライアントに返す
  タイムアウトしても返す
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
31
共有リソース
sub recv_from_node {
my $cli_sock = $poe->args->[2];
$node_sock->read(my $res, 1024);
stat_add_res($cli_sock, $res);
my $count = stat_count_res($cli_sock);
if ($count == 2) {
my $res = stat_uniq_res($cli_sock);
$cli_sock->write($res);
}
イベント駆動(Perl POE)
  イベント(時間の進み)単位の実装
Client
 Receive from Client
 Receive from Node
 Node
Client
Dynamo
Node
Dynamo
Node
Receive from Client
 Receive from Node
Timeout
State
32
共有リソース
アクターモデル(Erlang)
  プロセス単位の実装
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
33
状態はプロセスごと
(共有リソースはない)
アクターモデル(Erlang)
  クライアントがリクエスト
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
Processes for Nodes
recv(Sock) ->
{ok, Req} = gen_tcp:recv(Sock, 0),
lists:foreach(
fun(Node) -> spawn(Mod, map, [Node, Req, self()]) end,
choose_nodes(Req)
),
Res = gather(2, []), 
34
アクターモデル(Erlang)
  レプリカを持っている3ノードに転送
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
Processes for Nodes
map(Node, Req, Parent) ->
{ok, Sock} = gen_tcp:connect(Node, …),
gen_tcp:send(Sock, Req),
35
アクターモデル(Erlang)
  1つめからレスポンス
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
Processes for Nodes
map(Node, Req, Parent) ->
{ok, Sock} = gen_tcp:connect(Node, …),
gen_tcp:send(Sock, Req),
receive
{tcp, Sock, Res} ->
send(Parent, Res);
36
アクターモデル(Erlang)
  2つめのレスポンスでクライアントに返す
  タイムアウトしても返す
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
Processes for Nodes
map(Node, Req, Parent) ->
{ok, Sock} = gen_tcp:connect(Node, …),
gen_tcp:send(Sock, Req),
receive
{tcp, Sock, Res} ->
send(Parent, Res);
37
アクターモデル(Erlang)
  2つめのレスポンスでクライアントに返す
  タイムアウトしても返す
Client
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Dynamo
Node
Process for Client
Processes for Nodes
38
Res = gather(2, []),
gen_tcp:send(Sock, Res).
gather(0, Acc) ->
Acc;
gather(N, Acc) ->
receive
Res -> gather(N-1, uniq([Res|Acc])),
after 100 -> % timeout
Acc
end.
アクターモデル(Erlang)
  プロセス単位の実装
Client
 Process for Client
 Process for Node
 Node
Client
Dynamo
Node
Dynamo
Node
Process for Client
Process for Node
39
状態はプロセスごと(共有リソースはない)
Erlang まとめ
  マルチコア・プログラミングの簡易化
  アクターモデル
  共有メモリがなく安全
  プロセスが軽い
  Copy on write 的にメッセージパッシングを効率化
  非破壊メモリ(変数への再代入不可)
  分散システム開発の簡易化
  組み込みの直列化関数
  組み込みのノード管理システム
  そこそこ速い
  Java未満,LL以上
  弱点もある(正規表現など)
40
宣伝
41
  情報処理学会誌に Erlang 解説記事を寄稿
  2009年3月号
42
Kaiとは?
43
Dynamo + memcache API
Erlang
Kai の概要
44
  Dynamoのオープンソース実装
  開発者の本籍地から命名
  検索しにくい…
  kie とかにしておけばよかった orz
  erlang, dynamo, sourceforge などと組み合わせて検索
  memcache API
  Erlang
  sourceforge.net で開発中
  http://kai.sf.net/
  開発者 3.5名
  2,260行
  基本的な振る舞いは完了
Kai の性能
45
  条件
  Xeon 2.13 GHz x4
  1 KB/データ
  メモリストレージ(ディスクも選択可)
  1ノード(like a memcached)
  10,193 qps (readのみ, 複製なし)
  5ノード
  14,212 qps (read:write = 80:20, 複製あり)
  少し前に測った値なので,いまはもう少し低いかも
46
Kaiとは?
47
Dynamo + memcache API
Erlang
48
以上
49
質問?

More Related Content

What's hot

CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
charsbar
 
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワルAndrosia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
CODE BLUE
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
Takashi SAKAGUCHI
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
Masashi Shinbara
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Clientnobu_k
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
tako pons
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
Satoshi Suzuki
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
ShinsukeYokota
 
宣言的(Declarative)ネットワーキング
宣言的(Declarative)ネットワーキング宣言的(Declarative)ネットワーキング
宣言的(Declarative)ネットワーキング
Motonori Shindo
 
Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro
工 久納
 
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門MySQL日本語利用徹底入門
MySQL日本語利用徹底入門Mikiya Okuno
 
MySQL5.6検証レポート
MySQL5.6検証レポートMySQL5.6検証レポート
MySQL5.6検証レポート
Hironori Miura
 
MySQL Partition Engine
MySQL Partition EngineMySQL Partition Engine
MySQL Partition Engine
Shinya Sugiyama
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
David Buck
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolateskoichik
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
Shinya Sugiyama
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
Shinya Sugiyama
 

What's hot (20)

CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したい
 
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワルAndrosia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Client
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
宣言的(Declarative)ネットワーキング
宣言的(Declarative)ネットワーキング宣言的(Declarative)ネットワーキング
宣言的(Declarative)ネットワーキング
 
Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro
 
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門MySQL日本語利用徹底入門
MySQL日本語利用徹底入門
 
MySQL5.6検証レポート
MySQL5.6検証レポートMySQL5.6検証レポート
MySQL5.6検証レポート
 
MySQL Partition Engine
MySQL Partition EngineMySQL Partition Engine
MySQL Partition Engine
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
 

Similar to Kai = (Dynamo + memcache API) / Erlang

Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
Amazon Web Services Japan
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Amazon Web Services Japan
 
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製するjunichi anno
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906akirahiguchi
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
junichi anno
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
NTT DATA OSS Professional Services
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
 
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_でCld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
Tech Summit 2016
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Takamasa Maejima
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
Yu Komiya
 
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
Hiroshi Nakamura
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
Sho A
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
nabe-abk
 

Similar to Kai = (Dynamo + memcache API) / Erlang (20)

Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する仮想化した DC を PowerShell で複製する
仮想化した DC を PowerShell で複製する
 
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_でCld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
Cld011 windows server_2016_hyper-v_と_virtual_machine_manager_2016_で
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
 

More from Takeru INOUE

分散ストレージに使えるかもしれないアルゴリズム
分散ストレージに使えるかもしれないアルゴリズム分散ストレージに使えるかもしれないアルゴリズム
分散ストレージに使えるかもしれないアルゴリズムTakeru INOUE
 
Rewind the last half year for Erlang
Rewind the last half year for ErlangRewind the last half year for Erlang
Rewind the last half year for ErlangTakeru INOUE
 
Process Design and Polymorphism: Lessons Learnt from Development of Kai
Process Design and Polymorphism: Lessons Learnt from Development of KaiProcess Design and Polymorphism: Lessons Learnt from Development of Kai
Process Design and Polymorphism: Lessons Learnt from Development of KaiTakeru INOUE
 
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)Takeru INOUE
 
Kai – An Open Source Implementation of Amazon’s Dynamo
Kai – An Open Source Implementation of Amazon’s DynamoKai – An Open Source Implementation of Amazon’s Dynamo
Kai – An Open Source Implementation of Amazon’s DynamoTakeru INOUE
 
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LT
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LTAmazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LT
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LTTakeru INOUE
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Takeru INOUE
 

More from Takeru INOUE (7)

分散ストレージに使えるかもしれないアルゴリズム
分散ストレージに使えるかもしれないアルゴリズム分散ストレージに使えるかもしれないアルゴリズム
分散ストレージに使えるかもしれないアルゴリズム
 
Rewind the last half year for Erlang
Rewind the last half year for ErlangRewind the last half year for Erlang
Rewind the last half year for Erlang
 
Process Design and Polymorphism: Lessons Learnt from Development of Kai
Process Design and Polymorphism: Lessons Learnt from Development of KaiProcess Design and Polymorphism: Lessons Learnt from Development of Kai
Process Design and Polymorphism: Lessons Learnt from Development of Kai
 
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)
Kai – An Open Source Implementation of Amazon’s Dynamo (in Japanese)
 
Kai – An Open Source Implementation of Amazon’s Dynamo
Kai – An Open Source Implementation of Amazon’s DynamoKai – An Open Source Implementation of Amazon’s Dynamo
Kai – An Open Source Implementation of Amazon’s Dynamo
 
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LT
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LTAmazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LT
Amazon's Dynamo in POE and Erlang @ YAPC::Asia 2008 LT
 
Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008Practical AtomPub Servers @ YAPC::Asia 2008
Practical AtomPub Servers @ YAPC::Asia 2008
 

Recently uploaded

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 

Recently uploaded (14)

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 

Kai = (Dynamo + memcache API) / Erlang