Slide 1

Slide 1 text

σʔλϕʔεͷ࠶ೖ໳ 2014/7/19 (Sat) 
 ୈ2ճήʔϜαʔόษڧձ

Slide 2

Slide 2 text

About Me • ੉լ ௚थ 
 twitter:@nsega • ॴଐɿGCREST,Inc 
 ΞϓϦέʔγϣϯΤϯδχΞ
 (αʔόαΠυAP/DBಘҙɺωΠςΟϒ΋࠷ۙ΍Δ)
 લ৬͸ɺSIer ͰΞϓϦΤϯδχΞ. • ίϛϡχςΟ • JavaEEษڧձ

Slide 3

Slide 3 text

About Me • ۀ຿Ͱ͸ɾɾ
 ਺े୆DB(RDBMS/NoSQL) - PostgreSQL, MySQL
 αʔόར༻ͨ͠αʔϏεͷ։ൃ/ӡ༻ • ۀ຿֎Ͱ͸ɾɾ • ࣾ಺/ࣾ֎ษڧձͰNoSQLؔ࿈ͷൃදΛগʑ • ΦʔϜࣾग़൛̓ͭͷσʔλϕʔἐͭͷੈք:
 MongoDBͷνϟϓλʔ/ϨϏϡʔ

Slide 4

Slide 4 text

͸͡Ίʹ • σʔλϕʔεΛ࢖ͬͨΞϓϦ։ൃͰɺαʔόαΠ υͱͯ͠ܞΘͬͨࢲݸਓͷܦݧͰ঺հͤͯ͞΋Β ͍·͢ɻ • αʔόαΠυ/DB ͷ͜ͱΛ͋·Γ஌Βͳ͍ॳ৺ ऀɾதڃऀํ޲͚ͷ ಺༰ʹͳ͍ͬͯ·͢ɻ • ؒҧ͍ɺෆ໌఺ͳͲ͕͋Ε͹ɺ
 ͝ԕྀͳ͘ποίΜͰ͍ͩ͘͞ɺ׻ܴ͠·͢

Slide 5

Slide 5 text

Agenda

Slide 6

Slide 6 text

Agenda • σʔλϕʔε ʹ͍ͭͯ • RDBMSͱNoSQL ʹ͍ͭͯ • DB/ςʔϒϧઃܭ ʹ͍ͭͯ • ࣮ࡍʹݱ৔ͰΑ͘΍ΔTips঺հ • ·ͱΊ

Slide 7

Slide 7 text

σʔλϕʔεʹ͍ͭͯ

Slide 8

Slide 8 text

ͦ΋ͦ΋σʔλϕʔεͱ͸ ͳΜͰ͠ΐ͏͔ʁ

Slide 9

Slide 9 text

σʔλϕʔεͱ͸ʁ • ࠔͬͨͱ͖ͷ wikipedia
 
 
 
 
 
 
 
 http://ja.wikipedia.org/wiki/σʔλϕʔε

Slide 10

Slide 10 text

σʔλϕʔεʹ σʔλΛอଘͬͯʁ • σʔλϕʔεʹอଘ͢Δʹ͸ɺσʔλ͕Ͳ͏͍͏ ܗ͔͕ఆٛ͞ΕΔඞཁ͕͋Δɻ • σʔλϕʔεʹ֨ೲ͢ΔσʔλΛͲͷΑ͏ʹ഑ஔ ͢Δ͔Λ࿦ཧతɾ෺ཧతͳଆ໘͔Βنఆ͢Δ΋ ͷ(σʔλϞσϧ)͕ඞཁɻ

Slide 11

Slide 11 text

σʔλϞσϧͬͯʁ ! • σʔλϞσϧʹ͸ɺओʹ࣍ͷछྨ͕ڍ͛ΒΕΔɻ • ֊૚ܕσʔλϞσϧ • ωοτϫʔΫܕσʔλϞσϧ • ϦϨʔγϣφϧσʔλϞσϧ (ؔ܎Ϟσϧ) ↑Α͘ࢲୡ͕͔ͭ͏Ϟσϧ͕͜Ε http://ja.wikipedia.org/wiki/σʔλϕʔε

Slide 12

Slide 12 text

