Submit Search
activerecord-turntable
12 likes
4,957 views
Drecom Co., Ltd.
1 of 42
Download now
Downloaded 25 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
More Related Content
PPTX
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
オラクルエンジニア通信
PDF
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
Yusuke Suzuki
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
PDF
Paxos
Preferred Networks
PDF
MySQL 8.0で憶えておいてほしいこと
yoku0825
PDF
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
PDF
Apache NiFi の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
オラクルエンジニア通信
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
Yusuke Suzuki
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Paxos
Preferred Networks
MySQL 8.0で憶えておいてほしいこと
yoku0825
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
Recruit Technologies
Apache NiFi の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
What's hot
(20)
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
PDF
Akkaとは。アクターモデル とは。
Kenjiro Kubota
PDF
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
Shunsuke Kikuchi
PDF
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
PPTX
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
PPTX
KubernetesでGPUクラスタを管理したい
Yuji Oshima
PDF
20180801 AWS Black Belt Online Seminar Amazon QuickSight アップデート
Amazon Web Services Japan
PPTX
地理分散DBについて
Kumazaki Hiroki
PDF
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
PDF
20200811 AWS Black Belt Online Seminar CloudEndure
Amazon Web Services Japan
PDF
SRv6 study
Hiro Mura
PDF
KafkaとPulsar
Yahoo!デベロッパーネットワーク
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PDF
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
PDF
普通の人でもわかる Paxos
tyonekura
PDF
DynamoDBを導入した話
dcubeio
PDF
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オラクルエンジニア通信
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
PDF
해외 사례로 보는 Billing for OpenStack Solution
Nalee Jang
PDF
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
Akkaとは。アクターモデル とは。
Kenjiro Kubota
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
Shunsuke Kikuchi
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
KubernetesでGPUクラスタを管理したい
Yuji Oshima
20180801 AWS Black Belt Online Seminar Amazon QuickSight アップデート
Amazon Web Services Japan
地理分散DBについて
Kumazaki Hiroki
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
20200811 AWS Black Belt Online Seminar CloudEndure
Amazon Web Services Japan
SRv6 study
Hiro Mura
KafkaとPulsar
Yahoo!デベロッパーネットワーク
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
普通の人でもわかる Paxos
tyonekura
DynamoDBを導入した話
dcubeio
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オラクルエンジニア通信
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
해외 사례로 보는 Billing for OpenStack Solution
Nalee Jang
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
Ad
Similar to activerecord-turntable
(20)
PDF
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
PDF
20120409 aws meister-reloaded-dynamo-db
Amazon Web Services Japan
PDF
0730 bp study#35発表資料
Yasuhiro Horiuchi
PDF
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
PDF
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
PDF
スマートニュースの世界展開を支えるログ解析基盤
Takumi Sakamoto
PDF
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-
SORACOM, INC
PDF
20110517 okuyama ソーシャルメディアが育てた技術勉強会
Takahiro Iwase
PDF
Apache Drill を利用した実データの分析
MapR Technologies Japan
PDF
MongoDBざっくり解説
知教 本間
PDF
Ruby with AWS DynamoDB
Yuto Ogi
PDF
Flume cassandra real time log processing (日本語)
CLOUDIAN KK
PDF
InfoTalk springbreak_2012
Hiroshi Bunya
KEY
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
decode2016
PPTX
Windows Azure 基盤を支えるテクノロジー
Kazumi Hirose
PPTX
Windows Azure
Microsoft Openness Japan
PDF
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
Masahiro NAKAYAMA
PDF
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
MorioImai
PPTX
“D” は何のD ?
gipwest
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
20120409 aws meister-reloaded-dynamo-db
Amazon Web Services Japan
0730 bp study#35発表資料
Yasuhiro Horiuchi
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
スマートニュースの世界展開を支えるログ解析基盤
Takumi Sakamoto
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-
SORACOM, INC
20110517 okuyama ソーシャルメディアが育てた技術勉強会
Takahiro Iwase
Apache Drill を利用した実データの分析
MapR Technologies Japan
MongoDBざっくり解説
知教 本間
Ruby with AWS DynamoDB
Yuto Ogi
Flume cassandra real time log processing (日本語)
CLOUDIAN KK
InfoTalk springbreak_2012
Hiroshi Bunya
実録!Railsのはまりポイント10選
Drecom Co., Ltd.
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
decode2016
Windows Azure 基盤を支えるテクノロジー
Kazumi Hirose
Windows Azure
Microsoft Openness Japan
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
Masahiro NAKAYAMA
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
MorioImai
“D” は何のD ?
gipwest
Ad
More from Drecom Co., Ltd.
(20)
PDF
コンテナで始める柔軟な AWS Lambda 生活
Drecom Co., Ltd.
PDF
サービスのインシデントを解決するには.pdf
Drecom Co., Ltd.
PPTX
ドリコムサマージョブ報告 by 佐々木 誠治
Drecom Co., Ltd.
PPTX
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
Drecom Co., Ltd.
PDF
HTML5 ゲームフレームワーク開発について
Drecom Co., Ltd.
PDF
「AROW」お披露目(導入編)
Drecom Co., Ltd.
PDF
「AROW」お披露目(実用編)
Drecom Co., Ltd.
PDF
AROW の紹介 〜概要編〜
Drecom Co., Ltd.
PDF
AROW の紹介 〜実践編〜
Drecom Co., Ltd.
PDF
rails-developers-meetup-day4
Drecom Co., Ltd.
PDF
html5conf2018-sponsor-session
Drecom Co., Ltd.
PPTX
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
PPTX
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
Drecom Co., Ltd.
PPTX
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
Drecom Co., Ltd.
PDF
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
PDF
位置情報を常に取得するのはつらいよ
Drecom Co., Ltd.
PDF
カンバンと朝会とわたくし
Drecom Co., Ltd.
PDF
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
Drecom Co., Ltd.
PDF
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
PDF
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
Drecom Co., Ltd.
コンテナで始める柔軟な AWS Lambda 生活
Drecom Co., Ltd.
サービスのインシデントを解決するには.pdf
Drecom Co., Ltd.
ドリコムサマージョブ報告 by 佐々木 誠治
Drecom Co., Ltd.
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
Drecom Co., Ltd.
HTML5 ゲームフレームワーク開発について
Drecom Co., Ltd.
「AROW」お披露目(導入編)
Drecom Co., Ltd.
「AROW」お披露目(実用編)
Drecom Co., Ltd.
AROW の紹介 〜概要編〜
Drecom Co., Ltd.
AROW の紹介 〜実践編〜
Drecom Co., Ltd.
rails-developers-meetup-day4
Drecom Co., Ltd.
html5conf2018-sponsor-session
Drecom Co., Ltd.
DApps のユーザ認証に web3.eth.personal.sign を使おう!
Drecom Co., Ltd.
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
Drecom Co., Ltd.
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
Drecom Co., Ltd.
今月のレッツゴー陰陽師!
Drecom Co., Ltd.
位置情報を常に取得するのはつらいよ
Drecom Co., Ltd.
カンバンと朝会とわたくし
Drecom Co., Ltd.
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
Drecom Co., Ltd.
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
Drecom Co., Ltd.
activerecord-turntable
1.
ドリコムライブラリ大公開 gussan@Drecom
Co., Ltd. #megurorails Copyright © Drecom Co., Ltd.
2.
提供
Copyright © Drecom Co., Ltd.
3.
自己紹介 • @gussan
※顔出しNG • ソーシャルゲーム基盤開発本部 • アーキテクト • ミドルウェア選定・ライブラリ開発等 Copyright © Drecom Co., Ltd.
4.
※大公開と言いつつ、 本日紹介するのは、 一つになります。。
Copyright © Drecom Co., Ltd.
5.
activerecord-turntable http://github.com/drecom/activerecord-turntable
本日公開! Copyright © Drecom Co., Ltd.
6.
アジェンダ • 概要 • 機能説明 •
デモ • Edgeの話 • 終わりに Copyright © Drecom Co., Ltd.
7.
activerecord-turntable
概要 Copyright © Drecom Co., Ltd.
8.
activerecord-turntable http://github.com/drecom/activerecord-turntable •
ActiveRecord Sharding Plugin • Railsアプリをスケールさせる • 長いので ターンテーブル と呼びます Copyright © Drecom Co., Ltd.
9.
Shardingって何よ • 水平分散 • 例)
ブログサービスならブログ毎にDB を分ける App blog_id=1 blog_id=3 DB1 DB2 DB3 Copyright © Drecom Co., Ltd.
10.
既存のSharding • Spider for
MySQL • ソーシャルゲームとの相性 • Railsとの相性 • 今はかなり改善されているはず • Octopus, DataFabric, db_charmer • DBアクセスするコード殆どに手を入れなけれ ばいけない Copyright © Drecom Co., Ltd.
11.
既存Shardingの痛み • DBアクセスするコード全てに何かしら 対応が必要 •
=> 対応漏れが発生しやすい • => 対応に時間がかかる Copyright © Drecom Co., Ltd.
12.
activerecord-turntable • Sharding導入時の痛みを軽減 •
アプリケーションコードに入り込ま ない • Shardingを意識しなくても8割方動 く Copyright © Drecom Co., Ltd.
13.
何をやるのか • 分散定義に従って、クエリ情報から キーを元にModelが接続するShardを
Clusterから自動的に選択することによ り、Shardingを実現するplugin Copyright © Drecom Co., Ltd.
14.
図解 ActiveRecord::Base
Turntable AR::Base AR::Base Query Query ConnectionPool Proxy Connection CP CP CP Conn Conn Conn DB DB DB DB Copyright © Drecom Co., Ltd.
15.
サーバ構成例 Master
App Sequencer Cluster Shard1 Shard2 Shard3 Copyright © Drecom Co., Ltd.
16.
用語 • Shard =
データが保存されるノード • Cluster = 同じデータを保存するShard の塊 • Sequencer = 採番DB • Master = 通常のdatabase.ymlで指定 するDB。schema情報が取得される。 Copyright © Drecom Co., Ltd.
17.
activerecord-turntable
機能 Copyright © Drecom Co., Ltd.
18.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • DB分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
19.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • DB分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
20.
分散定義 class User <
ActiveRecord::Base turntable :user_cluster, :id end + 分散設定ファイル turntable.yml 接続設定ファイル database.yml Copyright © Drecom Co., Ltd.
21.
分散定義 • mysqlのpartitioning • どの値をキーにして、どの値ならば、
どのDBに保存するかを設定として書く • 分散アルゴリズムはpluggable Copyright © Drecom Co., Ltd.
22.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • DB分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
23.
自動クエリ分散 # on Octopus User.using(:xxx).where(id:
10) # on db_charmer User.shard_for(10).where(id: 10) # on turntable User.where(id: 10) Copyright © Drecom Co., Ltd.
24.
自動クエリ分散 • 分散定義に従い、クエリを必要な shardに振り分けて結果をmerge •
内部的にはconnection_poolを置き換 えてクエリを盗み見 • 対応できないクエリもある Copyright © Drecom Co., Ltd.
25.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • DB分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
26.
採番機能 class User <
ActiveRecord::Base turntable :user_cluster, :id sequencer end Copyright © Drecom Co., Ltd.
27.
採番機能 # on Octopus Octopus.using(:shard1)
do User.create(name: "hoge") end # on db_charmer User.shard_for(10).create(name: "hoge") # on turntable User.create(name: "hoge") Copyright © Drecom Co., Ltd.
28.
採番機能 • ARは一意なサロゲートキーが前提 • 分散環境下で一意なIDを振る仕組み •
採番方法自体はpluggable • mysql上に採番テーブルを作っている Copyright © Drecom Co., Ltd.
29.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • 分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
30.
分散トランザクション User.shards_transaction([user1, user2]) do
.... user1.save! user2.save! end Copyright © Drecom Co., Ltd.
31.
分散トランザクション • 複数のDBを同時に操作する • 例)
User間でアイテムの受け渡し等 • XAトランザクションではなく通常の transactionをネストしているだけ • 操作するobjをまとめて渡す Copyright © Drecom Co., Ltd.
32.
機能 • 分散定義 • 自動クエリ分散 •
採番機能 • 分散トランザクション • Migration, Rake task拡張など Copyright © Drecom Co., Ltd.
33.
Migration & Rake
tasks • Migration毎にどのshardを操作するか を指定できる。 • db:create, db:dropなどが全ての shardにも同時実行される • その他, README参照 Copyright © Drecom Co., Ltd.
34.
できないこと • has_many :throughやhabtmで制限あり
例) Friend関係など • DBをまたがったJOIN、ORDER BYなど。 • できないことは設計とロジックで吸収 Copyright © Drecom Co., Ltd.
35.
デモ
Copyright © Drecom Co., Ltd.
36.
内部構造 • connection_poolをproxyオブジェクトに 置き換え •
ARel or SQLを受け取ったら値をbind • SQLをparseして対象shardにクエリ送信 • 結果をmergeして返す Copyright © Drecom Co., Ltd.
37.
Edgeのお話
Copyright © Drecom Co., Ltd.
38.
AR Edgeのお話 • ActiveRecord::Model
• 継承でもmixinでもARが使える • AR::Baseの中身はAR::Coreへ • IdentityMapなくなった Copyright © Drecom Co., Ltd.
39.
turntableの将来 • turntableはRails 4.0にも対応予定 •
参照分散等、多様な構成に対応 • 拡張容易にしたい Copyright © Drecom Co., Ltd.
40.
最後に • activerecord-turntableを使うこと で、ActiveRecord上で楽にSharding
を実現することができます。 • 他のORMで実装して頂ける方緩募 Copyright © Drecom Co., Ltd.
41.
合わせて読みたい http://www.slideshare.net/drecom/ss-11667563
Copyright © Drecom Co., Ltd.
42.
ご清聴ありがとうございました。
activerecord-turntable http://github.com/drecom/activerecord-turntable エンジニア大募集中 Copyright © Drecom Co., Ltd.
Editor's Notes
#2:
\n
#3:
\n
#4:
\n
#5:
\n
#6:
\n
#7:
\n
#8:
\n
#9:
\n
#10:
\n
#11:
\n
#12:
\n
#13:
\n
#14:
\n
#15:
\n
#16:
\n
#17:
\n
#18:
\n
#19:
\n
#20:
\n
#21:
\n
#22:
\n
#23:
\n
#24:
\n
#25:
\n
#26:
\n
#27:
\n
#28:
\n
#29:
\n
#30:
\n
#31:
\n
#32:
\n
#33:
\n
#34:
\n
#35:
\n
#36:
\n
#37:
\n
#38:
\n
#39:
\n
#40:
\n
#41:
\n
#42:
\n
#43:
\n
Download