$30 off During Our Annual Pro Sale. View Details »

technology x business

technology x business

db tech showcase Tokyo 2015

yujiosaka

June 10, 2015
Tweet

More Decks by yujiosaka

Other Decks in Technology

Transcript

  1. MongoDB x Business
    db tech showcase Tokyo 2015
    Yuji Isobe

    View Slide

  2. Profile
    Yuji Isobe
    Play fiddle/violin
    Engineer
    Contribute to socket.io
    Startup member of emin

    View Slide

  3. emin = Emotion Intelligence
    ؾ࣋ͪΛղ͢ΔςΫϊϩδʔͷ୳ڀ
    Emotion Intelligence͸ɺʮແҙࣝͷߦಈ͔Βɺ
    ਓͷؾ࣋ͪͷػඍΛղ͢Δ஌ੑʯΛɺਓ޻஌ೳ͓Αͼػցֶ
    शͷԠ༻ٕज़Λ༻͍ͯ
    ։ൃ͠ɺϏδωεʹԠ༻͍ͯ͠·͢ɻ

    View Slide

  4. ;FO$MFSL
    ౰͕ࣾ։ൃͨ͠༧ଌΤϯδϯʮ&NPUJPO*0ʯ͕ɺ΢Σϒα
    Πτ্ͷϢʔβʔͷແҙࣝͷߦಈΛϦΞϧλΠϜͰݕ஌ɺղ
    ੳ͠·͢ɻϢʔβʔͷߪങߦಈʹ͓͚Δ໎͍Λ࡯஌͠ɺ࠷ద
    ͳλΠϛϯάͰΦϑΝʔΛఏࣔ͢ΔʮίϯόʔδϣϯɾΦϓ
    ςΟϚΠβʔʯ͕ɺ&$αΠτͷ$73Λ࠷దԽ͠·͢ɻ

    View Slide

  5. ͳͥdb tech showcaseͰ

    Ϗδωε͕ςʔϚͳͷ͔ʁ

    View Slide

  6. ਖ਼͍ٕ͠ज़͸

    Ϗδωεͷཁ݅Λຬͨ͢
    Α͘ड͚Δ૬ஊ
    □□࢖Θͳ͍ͷʁ
    ˚˚͕ͭΒ͍
    ××࢖ͬͯΔ͚Ͳ
    ͜ͷ··Ͱ͍͍ͷ͔ͳ
    ○○ͬͯͲ͏ࢥ͏ʁ
    ٕज़ͳΜͯԿ࢖ͬͯ΋

    ҰॹͰ͠ΐʁͬͯݴΘΕͨ

    Μ͚ͩͲͲ͏͢Ε͹…

    View Slide

  7. ਖ਼͍ٕ͠ज़͸

    Ϗδωεͷཁ݅Λຬͨ͢
    Business
    Tech
    ਖ਼͍ٕ͠ज़

    View Slide

  8. Business
    ؒҧٕͬͨज़
    Tech
    ؒҧٕͬͨज़Λબ୒͢Δͱ

    Ϗδωε͸੒ޭ͠ͳ͍

    View Slide

  9. Business
    Tech
    εέʔϧ͠ͳ͍ٕज़
    εέʔϧ͠ͳ͍ٕज़͸

    Ϗδωεͷ଍͔ͤʹͳΔ

    View Slide

  10. Business
    Tech
    ίετ͕ߴ͍ٕज़
    ίετ͕ߴ͗͢Δٕज़͸
    ϏδωεΛ৯͍ͭͿ͢

    View Slide

  11. Business
    Tech
    εέʔϧ͢Δਖ਼͍ٕ͠ज़
    εέʔϧ͢Δٕज़͸

    ϏδωεΛՃ଎ͤ͞Δ

    View Slide

  12. ಛʹDB͸ޙ͔Βมߋ͕

    ͳ͔ͳ͔Ͱ͖·ͤΜ

    View Slide

  13. NoSQL͸దࡐదॴ

    View Slide

  14. ͦΕ͸MongoDB΋

    ྫ֎Ͱ͸͋Γ·ͤΜ

    View Slide

  15. Depth of Functionality
    Scalability & Performance
    NFNDBDIFE
    3%#.4
    LFZWBMVFTUPSF .POHP%#
    MongoDBͷཱͪҐஔ
    Relational Databases Fight NoSQL Gravity
    https://www.mongodb.com/blog/post/relational-databases-nosql-gravity

    View Slide

  16. ͜ͷਤʹ͸ͳ͍͜ͱ͕

    ݱ࣮Ͱ͸໰୊ʹͳΓ·͢

    View Slide

  17. Ϗδωεͷࢹ఺͕·͢·͢

    ॏཁʹͳ͖͍ͬͯͯ·͢

    View Slide

  18. ҰͭͷϢʔεέʔεΛ঺հ͢Δ͚ͩͰ͸ͳ͘

    ৽ͨͳ໰୊ʹ௚໘ͨ࣌͠ʹ΋ղܾʹ໾ཱͯΒΕΔ
    Goal

    View Slide

  19. Topics
    ͳͥMongoDBΛબΜͩͷ͔
    Ϗδωε͕ٸ଎ʹ੒௕͢ΔཪͰɺ

    ͲͷΑ͏ͳ໰୊ʹ௚໘͠ɺղܾ͖͔ͯͨ͠

    View Slide

  20. ͳͥMongoDBΛબΜͩͷ͔

    View Slide

  21. ͦͷલʹ

    View Slide

  22. ࢲͨͪ͸໨తʹԠͯ͡

    DBΛ࢖͍෼͚͍ͯ·͢

    View Slide

  23. redis : ϦΞϧλΠϜσʔλ
    MongoDB : ෼ੳ༻ϩάσʔλ
    MySQL : ϚελʔσʔλˍϨϙʔτ
    ࢖༻͍ͯ͠ΔDB

    View Slide

  24. redis : ϦΞϧλΠϜσʔλ
    MongoDB : ෼ੳ༻ϩάσʔλ
    MySQL : ϚελʔσʔλˍϨϙʔτ
    ࢖༻͍ͯ͠ΔDB

    View Slide

  25. $PVDI%#
    )#"4&
    DBTTBOESB
    3೥લʹൺֱݕ౼ͨ͠DB
    ࠓͳΒ Amazon DynamoDB͋ͨΓ΋ݕ౼ʹೖΓͦ͏

    View Slide

  26. ͳͥMongoDBΛબΜͩͷ͔
    ߏ଄Խσʔλ
    εΩ
    ʔ
    Ϛ
    Ϩε
    εέ
    ʔ
    ϥ
    Ϗ
    Ϧ
    ς
    Ο
    Ϗδωε

    ϓϩηε

    View Slide

  27. Ϗδωεϓϩηε
    ϦΞϧλΠϜ෼ੳ
    Ωϟϯϖʔϯ഑৴
    σʔλϚΠχϯά
    Ϟσϧߏங
    ຊ൪౤ೖ
    σʔλ஝ੵ

    View Slide

  28. Garbage In,

    Garbage Out

    View Slide

  29. ΰϛΛ෼ੳͯ͠΋

    ΰϛ͕ฦͬͯ͘Δ͚ͩ

    View Slide

  30. σʔλͷՁ஋Λ

    ߴΊΔϓϩηεΛ࡞Δ

    View Slide

  31. ߏ଄Խσʔλ
    db.events.insert({

    event: “touch”,

    touches: [

    {pageX: 150, pageY: 100, …},

    {pageX: 47, pageY: 171, …}

    ],

    touchCount: 2
    });
    db.events.createIndex({

    event: 1

    });
    ߦྻʹറΒΕͳ͍

    σʔλߏ଄ΛදݱͰ͖Δ
    ݕࡧ͍ͨ͠ϑΟʔϧυʹ

    ࣗ༝ʹΠϯσοΫε͕

    షΕΔ͜ͱ͕େ͖ͳڧΈ

    View Slide

  32. Point!
    MongoDB͸RDBMSͱࣅͨΠϯσοΫεߏ଄Λ

    ͍࣋ͬͯΔͷͰɺRDBͷ஌ࣝΛੜ͔͢͜ͱ͕Ͱ͖·͢
    B-Tree, Compound Index, Covered Index, etc.

    View Slide

  33. εΩʔϚϨε
    db.events.insert({

    event: “touch”,

    touches: [

    {pageX: 150, pageY: 100, …},

    {pageX: 47, pageY: 171, …}

    ],

    // delete

    touchCount: 2,

    // new

    orientation: -90,

    touchStart: new Date(),


    });
    औಘ͍ͨ͠σʔλ͸

    ೔ʑมԽ͍͖ͯ͠·͢
    RDBͷڧΈͰ͋Δ͸ͣͷ

    εΩʔϚ͕ɺϏδωεͷ

    ଍͔ͤʹͳͬͯ͠·͏

    View Slide

  34. Point!
    ʰεΩʔϚϨε≠εΩʔϚఆ͕ٛෆཁʱͰ͸͋Γ·ͤΜ

    Ή͠ΖɺεΩʔϚϨεͰ͋Δ͔Βͦ͜ɺ

    εΩʔϚఆ͕ٛͱͯ΋ॏཁͰ͢

    View Slide

  35. https://www.mongodb.com/presentations/schema-design-scale-1

    View Slide

  36. ϨϓϦΧηοτ: ৑௕ੑͷ֬อͱReadͷ෼ࢄ
    γϟʔσΟϯά: ReadͱWriteͷਫฏ෼ࢄ
    εέʔϥϏϦςΟ

    View Slide

  37. γϯάϧϊʔυ
    mogngod

    View Slide

  38. ϨϓϦΧηοτ
    delayed
    replica
    replica set

    View Slide

  39. ϨϓϦΧηοτˍγϟʔσΟϯά
    replica set
    shard
    mongos
    replica set
    shard
    replica set
    shard
    delayed
    replica
    delayed
    replica
    delayed
    replica
    mongoc

    View Slide

  40. ͜͜·Ͱίʔυͷมߋ͸

    ΄ͱΜͲඞཁ͋Γ·ͤΜ

    View Slide

  41. Point!
    ͸͡Ί͔Βେن໛ͳDBΛߏ੒͢Δඞཁ͸͋Γ·ͤΜ

    ·ͣ͸ϛχϚϜʹ࢝ΊͯɺϏδωεͷ੒௕ʹ߹Θͤͯ

    MongoDB΋εέʔϧͤ͞Δ͜ͱ͕Ͱ͖·͢

    View Slide

  42. ݱ࣮ͷ੍໿
    Node.js ͱͷ૬ੑ
    ➡ ૒ํ޲௨৴ͷͨΊʹ socket.io͕ඞਢͩͬͨ
    ϗεςΟϯάαʔϏεͷ༗ແ
    ➡ গ਺ਫ਼ӶͰαʔϏεʹूத͔ͨͬͨ͠
    ӦۀͱσʔλαΠΤϯςΟετ΋ѻ͑Δ

    View Slide

  43. αʔϏεʹूத͢ΔͨΊʹ
    ϗεςΟϯάαʔϏεΛར༻͢Δͱ͍͏

    બ୒͸ݕ౼ͷՁ஋͋Γ
    http://www.slideshare.net/yujiosaka/starting-mongo-db-on-hosting-services

    View Slide

  44. MongoDB͕

    ద͞ͳ͔ͬͨέʔε

    View Slide

  45. ίϨΫγϣϯͷδϣΠϯ͕Ͱ͖ͳ͍
    ίϨΫγϣϯΛ·͕ͨΔ

    τϥϯβΫγϣϯΛ؅ཧͰ͖ͳ͍
    υΩϡϝϯταΠζ͕༧ଌͰ͖ͳ͍৔߹ʹ

    σΟεΫޮ཰͕ѱ͍
    MongoDBͷۤख෼໺

    View Slide

  46. http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/

    View Slide

  47. http://blog.scrapinghub.com/2013/05/13/mongo-bad-for-scraped-data/

    View Slide

  48. εΩʔϚσβΠϯʹࣦഊ͍ͯ͠Δ
    ෳࡶͳτϥϯβΫγϣϯ͕ඞཁͳσʔλΛѻ͍ͬͯΔ
    υΩϡϝϯταΠζ͕༧ଌͰ͖ͳ͍
    ద͞ͳ͔ͬͨཧ༝

    View Slide

  49. DB୯ҐͰϩοΫ͕͔͔ΓɺCPUΛޮ཰ྑ͘࢖͑ͳ͍
    ϗοτσʔλ͕ͳ͍Α͏ͳσʔλͷ؅ཧ͕ۤख
    MongoDB 2.6Ҏલͷ໰୊

    View Slide

  50. গ͠ා͕Βͤͯ

    ͠·͍·ͨ͠…

    View Slide

  51. ͔͠͠ɺDBͷબ୒͸ຊདྷ

    ৻ॏͰ͋Δ΂͖Ͱ͢

    View Slide

  52. Point!
    MongoDB 3.0Ͱ͸MMAPv1ͷCollection Level΍

    Pluggable Storage Engine͕࣮૷͞Εɺগͣͭ͠

    ۤख෼໺Λࠀ෰ͭͭ͋͠Γ·͢

    View Slide

  53. Topics
    ͳͥMongoDBΛબΜͩͷ͔
    Ϗδωε͕ٸ଎ʹ੒௕͢ΔཪͰɺ

    ͲͷΑ͏ͳ໰୊ʹ௚໘͠ɺղܾ͖͔ͯͨ͠

    View Slide

  54. Ϗδωε͕ٸ଎ʹ੒௕͢ΔཪͰɺ

    ͲͷΑ͏ͳ໰୊ʹ௚໘͠ɺղܾ͖͔ͯͨ͠

    View Slide

  55. Customer Count
    Total Costs
    0QUJNJ[BUJPO
    .PSF

    IBSEXBSF
    $PTUTUPP

    IJHIPQUJNJ[F
    Changing the Growth Formula
    https://www.compose.io/articles/changing-the-growth-formula/
    -PXUPUBM

    DPTUT

    View Slide

  56. Low total costs

    ίετɾύϑΥʔϚϯεͷ໰୊΋ͳ͘αʔϏεΛఏڙͰ͖͍ͯΔ
    More hardware

    Ϗδωεͷ੒௕Λࢧ͑ΔͨΊʹ౤ࢿΛ͢Δ࣌ظ
    Costs too high! optimize

    ίετ΁ͷܯࠂ্͕͕ΓɺΞʔΩςΫνϟͷݟ௚͕͠ٻΊΒΕΔ
    Optimization

    ΞʔΩςΫνϟ͕ܦࡁతʹ΋ύϑΥʔϚϯεతʹ΋࠷దԽ͞ΕΔ
    ϑΣʔζ
    Changing the Growth Formula
    https://www.compose.io/articles/changing-the-growth-formula/

    View Slide

  57. Customer Count
    Total Costs
    0QUJNJ[BUJPO
    .PSF

    IBSEXBSF
    $PTUTUPP

    IJHIPQUJNJ[F
    Changing the Growth Formula
    https://www.compose.io/articles/changing-the-growth-formula/
    -PXUPUBM

    DPTUT

    View Slide

  58. ݄ؒ10ԯPV
    ಉ࣌઀ଓ਺5ສ
    ݄ؒ10TBอଘ
    db. ZenClerk .stats()

    View Slide

  59. Economy Of Scale

    View Slide

  60. Ϗδωεͷ੒௕ʹͭΕͯ

    εέʔϧϝϦοτ͕͖͘

    View Slide

  61. ΫϥΠΞϯτ1ࣾ͋ͨΓͷ

    ίετ͸ࣗવͱԼ͕͍ͬͯ͘

    View Slide

  62. ඞཁͳ͜ͱ͸εέʔϧ͢Δ

    γεςϜΛߏங͢Δ͜ͱ

    View Slide

  63. Problem
    ݱ࣮ͷੈք͸ࢥͬͨ௨Γʹ͍͔ͳ͍ͷ͕ৗͰ͋Δ

    View Slide

  64. ޮ཰Խ͠ͳ͚Ε͹

    ίετ͸૿͑ଓ͚ΔҰํ

    View Slide

  65. Solution
    ϞχλϦϯά
    ϘτϧωοΫղফ Ծઆݕূ

    View Slide

  66. MMS

    View Slide

  67. ஗͍ΫΤϦͷ؂ࢹ

    View Slide

  68. ϘτϧωοΫΛݟ͚ͭͯɺ

    ҰͭҰͭղফ͍ͯ͘͠
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  69. ΠϯσοΫεΛνϡʔχϯάͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  70. ΠϯσοΫεΛ͞Βʹνϡʔχϯάͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  71. ৗʹϗοτσʔλΛ࢖͏Α͏ʹҙࣝͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  72. ΫΤϦΛνϡʔχϯάͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  73. ηΧϯμϦ΁ͷΫΤϦ͕޲͘Α͏ʹͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  74. ΞοϓσʔτΛνϡʔχϯάͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  75. RedisΛ࢖ͬͯόοϑΝϦϯάͨ͠Γ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  76. ໨తʹԠͯ͡DBΛ෼͚ͨΓ…
    https://speakerdeck.com/yujiosaka/yue-jian-10yi-pvkaraxue-ndamongodbantipatan

    View Slide

  77. Point!
    MongoDB͸ {“key”:”value”} ͷܗࣜͰσʔλΛ

    ֨ೲ͢ΔͨΊɺσʔλͷ૿Ճ΋ແࢹͰ͖ͳ͍
    ఆظతͳόοΫΞοϓˍ࡟আ΋େ੾

    View Slide

  78. ஍ಓͳνϡʔχϯά͕ඞཁ

    View Slide

  79. ۜͷ஄ؙ͸ଘࡏ͠ͳ͍
    ʢ͋Δ͍͸͓ߴ͍ʣ

    View Slide

  80. To Shard-First, Or Not to?

    View Slide

  81. ·ͣ͸γϟʔσΟϯάʹ

    པΒͳ͍ͱ͍͏ఏҊ

    View Slide

  82. Inefficiency
    ඇޮ཰ͳ··ͩͱ

    View Slide

  83. ඇޮ཰ੑ΋ਫฏ෼ࢄ͢Δ
    Inefficiency Inefficiency Inefficiency

    View Slide

  84. γεςϜશମΛޮ཰Խͤ͞Δ

    View Slide

  85. Ͱ΋ɺͦΕҎ্ʹେ੾ͳ͜ͱ

    View Slide

  86. ਖ਼͍ٕ͠ज़͸

    Ϗδωεͷཁ݅Λຬͨ͢
    Business
    Tech
    ਖ਼͍ٕ͠ज़

    View Slide

  87. Throw Garbage Away,
    Discover New Gold

    View Slide

  88. ϏδωεʹՁ஋ͷͳ͍

    σʔλ͸ࣺͯͯ͠·͏

    View Slide

  89. Ձ஋ͷ͋Δσʔλͷ

    ͨΊʹίετΛ෷͏

    View Slide

  90. Customer Count
    Total Costs
    1όΠτͷՁ஋
    1όΠτͷՁ஋
    ޮ཰Խ

    View Slide

  91. Technology scales business
    We are hiring ;)

    View Slide