ϦϨʔγϣφϧσʔλϕʔεʁ • ϦϨʔγϣφϧσʔλϕʔε(RDB)ͱ͸
 ϦϨʔγϣφϧσʔλϞσϧʹ΋ͱ͍ͮͯ
 ઃܭɾ։ൃ͞ΕΔσʔλϕʔεɻ • ීஈɺࢲୡ͕σʔλϕʔεͱಡΜͰ͍Δ΋ͷ
 => ϦϨʔγϣφϧσʔλϕʔε(RDB)Λࢦ͢͜ ͱ͕ଟ͍ɻ

Slide 13

Slide 13 text

RDBMSͷ σʔλΛѻ͏ʹ͸ʁ • SQLͷग़൪Ͱ͢ɻ
 
 
 
 
 
 
 http://ja.wikipedia.org/wiki/SQL “SQL͸ɺϦϨʔγϣφϧσʔλϕʔε؅ཧγεςϜ (RDBMS) ʹ͓͍ ͯɺσʔλͷૢ࡞΍ఆٛΛߦ͏ͨΊͷσʔλϕʔεݴޠʢ໰͍߹Θͤ ݴޠʣͰ͋Δɻ”

Slide 14

Slide 14 text

RDBMSͷ σʔλΛѻ͏ʹ͸ʁ • SQLʹ͸ɺେ͖̏ͭ͘ͷ໾ׂͷݴޠ͕͋Δɻ • σʔλఆٛݴޠ(DDL)
 CREATE, DROP, ALTER • σʔλૢ࡞ݴޠ(DML)
 INSERT INTO, UPDATE ʙ SET ʙ
 DELTE FROM, SELECT ʙ FROM ʙ WHERE ʙ • σʔλ੍ޚݴޠ(DCL)
 GRANT, REVOKE, BEGIN, COMMIT, ROLLBACK, ..etc

Slide 15

Slide 15 text

RDBMS SQL ΞϓϦέʔγϣϯ • σʔλఆٛ(DDL) • σʔλૢ࡞(DML • σʔλ੍ޚ(DCL) σʔλϕʔε SQLͰͷର࿩ ςʔϒϧ

Slide 16

Slide 16 text

σʔλϕʔε͸ ࢖͏ඞཁ͋Δͷʁ

Slide 17

Slide 17 text

Yes ※࣍ͷ৚݅Λຬͨ͢΋ͷ

Slide 18

Slide 18 text

ෳ਺ਓͰɺ յΕͨΒେมͳ͜ͱʹ ͳΔσʔλΛؚΉɺ େྔͷσʔλΛѻ͏

Slide 19

Slide 19 text

σʔλϕʔεͷ࢖͍Ͳ͜Ζ • େྔσʔλͷ΋ͷ͔Βର৅ͷσʔλΛߴ଎ʹ୳͍ͨ͠ • େྔσʔλΛϝϞϦ಺Ͱѻ͍͍ͨ • ো֐͕ى͖ͨͱ͖ʹɺਝ଎ʹϦΧόϦ͍ͨ͠ • σʔλͷߋ৽ΛฒྻੑΛอͪͳ͕Β੍ޚ͍ͨ͠ • σʔλͷ੔߹ੑΛอূ͍ͨ͠
 http://www.amazon.co.jp/dp/4774150207 (1ষࢀর)

Slide 20

Slide 20 text

σʔλϕʔεͷ ͓͓͖͍͑ͯͨ͞ಛ௃1 • ΠϯσοΫε • αʔνʢ୳ࡧ)Λߴ଎ʹ͢ΔͨΊͷσʔλߏ଄ • ୅දతͳΠϯσοΫεྫ • B+໦ΠϯσοΫε • ϋογϡΠϯσοΫε http://ja.wikipedia.org/wiki/ࡧҾ_(σʔλϕʔε)

Slide 21

Slide 21 text

B+໦ΠϯσοΫε ϋογϡΠϯσοΫε 1͔Β7ͷΩʔͱσʔλ஋ d1-d7 ͕ϦϯΫ͞Ε͍ͯΔɻ ੺Ͱࣔ͞Εͨ࿈݁ϦετʹΑͬͯ ॱং௨Γͷૉૣ͍૸͕ࠪՄೳ http://ja.wikipedia.org/wiki/B+໦ ݕࡧ͢ΔΩʔͷ஋Λϋογϡ ؔ਺ʹ༩͑ͯϨίʔυ͕֨ೲ ͞ΕͨϖʔδΛಛఆ͢Δ http://itpro.nikkeibp.co.jp/article/COLUMN/20060113/227241/

