SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
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
質問?

Weitere ähnliche Inhalte

Was ist angesagt?

CPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいCPANの依存モジュールをもう少し正しく検出したい
CPANの依存モジュールをもう少し正しく検出したいcharsbar
 
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワルAndrosia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワル
Androsia:一歩先のメモリ内Androidアプリケーションデータの保護 by サミット・アンワルCODE BLUE
 
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
 
思ったほど怖くない! 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_l8y_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 2019David 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
 

Was ist angesagt? (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の基本的なパラメータ比較
 

Ähnlich wie Kai = (Dynamo + memcache API) / Erlang

Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
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 tokyo2012Fumito 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
 
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 JRubyHiroshi 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
 

Ähnlich wie 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台にて)
 

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

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

Kürzlich hochgeladen

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (7)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Kai = (Dynamo + memcache API) / Erlang