Slide 1

Slide 1 text

ϖʔδϟઐ༻DBͷ͝ఏҊ ϖʔδϟnight <1> 2014-07-04

Slide 2

Slide 2 text

ࣗݾ঺հ • @mackee_w / Ϛίϐʔͱ͍͏໊લ • ໘ന๏ਓΧϠοΫͱ͍͏ձࣾ • ීஈ͸Perl • ࠷ۙ͸εϚϗήʔϜͷαʔόαΠυ୲౰

Slide 3

Slide 3 text

એ఻Ͱ͢ • 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

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ҋ͸෧͡ࠐΊΔ

Slide 6

Slide 6 text

Έͳ͞Μϖʔδϟ࣮૷ͯ͠· ͔͢ʁ

Slide 7

Slide 7 text

ྫ͑͹ϖʔδϟͷதͰ͜ΜͳΫ ΤϦͰҜࢠΛ౤͛ΒΕͨ͜ͱ͸ ͋Γ·ͤΜ͔ʁ ˞ฐࣾք۾Ͱ͸ΫιΫΤϦͱ͔ϩάΛEFWOVMMʹ ࣺͯΔͱ͔͢ΔͱҜࢠ͕ඈΜͰ͘ΔͱݴΘΕ͍ͯ·͢

Slide 8

Slide 8 text

SELECT * FROM t1 WHERE hoge_id = 1 ORDER BY created_at ASC LIMIT 100000, 10;

Slide 9

Slide 9 text

LIMIT 100000, 1

Slide 10

Slide 10 text

ؒҧ͍ͳ͘अѱͰ͋Δ͕ ͜ΕΛ͏·͍͜ͱ෧͡ࠐΊΔʹ͸

Slide 11

Slide 11 text

pagerd ϖʔδϟઐ༻σʔλϕʔε

Slide 12

Slide 12 text

σϞ͠·͢

Slide 13

Slide 13 text

pagerdͷػೳ • ΩʔʹΑͬͯιʔτ͞Εͨ݁Ռͷอ࣋ • /offset//limit/ͰͷཁૉͷΞΫηε ͚ͩͰ͢

Slide 14

Slide 14 text

΍͍ͬͯΔ͜ͱ • όοΫΤϯυʹLevelDBΛ࢖༻ • ΩʔͰউखʹιʔτ͞ΕΔ͠ϝϞϦʹ৐Γؾ ͳΒແͯ͘΋ͦͦ͜͜ؤுΕΔ͠ศར • γʔέϯγϟϧϦʔυ͕͔ͳΓ଎͍ ࢀߟ: LevelDBೖ໳ (جຊฤ) - from scratch http://yosuke-furukawa.hatenablog.com/entry/2014/05/05/095207

Slide 15

Slide 15 text

΍͍ͬͯΔ͜ͱ • offsetʹ10000ͱ͔ࢦఆ͞ΕͨΒ্͔Β10000 ·Ͱ஍ಓʹseek͔ͯͦ͜͠Βlimit෼ग़͢ʂ

Slide 16

Slide 16 text

΍͍ͬͯΔ͜ͱ • offsetʹ10000ͱ͔ࢦఆ͞ΕͨΒ্͔Β10000 ·Ͱ஍ಓʹseek͔ͯͦ͜͠Βlimit෼ग़͢ʂ ͬͯ΍Δͱ஗͔ͬͨͷͰ Ωϟογϡ͠·ͨ͠

Slide 17

Slide 17 text

Ωϟογϡํ๏ • Ұ൪ॳΊʹ10000ͱ͔͖ͨΒఘΊͯ10000· ͰᢞΊΔ -> O(n) • ͦͷͱ͖ʹ10000ͷҐஔͷΩʔΛΩϟογϡ • ࣍ʹ10010ͱ͖ͨΒҰؾʹ10000ͷͱ͜Ζ· ͰSeek͔ͯͦ͜͠ΒͳΊΔ

Slide 18

Slide 18 text

σϝϦοτ • Ωϟογϡ͢ΔΩʔ͕૿͍͑ͯ͘ͱߋ৽ίετ ͕ߴ͘ͳΔ • expire͢Δͱ͔ೱ౓͕ҰఆʹͳΔΑ͏ʹ཈͑Δ ͱ͔ -> ࣮૷͍ͯ͠ͳ͍ʂ • ߋ৽͍ͯ͠ΔؒʹΞΫηε͢Δͱഁ୼ͦ͠͏ • LevelDB͸ΞτϛοΫߋ৽࢖͑ΔͷͰͦΕͰ

Slide 19

Slide 19 text

ଞʹ΍Γ͔ͨͬͨ͜ͱ • ձࣾͰʮOFFSET 100000ͱ͔΍Γ͍ͨΜͰ͢ ͚ΕͲʂʯͬͯݴ͏ͱMySQLͷιʔεΛಡΉ ͷ͕झຯͷਓͱ͔෼ࢄΞϧΰϦζϜʹৄ͍͠ ਓͱ͔͕ू·͖ͬͯͯศར • ͦͷதͰʮπϦʔͰ࿨Ͱ؅ཧ͢ΔͷͲ͏Αʯ ͱ͍͏ҙݟ͕͋ͬͨ

Slide 20

Slide 20 text

πϦʔͰ࿨ͱ͸

Slide 21

Slide 21 text

πϦʔͰ࿨ͱ͸

Slide 22

Slide 22 text

πϦʔͰ࿨ͱ͸

Slide 23

Slide 23 text

mackee / pagerd https://github.com/mackee/pagerd

Slide 24

Slide 24 text

·ͱΊ • σʔλϕʔεΛ࣮૷͢Δ͍ͬͯ͏ͷΛ΍Δͱ OFFSETΛ΍Δͷ͕͍͔ʹΊΜͲ͍͔͘͞෼͔ͬͯ ྑ͍ • ͋ͱ໘ന๏ਓΧϠοΫͰ͸αʔόαΠυΤϯδχ ΞΛืू͓ͯ͠Γ·͢ • ձࣾͷࣗࣾαʔϏεͷ։ൃݴޠɺPerl͔ΒGoʹҠ ߦ͠·͢ɻGoͰ࢓ࣄ͍ͨ͠ਓ͸ͪ͜Β΁ʙ