Slide 22

Slide 22 text

σʔλϕʔεͷ ͓͓͖͍͑ͯͨ͞ಛ௃2 ! • τϥϯβΫγϣϯॲཧ • σʔλʹର͢ΔҰͭͷ࿦ཧతૢ࡞ͷࣄΛ
 τϥϯβΫγϣϯͱݺͿ • σʔλͷ੔߹ੑΛอͭͨΊʹඞཁͳཁૉ http://ja.wikipedia.org/wiki/τϥϯβΫγϣϯॲཧ

Slide 23

Slide 23 text

σʔλϕʔεͷ ͓͓͖͍͑ͯͨ͞ಛ௃2 • τϥϯβΫγϣϯʹΑ࣮ͬͯݱ͞ΕΔ͜ͱ • σʔλͷߋ৽ͷฒྻੑΛอͭɻ
 -> ෳ਺ਓͰͷߋ৽ͷέʔεʹɻ • σʔλͷ੔߹ੑΛอূ͢Δɻ
 -> ো֐ൃੜ࣌ʹσʔλ੔߹ΛอͬͨϦΧόϦΛՄೳ ʹɻ • ACIDಛੑΛ࣮ݱ͢Δɻ http://ja.wikipedia.org/wiki/ACID (ίϯϐϡʔλՊֶ)

Slide 24

Slide 24 text

τϥϯβΫγϣϯͷྫ http://www.geocities.jp/sugachan1973/doc/funto60.html (ྫ) ී௨༬͔ۚΒఆظ༬ۚ΁10ສԁΛҠ͢ॲཧ ਖ਼ৗऴྃ࣌(COMMIT) ҟৗऴྃ࣌(ROLLBACK)

Slide 25

Slide 25 text

σʔλϕʔεͷ ͓͓͖͍͑ͯͨ͞ಛ௃3 • ϨϓϦέʔγϣϯ http://ja.wikipedia.org/wiki/ϨϓϦέʔγϣϯ “ଟ͘ͷσʔλϕʔε؅ཧγεςϜ͕࠾༻͍ͯ͠Δ֓೦Ͱɺσʔλϕʔ εͷΦϦδφϧͱίϐʔͷϚελʔεϨʔϒؔ܎Λҙຯ͢ΔɻϚελʔ ଆ͸ߋ৽Λه࿥͠ɺͦΕ͕εϨʔϒ܈ʹ௨஌͞ΕΔɻεϨʔϒଆ͸ߋ ৽Λਖ਼͘͠ड͚औͬͨͱ͍͏ϝοηʔδΛૹΓɺ࣍ͷߋ৽Λड͚෇͚ ΒΕΔঢ়ଶͰ͋Δ͜ͱΛ௨஌͢Δɻ”

Slide 26

Slide 26 text

RDBMS Master Slave1 Slave2 Slave3 ϨϓϦέʔγϣϯ(ྫ) ྫ) Master:1୆ɺSlave:3୆ ߋ৽৘ใΛ ఻೻ ߋ৽৘ใ Λ఻೻ ߋ৽৘ใΛ఻೻ ߋ৽৘ใΛอ࣋

Slide 27

Slide 27 text

RDBMSͱNoSQL ʹ͍ͭͯ

Slide 28

Slide 28 text

RDBMS http://ja.wikipedia.org/wiki/ؔ܎σʔλϕʔε؅ཧγεςϜ “ΤυΨʔɾFɾίου͕ఏএͨؔ͠܎ϞσϧʢϦϨʔγϣφϧϞσϧʣʹج͍ͮ ͨɺίϯϐϡʔλͷσʔλϕʔε؅ཧγεςϜ (DBMS) Ͱ͋ΔɻRDBMS ʹΑͬ ͯߏங͢ΔσʔλϕʔεΛɺؔ܎σʔλϕʔεͱ͍͏ɻؔ܎Ϟσϧʹ͓͚Δʮؔ ܎ (ϦϨʔγϣϯ)ʯ͸ɺҰൠʹ͸ʮද (ςʔϒϧ)ʯ ͱݺ͹ΕΔ͜ͱ͕ଟ͍ɻ
 2007೥ݱࡏɺ޿͘஌ΒΕ͍ͯͯ·ͨ޿͘࢖ΘΕ͍ͯΔσʔλϕʔεͷ΄ͱΜͲ ͸ɺؔ܎Ϟσϧʹج͍͍ͮͯΔɻ”

