Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
履歴が膨大なら、どう保存する? 〜Kaigi on Rails登壇後に深まったデータ設計の話〜
Search
Shoichi Ochi
November 06, 2026
Technology
6
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
履歴が膨大なら、どう保存する? 〜Kaigi on Rails登壇後に深まったデータ設計の話〜
Kaigi on Rails 2026事後勉強会 登壇資料
https://smarthr.connpass.com/event/407402/
Shoichi Ochi
November 06, 2026
More Decks by Shoichi Ochi
See All by Shoichi Ochi
登壇はいいぞ! 〜Kaigi on Railsに登壇して起きた3つの変化〜
occhi
0
99
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
3.1k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
830
Prevent Concurrency Problems! A Practical Introduction to Transactions
occhi
0
36
並行性の問題を防げ!実践トランザクション入門
occhi
0
340
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
260
高速化&コスト半減!? GitHub Actionsの サードパーティマネージドランナーの比較
occhi
1
1k
HTTPじゃ遅すぎる! SwitchBotを自作ハブで動かして学ぶBLE通信
occhi
0
2.4k
Other Decks in Technology
See All in Technology
超⼩型・多⾔語検索モデル Bekko Embedding
hotchpotch
1
110
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
120
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
100
Claude Codeで作ったアプリを安全に公開する/Built with Claude Japan 2026
yoshidashingo
0
160
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.2k
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
150
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
240
生成AI時代のIAMのマニアックな話
takuros
6
1.9k
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
410
今から始めるAWS環境の暗号移行 - ポスト量子時代に備える
sato4mi
0
150
AI AgentによるEmbedded SREの取り組み
tgidgd
1
340
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
1
100
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Prompt Engineering for Job Search
mfonobong
0
570
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
350
Building the Perfect Custom Keyboard
takai
2
950
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
970
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
550
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
610
Transcript
履歴が膨大なら、どう保存する? 〜Kaigi on Rails登壇後に深まったデータ設計の話〜 越智 翔一(occhi) Kaigi on Rails 2026事後勉強会
2026-11-06
自己紹介 おち しょういち 越智 翔一(occhi) SmartBank, Inc. Software Engineer 経歴:
イタンジ株式会社 → GMOビューティー株式会社 → 株式会社スマートバンク 趣味: 筋トレ @ochi11181101 @sho-work 2
Kaigi on Rails 2026では、 大量データの書き込みボトルネックに焦点を当てた話をし ました 3
Kaigi on Rails 2026 でこんな登壇をしました! 4
データモデルを工夫して、DBに保存 5
登壇後の議論から、次の問いが生まれた: 1電話番号の履歴が膨大で、 重い加工が要るなら? 6
思考実験:履歴 が膨大で(=n)、加工に O(n²) かかるとしたら 7
LLMに雑にO(n²)のロジックを書かせてみる ロジックの詳細までは見れておらずです・・・・ 8
性能要件:読み取りは 50 ms 以内 9
素直に、履歴を1件1行で保存して、毎回計算すると? 10
Rubyのレイテンシーは n² に比例して伸び、7,305件で要件を満たせない 11
時間のほとんどは、CPU の計算だった 12
高速化していく 13
手段1: 言語を変えてみる🤔 14
手段1 言語を変える:Rustなら約50倍速いが、読むたびの O(n²) は残る 15
Rustにすると速い!(〜完〜) 16
冗談です(水飲みます) 17
Rubyでも高速化できないかな? 18
ところで 19
先週末にあったイベント、覚えていますか 20
10/31にISUCON2026がありましたね! 21
留意点:保存できるのは、決めた加工の結果だけ • 画像の署名がCPU boundかつ、とんでもなく時間がかかっていた • 多くの方は事前に計算し、ルックアップテーブルにしておくことで得 点を向上させていた 22
これ、今回も使えるじゃん! 23
手段2: 結果を事前計算して保存しておく 24
手段2: 結果を事前計算して保存しておく 25
高速化成功!🎉 26
オチ(occhiだけに!) 27
今回のやり方が適さないケース • 更新のたびに再計算するコストを許容できない場合 • 計算結果を常に最新に保つ必要がある場合 28
ご清聴ありがとうございました 29
Appendix:ルックアップテーブル例 30
Appendix:周期の探索は、候補ごとに全履歴を比べるので O(n²) 31
電話番号ごとの「契約の周期」が欲しいとする 32