大きなデータと戦う技術 / fighting-large-data

大きなデータと戦う技術 / fighting-large-data

明日の開発カンファレンス 2018秋

17d4ef53b432ebf7c566fd6a11345570?s=128

yuuki takezawa

October 13, 2018
Tweet

Transcript

  1. େ͖ͳσʔλͱઓ͏ٕज़ yuuki takezawa asucon 2018ळ

  2. Profile • ஛ᖒ ༗و / ytake • גࣜձࣾΞΠελΠϧ CTO •

    PHP, Hack, Go, Scala • Apache Hadoop, Apache Spark, Apache Kafka
 • twitter https://twitter.com/ex_takezawa • facebook https://www.facebook.com/yuuki.takezawa • github https://github.com/ytake
  3. None
  4. Agenda • ΞϓϦέʔγϣϯͱσʔλઃܭ
 • ղܾ͢ΔͨΊʹ

  5. ΞϓϦέʔγϣϯͱσʔλઃܭ

  6. ΞϓϦέʔγϣϯͷσʔλʹ͍ͭͯ • WebΞϓϦέʔγϣϯͳͲΛࢧ͑Δ
 RDBMS • IoTͳͲʹ୅ද͞ΕΔେن໛ͳσʔλ

  7. ΞϓϦέʔγϣϯͷ੒௕Λࢧ͖͑ΕΔʁ • ૝ఆ֎ͷ੒௕Λ਱͛Δ
 WebΞϓϦέʔγϣϯ
 
 ఆظతͳσʔλϕʔεϦϑΝΫλϦϯάɺ ΞϓϦέʔγϣϯͷϦϑΝΫλϦϯά
 ͕࣮ࢪͰ͖Δ͔Ͳ͏͔

  8. ΞϓϦέʔγϣϯͷ੒௕Λࢧ͖͑ΕΔʁ • ϋʔυ΢ΣΞɾΞϓϦέʔγϣϯো֐
 
 ΞϓϦέʔγϣϯʹ߹ΘͤͯΫϥ΢υ ͔ɺΦϯϓϨΛબ୒͢Δ

  9. খ͞ͳνʔϜͷ৔߹

  10. ࠷ॳͷΞϓϦέʔγϣϯ • σʔλϕʔεઃܭ + Active Record etc
 ϑϨʔϜϫʔΫͰߏங͞ΕΔ
 ΞϓϦέʔγϣϯ
 •

    গਓ਺ͷ։ൃऀͰߏ੒͞ΕΔ։ൃ૊৫

  11. ෳ਺νʔϜ΁ͷ੒௕

  12. ΞϓϦέʔγϣϯͷ੒௕ • ૿͑ΔΞϓϦέʔγϣϯػೳ
 • ։ൃνʔϜͷ૿һ
 εΩϧ͸༷ʑ

  13. ΞϓϦέʔγϣϯͷ੒௕ • Ϩίʔυ૿Ճɾ࣮૷ίʔυ૿ՃʹΑΔ
 ύϑΥʔϚϯεͷ௿Լ
 
 ϥΠϒϥϦͰൃߦ͞ΕΔSQLʹ͍ͭͯ
 ཧղ͍ͯ͠Δ͔Ͳ͏͔
 όΠφϦΛσʔλϕʔεʹ֨ೲʂʁ

  14. ΞϓϦέʔγϣϯͱσʔλϕʔε • खܰʹ࢖͑Δ͔Β࢖͏ Ͱ͸ͳٙ͘໰Λ࣋ͭ
 ൃߦ͞ΕΔSQL͸ݱࡏͷ
 ΞϓϦέʔγϣϯن໛ʹ߹͍ͬͯΔ͔Ͳ͏͔ • ϋʔυ΢ΣΞ૿ڧͰ৐Γ੾Δ
 ໰୊͕ޙճ͠ʹͳΔ͜ͱ΋

  15. ΞϓϦέʔγϣϯͷ੒௕ͱσʔλϕʔε • σʔλऔಘ؆ུԽͷͨΊͷ
 σʔλϕʔεઃܭ
 • ΞΫηεϩάͳͲͷσʔλΛ֨ೲ
 ཁ஫ҙ

  16. େن໛νʔϜ΁ͷ੒௕

  17. ߋͳΔΞϓϦέʔγϣϯͷ੒௕ • ૿͑ଓ͚ΔΞϓϦέʔγϣϯػೳ
 • ։ൃνʔϜͷڊେԽ
 ෳ਺ͷνʔϜߏ੒ͱ
 ෳ਺ͷεςʔΫϗϧμ

  18. ΞϓϦέʔγϣϯͷ੒௕ • Ϩίʔυ૿Ճɾ࣮૷ίʔυ૿ՃʹΑΔ
 ͞ΒͳΔύϑΥʔϚϯε௿Լ • ͋ͪͪ͜Ͱى͜Γ࢝ΊΔো֐

  19. ϦϦʔεΛ༏ઌͤ͞Αʂ

  20. ฐ֐ • ϦϦʔε༏ઌͷͨΊɺ
 ܧ͗଍͠ͷΞϓϦέʔγϣϯ
 • εςʔΫϗϧμ૿Ճʹ൐͏
 ΞϓϦέʔγϣϯͷෳࡶԽ • খதن໛ͷΞϓϦέʔγϣϯ࣌୅ͷ
 ઃܭͱ࣮૷༝དྷͷෆ۩߹͕૿Ճ

  21. σʔλઃܭ༝དྷͷ໰୊ • େྔσʔλͷϑϧεΩϟϯ
 • INDEXෆ଍ͷͨΊͷύϑΥʔϚϯε௿Լ • γϯϓϧͳߏ੒ނͷػೳ௥Ճ࣌ͷ
 ΫΤϦෳࡶԽ

  22. ղܾ͢ΔͨΊʹ

  23. ෳࡶ͞ͱͷઓ͍

  24. ΞϓϦέʔγϣϯͷ෼ྨ • ॻ͖ࠐΈ͕ଟ਺ͷΞϓϦέʔγϣϯ • ಡΈࠐΈ͕ଟ਺ͷΞϓϦέʔγϣϯ
 
 ඞͣͲͪΒ͔ʹ෼ྨ͞ΕΔ

  25. ྆ํ͋Γ·͚͢Ͳɾɾʁ

  26. ΞϓϦέʔγϣϯͷ୯Ґ • ҰͭͷΞϓϦέʔγϣϯʹ
 ͨ͘͞Μͷػೳ͕٧·͍ͬͯΔέʔε
 
 ػೳҰͭͣͭΛ෼ղͯ͠ߟ͑Δ

  27. ॻ͖ࠐΈଟ਺ͷΞϓϦέʔγϣϯ • ॻ͖ࠐΈʹڧ͘ɺ
 εέʔϧ͕༰қͳσʔλϕʔε΁
 Cassandra, Dynamodb, MongoDB
 • ػೳ୯ҐͰߟ͑Δ
 ܾࡁܥͳΒRDBMSซ༻ͳͲ

  28. ಡΈࠐΈଟ਺ͷΞϓϦέʔγϣϯ • RDBMSͷΈͰ΋े෼
 • LIKEݕࡧͳͲ͸Elasticsearch, Solr΁

  29. ॻ͖ࠐΈͱಡΈࠐΈͷ౷߹ • ͲͪΒ͔͚ͩͰ΍Ζ͏ͱ͠ͳ͍ࣄ΋Ұͭ • Message Brokerซ༻ʹΑΔ෼ࢄॲཧ
 Apache Kafka, RabbitMQ
 Amazon

    SQS, Amazon Kinesis(Firehose)
  30. CQRS "A few myths about CQRS". Ouarzy's Blog. 
 http://www.ouarzy.com/2016/10/02/a-few-myths-about-cqrs/

    ࢀর
  31. ࣮ྫ

  32. େྔσʔλ΁ͷΞϓϩʔν

  33. େྔσʔλ΁ͷΞϓϩʔν Ϣʔβʔͷ࣌ܥྻߦಈϩά͕ QIQSELBGLBܦ༝ͰૹΒΕͯ͘Δ

  34. େྔσʔλ΁ͷΞϓϩʔν "QBDIF,BGLB  "QBDIF;PPLFFQFS  QBSUJUJPO ݱࡏԯ͘Β͍
 ΞϓϦέʔγϣϯ΁ͷো֐ɾऔΓ͜΅͠ͳ͠

  35. େྔσʔλ΁ͷΞϓϩʔν σʔλϕʔεΛ݁߹ͯ͠ϏδωεϩδοΫٵऩ QVTI௨஌ࢦࣔͳͲΠϕϯτΛૹ৴ ଞαʔϏε͕SBCCJUNRΛ࢖͍ͬͯΔͨΊ

  36. େྔσʔλ΁ͷΞϓϩʔν ,BGLB$POOFDUʹΑΔసૹΛซ༻

  37. େྔσʔλ΁ͷΞϓϩʔν $BTTBOESB $MVTUFS ͪ͜Β΋ԯͪΐͬͱ͘Β͍ ো֐ͳ͠ɾίϯύΫγϣϯఆظ࣮ߦͰ τϥϒϧͳ͠

  38. ूܭܥσʔλͱͷઓ͍

  39. ΞΫηεϩάͳͲͷσʔλͷ׆༻ • ΞΫηεϩάͳͲͷղܾํ๏ • ΞϓϦέʔγϣϯͰఏڙ͞ΕΔػೳ
 ϩάΛར༻͢ΔϨίϝϯσʔγϣϯ
 ෼ੳػೳ

  40. ϩάσʔλ΁ͷΞϓϩʔν • ΄ͱΜͲ͸աڈͷσʔλͷूܭͰ
 ΄΅ෆม
 • ूܭޙʹ
 ଞͷσʔλͱֻ͚߹ΘͤΔͳͲ

  41. ϩάσʔλ΁ͷΞϓϩʔν • RDBMSͰूܭ
 ୯७ͳεϨʔϒͱ͸෼཭͓ͯ͘͠ࣄ
 ਺ेԯҎ্ͷσʔλͰ͸ແཧ͠ͳ͍
 • ूܭςʔϒϧͱΞϓϦέʔγϣϯ༻ͷ
 ςʔϒϧ͸ซ༻͠ͳ͍

  42. ϩάσʔλ΁ͷΞϓϩʔν • HDFSͰूܭ
 RDBMS͔ΒApache Sqoopɺ
 Apache SparkͳͲͰసૹ • ूܭॲཧ͸Apache SparkͳͲͰߦ͍ɺ


    ଞͷσʔλϕʔεͱ݁߹͠ɺ֨ೲ
  43. ࣮ྫ

  44. ϩάσʔλ΁ͷΞϓϩʔν

  45. ϩάσʔλ΁ͷΞϓϩʔν ूܭର৅ͷ σʔλϕʔεɾςʔϒϧΛసૹ

  46. ϩάσʔλ΁ͷΞϓϩʔν )%'4΁3%#.4ͷσʔλ Λอ؅

  47. ϩάσʔλ΁ͷΞϓϩʔν )%'4ʹ͋Δσʔλɺ ଞͷ3%#.4্ͷσʔλΛ݁߹

  48. ϩάσʔλ΁ͷΞϓϩʔν ूܭॲཧޙ࠶ͼ)%'4ͳͲʹ ֨ೲ͠௚͢FUD

  49. ूܭσʔλͱϦΞϧλΠϜσʔλ΁ͷΞϓϩʔν • ूܭ݁ՌΛ֨ೲͨ͠σʔλετϨʔδʴ
 ετϦʔϜॲཧͷ૊Έ߹Θͤ
 • WebΞϓϦέʔγϣϯ૚Ͱ
 ूܭ౳͸ߦΘͳ͍

  50. KappaΞʔΩςΫνϟ

  51. KappaΞʔΩςΫνϟ

  52. ࣮ྫ

  53. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2

  54. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 ༷ʑͳΞϓϦέʔγϣϯ͔Β
 σʔλૹ৴

  55. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 "QBDIF,BGLB͕
 શͯͷσʔλΛड৴

  56. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 ,BGLB 4QBSL4USFBNJOH ΞϓϦέʔγϣϯ͔Βૹ৴͞Εͨσʔλͱɺ 3%#.4ʹ֨ೲ͞ΕͨσʔλΛ݁߹͠ɺ ूܭɾू໿Λߦ͏

  57. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 ूܭɾू໿͞ΕͨσʔλΛɺ
 ಡΈࠐΈͰར༻͢ΔΞϓϦέʔγϣϯʹ
 ߹Θͤͯอ؅ $BTTBOESBͱ4QBSL4USFBNJOHͷΈͰ
 ೖग़ྗΛߦ͏έʔε΋

  58. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 ूܭɾू໿͞Εͨσʔλͷ͏ͪ ༷ʑͳՕॴͰར༻͞ΕΔ΋ͷ͸ɺ)%'4΁ ࠶ܭࢉ΍ɺো֐ൃੜ࣌ʹ෮چͤ͞ΔͳͲ

  59. ϩάσʔλ΁ͷΞϓϩʔν ͦͷ2 ΞϓϦέʔγϣϯଆ͔Β͸ $BTTBOESBͷΈʹ໰͍߹ΘͤΛߦ͏

  60. ·ͱΊ

  61. ·ͱΊ • ن໛ʹ߹Θͤͨσʔλઃܭ
 ఆظతͳσʔλϕʔεϦϑΝΫλϦϯά • దࡐదॴΛݟۃΊΔٕज़ • ΞϓϦέʔγϣϯͱઓ͏৺