Slide 29

Slide 29 text

RDBMSϓϩμΫτ • MySQL • PostgreSQL • Oracle • SQL Server • MariaDB
 
 …etc

Slide 30

Slide 30 text

RDBMS/ಘҙͳ͜ͱ • σʔλͷҰ؏ੑΛอͪͳ͕Βͷߋ৽͕ߦ͑Δ
 (τϥϯβΫγϣϯ) • ݕࡧ(SELECT)ʹJOINΛར༻ͨ͠ෳࡶͳ৚݅Λࢦ ఆͯ͠औಘͰ͖Δ • ಋೖ࣮੷΍ϊ΢ϋ΢͕๛෋
 (ރΕ͍ͯΔٕज़ͷͨΊ)

Slide 31

Slide 31 text

RDBMS/ۤखͳ͜ͱ • େྔσʔλͷॻ͖ࠐΈΛߦ͏(DISK I/O ෦෼) • ߋ৽ͷൃੜ͢Δςʔϒϧ΁ͷΠϯσοΫε࡞੒΍ςʔϒϧߏ ੒ͷมߋ
 (͔͔࣌ؒΔɺ͔ͭɺςʔϒϧࣗମϩοΫͯ͠͠·͏ͨΊߋ৽ ͕ߦ͑ͳ͍ʣ • ΧϥϜΛݻఆͣ͠Β͍༻్Ͱͷར༻ • ݁ՌΛଈ࣌Ͱૣ݁͘ՌΛฦ͢
 (τϥϯβΫγϣϯ͕͋Δ)

Slide 32

Slide 32 text

NoSQL http://ja.wikipedia.org/wiki/NoSQL “NoSQLʢҰൠʹ”Not only SQL”ͱղऍ͞ΕΔʣͱ͸ɺϦϨʔγϣφϧσʔλϕʔ ε؅ཧγεςϜ (RDBMS) Ҏ֎ͷσʔλϕʔε؅ཧγεςϜΛࢦ͓͓͢·͔ͳ෼ ྨޠͰ͋ΔɻϦϨʔγϣφϧσʔλϕʔεΛ΍Έ͘΋ʹ࢖༻͖ͯͨ͠௕͍ྺ࢙Λ ଧഁ͠ɺͦΕҎ֎ͷσʔλϕʔεͷར༻ɾൃలΛଅਐͤ͞Α͏ͱ͢Δӡಈͷඪޠ ͱͯ͠ͷҙຯ߹͍Λ࣋ͭɻ
 ؔ܎ϞσϧͰ͸ͳ͍σʔλετΞͷಛ௃ͱͯ͠ɺݻఆ͞ΕͨεΩʔϚʹറΒΕͳ ͍͜ͱɺؔ܎Ϟσϧͷ݁߹ૢ࡞Λར༻͠ͳ͍͜ͱʢ৔߹ʹΑͬͯ͸୯ʹͦͷΑ͏ ͳػೳ͕ܽམ͍ͯ͠Δ͚ͩʣɺਫฏεέʔϥϏϦςΟ͕֬อ͠΍͍͢ࣄ͕ଟ͍͜ ͱɺτϥϯβΫγϣϯΛར༻Ͱ͖ͳ͍΋ͷ͕ଟ͍͜ͱͳͲ͕ڍ͛ΒΕΔɻ”

Slide 33

Slide 33 text

NoSQLϓϩμΫτ • memcahed (ΩʔόϦϡʔܕ) • Redis (ΩʔόϦϡʔܕ) • Riak (ΩʔόϦϡʔܕ) • MongoDB (υΩϡϝϯτϕʔεܕ) • HBase (ΧϥϜϑΝϛϦʔܕ ) • Cassandra (ΧϥϜϑΝϛϦʔܕ)
 
 …etc

Slide 34

Slide 34 text

NoSQL • NoSQLͱ͍ͬͯ΋ɺଟ͘ͷ੡඼͕͋Δɻ
 ͞Βʹɺѻ͏σʔλϞσϧ͸ɺෳ਺छྨ͋Δɻ
 (RDBMS͸ɺѻ͏Ϟσϧ͸ؔ܎Ϟσϧ͚ͩͰͨ͠ΑͶʁ) • ΩʔόϦϡʔܕ • υΩϡϝϯτϕʔεܕ • ΧϥϜϑΝϛϦʔܕ
 …etc http://ja.wikipedia.org/wiki/NoSQL

Slide 35

Slide 35 text

NoSQL/ಘҙͳ͜ͱ • σʔλΛ෼ࢄͤ͞΍͍͢
 େྔσʔλͷॻ͖ࠐΈΛॲཧͤ͞΍͍͢
 (෼ࢄͤ͞ΕΔͷͰDISK IO΋෼ࢄͰ͖Δ) • εέʔϧΞ΢τͤ͞΍͍͢

Slide 36

Slide 36 text

NoSQL/ۤखͳ͜ͱ ! • σʔλ෼ࢄͤͨ͞৔߹ɺCAPఆཧ͕ݴ͑Δ • CAPఆཧͷఆٛ
 ϊʔυؒͷσʔλෳ੡ʹ͓͍ͯɺಉ࣌ʹ࣍ͷ3ͭͷอূ Λఏڙ͢Δ͜ͱ͸Ͱ͖ͳ͍ɻ • Ұ؏ੑ(Consistenecy) ɺՄ༻ੑ(Availability)ɺ
 ෼அ଱ੑ(Partition-tolerance)
 ͷ̏ͭͷ͏ͪɺಉ࣌ʹຬͨͤΔͷ͸̎ͭ http://ja.wikipedia.org/wiki/CAPఆཧ

Slide 37

Slide 37 text

RDBMSͱNoSQL • (RDBMSಘҙͳ͜ͱ) vs (NoSQLಘҙͳ͜ͱ)
 -> ղܾࡦͷ෯ΛڱΊΔ
 (͋·Γҙຯ͕ͳ͍) • (RDBMSಘҙͳ͜ͱ) + (NoSQLಘҙͳ͜ͱ)
 -> ཁ݅Λຬͨ͢ղܾࡦΛ૿΍͢ɻ
 ಘҙͳྖҬಉ࢜Λ૊Έ߹ΘͤΔɻ

Slide 38

Slide 38 text

RDBMSͱNoSQL • Ϣʔεέʔε (NoSQL͕Χόʔ͢Δ෦෼) • ϩάΠϯͷηογϣϯ৘ใΛΩϟογϡ • λΠϜϥΠϯܗࣜͷwebΞϓϦ(TwitterϥΠΫ) • PvP, GvG ͳͲϦΞϧλΠϜͰͷϚονϯάॲཧ • ϥϯΩϯάॲཧΛϦΞϧλΠϜදࣔ
 (ϦΞϧλΠϜʹλΠϜϥΠϯΛදࣔͤ͞Δ৔߹ͳͲ) • ϖʔδຖʹΞΫηε਺Λදࣔ͢Δ

Slide 39

Slide 39 text

ςʔϒϧઃܭ ʹ͍ͭͯ

Slide 40

Slide 40 text

ςʔϒϧઃܭ • σʔλϞσϦϯάͷྲྀΕ • σʔλͷ෼ྨ • ςʔϒϧઃܭTips

Slide 41

Slide 41 text

σʔλϞσϦϯά ͷྲྀΕ • ྫ: ΞΠςϜ/ΧςΰϦ ͷΈ
 ERਤ(Entity-relationship Diagram)ͰϞσϦϯά http://ja.wikipedia.org/wiki/࣮ମؔ࿈Ϟσϧ ΞΠςϜ ΧςΰϦ ᶃ֓೦Ϟσϧ => ᶄ࿦ཧϞσϧ => ᶅ෺ཧϞσϧ

Slide 42

Slide 42 text

σʔλϞσϦϯά ͷྲྀΕ • ྲྀΕΛ͓͞Β͍ 1. ֓೦ϞσϧΛ࡞Δɻ
 ཁ͔݅Βɺඞཁͳσʔλ߲໨Λચ͍ग़͢ 2. ࿦ཧϞσϧΛ࡞Δɻ
 σʔλ߲໨ͷҙຯ/ؔ࿈ΛؑΈͯɺσʔλΛਖ਼نԽ͍ͯ͘͠
 ERਤΛ͍ͭͬͯ͘͘ 3. ෺ཧϞσϧΛ࡞Δɻ
 ERਤΛ͍ͭͬͯ͘͘(࣮ࡍʹRDMBSʹςʔϒϧఆٛͰ͖ΔΑ͏ʹ)
 ※IPA/σʔλϕʔεεϖγϟϦετࢼݧͷ
 ςʔϒϧઃܭ໰୊͕͔ͳΓ܇࿅ʹͳΔɻ

Slide 43

Slide 43 text

ϞσϦϯά͢Δͱ͖ͷ σʔλͷ෼ྨ • Ϛελܥσʔλ
 ̍౓ొ࿥͞ΕͨΒසൟʹ͸มߋ͞Εͳ͍σʔλ
 ྫ) ΞΠςϜ৘ใɺϞϯελʔ৘ใɺεΩϧ৘ใ
 ςʔϒϧ໋໊ྫɿM_XXXX γϦʔζ • τϥϯβΫγϣϯܥσʔλ
 සൟʹมߋɾ௥Ճ͞ΕΔσʔλ
 ྫ) ΞΠςϜऔಘঢ়گɺΫΤετਐߦঢ়گɺεΩϧशಘ৘ใ
 ςʔϒϧ໋໊ྫɿT_XXXX γϦʔζ

