Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ページャ専用DBのご提案
Search
mackee
July 04, 2014
Technology
5
8.9k
ページャ専用DBのご提案
http://www.zusaar.com/event/5477013
mackee
July 04, 2014
Tweet
Share
More Decks by mackee
See All by mackee
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
66
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
330
perl for shell, awk and sed programmers
mackee
2
1.8k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
260
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
190
マイクロサービス化を利用した Goへの移行事例
mackee
0
320
PerlでつくるフルスクラッチWebAuthn/パスキー認証 / Demonstration of full-scratch WebAuthn/Passkey Authentication written in Perl
mackee
3
3.8k
SRE定例やその辺の取り組みをアプリケーションエンジニア目線で語る / "Observe" about SRE Meeting by Application Engineer
mackee
0
1.9k
TinyGoで使えるORM sqllaの 紹介とTinyGoで使えるようにするための工夫
mackee
0
1.4k
Other Decks in Technology
See All in Technology
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
530
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.7k
Amazon Aurora のバージョンアップ手法について
smt7174
2
160
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
310
困難を「一般解」で解く
fujiwara3
7
1.2k
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
280
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
210
手を動かしてレベルアップしよう!
maruto
0
230
AIエージェント入門
minorun365
PRO
32
19k
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
850
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
200
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Rails Girls Zürich Keynote
gr2m
94
13k
The Cult of Friendly URLs
andyhume
78
6.2k
Optimizing for Happiness
mojombo
376
70k
How to Ace a Technical Interview
jacobian
276
23k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
A designer walks into a library…
pauljervisheath
205
24k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Transcript
ϖʔδϟઐ༻DBͷ͝ఏҊ ϖʔδϟnight <1> 2014-07-04
ࣗݾհ • @mackee_w / Ϛίϐʔͱ͍͏໊લ • ໘ന๏ਓΧϠοΫͱ͍͏ձࣾ • ීஈPerl •
࠷ۙεϚϗήʔϜͷαʔόαΠυ୲
એͰ͢ • YAPC::Asia 2014ʹ2ͭτʔΫԠืͯ͠·͢ • ڵຯ͕͋Εͯϒͱ͔͍͍Ͷ͍ͩ͘͞ʙ • Perl meets Real
World ʙϋʔυΣΞͱ࿀ʹམͪΔPerlͷ͍ํʙ • http://yapcasia.org/2014/talk/show/103a434e-ec02-11e3-bd6d-c7a06aeab6a4 • झຯ։ൃͷͨΊͷΫϥυ/VPS׆༻ज़ • http://yapcasia.org/2014/talk/show/adfd5cb8-01c1-11e4-9357-07b16aeab6a4
None
ҋ෧͡ࠐΊΔ
Έͳ͞Μϖʔδϟ࣮ͯ͠· ͔͢ʁ
ྫ͑ϖʔδϟͷதͰ͜ΜͳΫ ΤϦͰҜࢠΛ͛ΒΕͨ͜ͱ ͋Γ·ͤΜ͔ʁ ˞ฐࣾք۾ͰΫιΫΤϦͱ͔ϩάΛEFWOVMMʹ ࣺͯΔͱ͔͢ΔͱҜࢠ͕ඈΜͰ͘ΔͱݴΘΕ͍ͯ·͢
SELECT * FROM t1 WHERE hoge_id = 1 ORDER BY
created_at ASC LIMIT 100000, 10;
LIMIT 100000, 1
ؒҧ͍ͳ͘अѱͰ͋Δ͕ ͜ΕΛ͏·͍͜ͱ෧͡ࠐΊΔʹ
pagerd ϖʔδϟઐ༻σʔλϕʔε
σϞ͠·͢
pagerdͷػೳ • ΩʔʹΑͬͯιʔτ͞Εͨ݁Ռͷอ࣋ • /offset/<n>/limit/<m>ͰͷཁૉͷΞΫηε ͚ͩͰ͢
͍ͬͯΔ͜ͱ • όοΫΤϯυʹLevelDBΛ༻ • ΩʔͰউखʹιʔτ͞ΕΔ͠ϝϞϦʹΓؾ ͳΒແͯͦͦ͘͜͜ؤுΕΔ͠ศར • γʔέϯγϟϧϦʔυ͕͔ͳΓ͍ ࢀߟ: LevelDBೖ
(جຊฤ) - from scratch http://yosuke-furukawa.hatenablog.com/entry/2014/05/05/095207
͍ͬͯΔ͜ͱ • offsetʹ10000ͱ͔ࢦఆ͞ΕͨΒ্͔Β10000 ·Ͱಓʹseek͔ͯͦ͜͠Βlimitग़͢ʂ
͍ͬͯΔ͜ͱ • offsetʹ10000ͱ͔ࢦఆ͞ΕͨΒ্͔Β10000 ·Ͱಓʹseek͔ͯͦ͜͠Βlimitग़͢ʂ ͬͯΔͱ͔ͬͨͷͰ Ωϟογϡ͠·ͨ͠
Ωϟογϡํ๏ • Ұ൪ॳΊʹ10000ͱ͔͖ͨΒఘΊͯ10000· ͰᢞΊΔ -> O(n) • ͦͷͱ͖ʹ10000ͷҐஔͷΩʔΛΩϟογϡ • ࣍ʹ10010ͱ͖ͨΒҰؾʹ10000ͷͱ͜Ζ·
ͰSeek͔ͯͦ͜͠ΒͳΊΔ
σϝϦοτ • Ωϟογϡ͢ΔΩʔ͕૿͍͑ͯ͘ͱߋ৽ίετ ͕ߴ͘ͳΔ • expire͢Δͱ͔ೱ͕ҰఆʹͳΔΑ͏ʹ͑Δ ͱ͔ -> ࣮͍ͯ͠ͳ͍ʂ •
ߋ৽͍ͯ͠ΔؒʹΞΫηε͢Δͱഁͦ͠͏ • LevelDBΞτϛοΫߋ৽͑ΔͷͰͦΕͰ
ଞʹΓ͔ͨͬͨ͜ͱ • ձࣾͰʮOFFSET 100000ͱ͔Γ͍ͨΜͰ͢ ͚ΕͲʂʯͬͯݴ͏ͱMySQLͷιʔεΛಡΉ ͷ͕झຯͷਓͱ͔ࢄΞϧΰϦζϜʹৄ͍͠ ਓͱ͔͕ू·͖ͬͯͯศར • ͦͷதͰʮπϦʔͰͰཧ͢ΔͷͲ͏Αʯ ͱ͍͏ҙݟ͕͋ͬͨ
πϦʔͰͱ
πϦʔͰͱ
πϦʔͰͱ
mackee / pagerd https://github.com/mackee/pagerd
·ͱΊ • σʔλϕʔεΛ࣮͢Δ͍ͬͯ͏ͷΛΔͱ OFFSETΛΔͷ͕͍͔ʹΊΜͲ͍͔͔ͬͯ͘͞ ྑ͍ • ͋ͱ໘ന๏ਓΧϠοΫͰαʔόαΠυΤϯδχ ΞΛืू͓ͯ͠Γ·͢ • ձࣾͷࣗࣾαʔϏεͷ։ൃݴޠɺPerl͔ΒGoʹҠ
ߦ͠·͢ɻGoͰࣄ͍ͨ͠ਓͪ͜Βʙ