Slide 44

Slide 44 text

ςʔϒϧઃܭTips • ERਤ༻ͷπʔϧΛར༻͢Δ͜ͱΛΦεεϝ
 (ݱ৔Ͱ͸ɺERMasterΛ࢖ͬͯΔ) • ERਤ͔ΒDDLࣗಈੜ੒Մೳʹ
 
 http://ermaster.sourceforge.net/index_ja.html (DDL)
 CREATE TABLE จ

Slide 45

Slide 45 text

ςʔϒϧઃܭTips • ERਤϕʔεͰςʔϒϧઃܭϨϏϡʔ͸ඞਢ • ςʔϒϧ໊ɺΧϥϜ໊͸ɺ໋໊ͷنଇ͕͓͔͘͠ͳ͍͔ɻҰ໨ͰΘ͔Γ΍͍͔͢ɻ • ΧϥϜͷܕͷਫ਼౓͸ߟྀ͞Ε͍ͯΔ͔ɻ(INT/BIGINT/SERIALʣ • τϥϯβΫγϣϯܥͷσʔλ͸ɺσʔλྔɺσʔλ݅਺͸૝ఆ͞Ε͍ͯΔ͔ɻ
 ଟ͍΋ͷ͸ɺ෼ׂ͢Δɻ • ςʔϒϧͷCRUD(σʔλͷ࡞੒(Create),ಡΈग़͠(Read),ߋ৽(Update),࡟আ(Delete))͸ɺ
 ࢓༷ʹ΋ͱ͍ͮͯઆ໌Ͱ͖Δ͔ɻ • ֤ςʔϒϧͷओΩʔ͕ద੾͔ɻ
 (࣮ࡍͲΜͳσʔλ͕ೖͬͯDMLΛ࣮ߦ͍ͯ͠Δ͔ΠϝʔδͰ͖͍ͯΔ͔) • ͋Δఔ౓൚༻తͳߏ੒ʹͳ͍ͬͯΔ͔ɻ
 (ଞͷςʔϒϧͰࣅͨΑ͏ͳςʔϒϧ͕ͳ͍͔)


Slide 46

Slide 46 text

࣮ࡍʹݱ৔ͷઃܭ/։ൃ ͰΑ͘΍ΔTips

Slide 47

Slide 47 text

Tips1 ERਤͷϨϏϡʔɺιʔεͷϨϏϡʔɺSQL(ΫΤϦ)ͷϨϏϡʔ • ϨϏϡʔ࣌ͷpoint • explainΛ࣮ߦͯ͠SQLͷ࣮ߦܭըΛ֬ೝ(࣮ߦίετ͕ҟৗʹߴ͍ɺͳͲ஫ҙ) • ιʔε಺ͰSQLΛඞཁճ਺Ҏ্ʹൃߦͯ͠ͳ͍͔ɻ(ORMͱ͔Α͋͘Δ) ϝϦοτɿ ෛՙରࡦͷࣄલ༧๷ʹͳΔɻख໭Γ๷ࢭɻ σϝϦοτɿ DBઃܭ/ΫΤϦνϡʔχϯάʹ͍ͭͯϦʔυͰ͖ΔΤϯδχΞͷΞαΠϯ͕ඞਢ


Slide 48

Slide 48 text

Tips2 ϨϓϦέʔγϣϯ(ྫ:Master:1୆/Slave:2୆)Λར༻͠໾ׂΛ෼͚DBෛՙΛ෼ࢄ • ࢀরܥ(SELECT)͸ɺSlave • ߋ৽ܥ(INSERT,UPDATE,DELETE)͸ɺMaster ϝϦοτɿ DBෛՙ(Disk IOɺMemoryɺCPU࢖༻཰)Λ෼ࢄͰ͖Δ σϝϦοτɿ ϨϓϦέʔγϣϯ஗Ԇ(Master->Slave)Λߟྀͨ͠ઃܭ/࣮૷ʹ͢Δඞཁ͕͋Δ
 ࣌ʹ͸SELECTΛMasterʹڧ੍తʹ޲͚Δඞཁ͕͋Δɻ

Slide 49

Slide 49 text

Master Slave1 Slave2 ྫ) Master:1୆ɺSlave:2୆ ͷϨϓϦέʔγϣϯ ᶄߋ৽৘ใΛ ఻೻ ᶄߋ৽৘ใΛ ఻೻ ΞϓϦέʔγϣϯ ᶃߋ৽ॲཧ ࣮ߦ UPDATE,INSERT,DELETE ᶅࢀরॲཧ ࣮ߦ SELECT ࣮ߦλΠϛϯά ͕ ᶄ => ᶅͰ͸ͳ͘ɺ ࣮ߦλΠϛϯά ͕ ᶅ => ᶄ ͱͳΔ৔߹͕͋Γɺ
 ࢀরͨ͠ઌ(Slave1,2)ʹ͸ߋ৽ͨ͠৘ใ͕൓ө͞Εͳ͍

Slide 50

Slide 50 text

Tips3 σʔλྔΛ෼ࢄͤ͞Δ(ςʔϒϧͷਫฏ෼ׂɺਨ௚෼ׂ͢Δ ) • ਫฏ෼ׂ
 => ςʔϒϧͷϨίʔυ୯ҐͰɺผͷςʔϒϧͰѻ͏ɻ 
 - ྫ) user_id (਺஋) Λ 100Ͱআࢉͯ͠ɺςʔϒϧࣗମΛ100෼ׂ͢Δ • ਨ௚෼ׂ
 => ςʔϒϧͷҰ෦ͷྻ͚ͩΛਨ௚ʹɺߋ৽ॲཧ͕͓͓͍߲໨ͱͲ͏͢Δͷ͔ʁ 
 ྫ) Ϣʔβ৘ใͷߋ৽ස౓͕௿͍߲໨(χοΫωʔϜɺ୺຤৘ใ)ͱɺߋ৽ස౓͕ ߴ͍(ϨϕϧɺମྗͳͲ)Λɺผςʔϒϧʹ෼ׂɻ ϝϦοτɿDBੑೳɺ؅ཧ͠΍͢͞ɺՄ༻ੑ͸Ξοϓ͢Δ σϝϦοτɿςʔϒϧΛ؆୯ʹJOINͰ͖ͳ͘ͳΔɺઃܭͰߟྀ͢΂͖ࣄ͕૿͑Δ

Slide 51

Slide 51 text

Tips4 ୲౰ΛΫϥΠΞϯτ/αʔόͰ໌֬ʹΘ͚ͣɺ
 1ػೳ୯ҐͰΘ͚(ΫϥΠΞϯτ/αʔό)྆ํ΍Δɻ ϝϦοτɿ ։ൃεϐʔυ͸τʔλϧͰݟΔͱૣ͍ɻ
 αʔό/ΫϥΠΞϯτ ؒɺ௨ͨ͠ઃܭ͕୲౰ऀͰ׬݁͢Δ σϝϦοτɿ ։ൃن໛͕େ͖͘ͳΔͱνʔϜ಺Ϧιʔεʹґଘɻ

Slide 52

Slide 52 text

·ͱΊ

Slide 53

Slide 53 text

·ͱΊ • վΊͯσʔλϕʔεΛ࢖͏؍఺Λ;Γ͔͑ͬͯΈͨɻ • RDBMS + NoSQL Ͱͷҧ͍Λҙࣝͯ͠Έͨɻ • ΫϥΠΞϯτଆ͸ɺAPIΛհͯ͠αʔόʹӬଓԽ͞Ε͍ͯΔσʔ λߏ଄ΛͲ͏ૢ࡞͍ͯ͠Δͷ͔Πϝʔδͯ͠ΈΔɻ • αʔόαΠυଆ͸ɺAPIΛհͯ͠ɺDB͔Β͜ͷσʔλߏ଄͸Ϋϥ ΠΞϯτͰͲ͏ૢ࡞͞Ε͍ͯΔͷ͔ΛΠϝʔδͯ͠ΈΔɻ • ཪଆͰߦΘΕ͍ͯΔ͜ͱ͕ΠϝʔδͰ͖ΔͱɺΫϥ/αόΛݟ௨ ͤͨઃܭ/։ൃ͕ߦ͑Δɻ

Slide 54

Slide 54 text

ࢀߟॻ੶ɾURL

Slide 55

Slide 55 text

ࢀߟॻ੶ • σʔλϕʔεΤϯδχΞཆ੒ಡຊ
 http://www.amazon.co.jp/dp/4774158062 • WebΤϯδχΞͷͨΊͷσʔλϕʔεٕज़[࣮ફ]ೖ໳
 http://www.amazon.co.jp/dp/4774150207 • σʔλϕʔεపఈ߈ུ (WEB+DB PRESS plus) [େܕຊ]
 http://www.amazon.co.jp/dp/4774163651 • NoSQLσʔλϕʔεϑΝʔετΨΠυ [େܕຊ]
 http://www.amazon.co.jp/dp/4798029599 • SQL ॻ͖ํυϦϧ
 http://www.amazon.co.jp/dp/4774130850 • SQL Ξϯνύλʔϯ
 http://www.oreilly.co.jp/books/9784873115894/

Slide 56

Slide 56 text

ࢀߟURL • σʔλϕʔε֓ཁ
 wikipedia : σʔλϕʔε
 http://ja.wikipedia.org/wiki/σʔλϕʔε
 http://en.wikipedia.org/wiki/Database • ΠϯσοΫε
 B-TreeΠϯσοΫεͷλϓϧऔಘݺͼग़͠
 http://www.postgresqlinternals.org/index.php/Τά θΩϡʔλ
 ΠϯσοΫεͷجૅ஌ࣝ
 http://www.hi-ho.ne.jp/tsumiki/doc_1.html
 
 ୈ7ճɹੑೳվળͷ伴ɼΠϯσοΫεͷಛੑΛ஌Δ ʙB-treeͱϋογϡ
 http://gihyo.jp/dev/serial/01/sql_academy2/000701
 
 ໰߹ͤ࠷దԽΠϯαΠυ
 http://www.slideshare.net/ItagakiTakahiro/ss- 4656848 • DBύϑΥʔϚϯενϡʔχϯάͷجૅɿΠϯσο Ϋεೖ໳
 http://www.slideshare.net/simosako/rdb • DBΞʔΩςΫνϟ
 PostgreSQLΞʔΩςΫνϟೖ໳ʢPostgreSQL Conference 2012ʣ
 http://www.slideshare.net/uptimejp/postgre- sqlpgcon12j • NoSQL+RDBMS
 NOSQL Databases
 http://nosql-database.org/
 ϙϦάϩοτύʔγεςϯε
 http://martinfowler.com/bliki/ PolyglotPersistence.html
 
 Nosqlͷجૅ஌ࣝʢ2013೥7݄ߨٛࢿྉʣ
 http://www.slideshare.net/geminimobile/nosql20137

Slide 57

Slide 57 text

͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂʂ

Slide 58

Slide 58 text

Q & A