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
大きなデータと戦う技術 / fighting-large-data
Search
yuuki takezawa
October 13, 2018
Technology
3
600
大きなデータと戦う技術 / fighting-large-data
明日の開発カンファレンス 2018秋
yuuki takezawa
October 13, 2018
Tweet
Share
More Decks by yuuki takezawa
See All by yuuki takezawa
PHPでアクターモデルを活用したSagaパターンの実践法 / php-saga-pattern-with-actor-model
ytake
0
1.6k
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
150
PHPでアクターモデルを理解・体験しよう / Understand and experience the actor model in PHP
ytake
2
540
再考 アクターモデル/ reconsider actor model
ytake
0
1.2k
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
460
Phluxorでアクターモデルを 理解・体験しよう / toolkit-for-flexible-actor-models-in-php-phluxor
ytake
1
290
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
2
1.1k
DRE/SREのプラクティス融合によるクラウドネイティブなデータ基盤作り / dre_sre
ytake
0
830
技術的負債と向き合う取り組みでよかったもの / positive_efforts_to_tackle_technical_debt
ytake
10
3.9k
Other Decks in Technology
See All in Technology
PCNW20250514(情シスはAIとどう向き合う?事例から学ぶ活用法)
suguru0719
0
110
Опыт использования Nessie в Азбуке Вкуса
emeremyanina1234
0
430
Lakehouse в Лемана Тех. От архитектуры до оптимизации
emeremyanina1234
0
430
【Gen-AX】20250514開催_Findyオンラインイベント_技術選定を突き詰める
genax
0
120
WindowsでGenesisに挑戦した話
natsutan
0
120
LLMベースAIの基本 / basics of LLM based AI
kishida
5
1k
非同期処理でも分散トレーシングしたい!- OpenTelemetry × Pub/Sub -
phaya72
1
110
ホワイトボックス& SONiC アーキテクチャ(全体像) - SONiC Workshop Japan 2025
ebiken
PRO
1
390
チェックツールを導入したけど使ってもらえなかった話 #GAADjp
lycorptech_jp
PRO
1
150
ユーザーコミュニティが海外スタートアップのDevRelを補完する瞬間
nagauta
1
210
テスト設計、逆から読むとおもしろい──仕様にない“望ましさ”の逆設計
mhlyc
0
190
水耕栽培に全部賭けろ
mutsumix
0
160
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
122
52k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Gamification - CAS2011
davidbonilla
81
5.3k
Building an army of robots
kneath
305
45k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Transcript
େ͖ͳσʔλͱઓ͏ٕज़ yuuki takezawa asucon 2018ळ
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
None
Agenda • ΞϓϦέʔγϣϯͱσʔλઃܭ • ղܾ͢ΔͨΊʹ
ΞϓϦέʔγϣϯͱσʔλઃܭ
ΞϓϦέʔγϣϯͷσʔλʹ͍ͭͯ • WebΞϓϦέʔγϣϯͳͲΛࢧ͑Δ RDBMS • IoTͳͲʹද͞ΕΔେنͳσʔλ
ΞϓϦέʔγϣϯͷΛࢧ͖͑ΕΔʁ • ఆ֎ͷΛ͛Δ WebΞϓϦέʔγϣϯ ఆظతͳσʔλϕʔεϦϑΝΫλϦϯάɺ ΞϓϦέʔγϣϯͷϦϑΝΫλϦϯά ͕࣮ࢪͰ͖Δ͔Ͳ͏͔
ΞϓϦέʔγϣϯͷΛࢧ͖͑ΕΔʁ • ϋʔυΣΞɾΞϓϦέʔγϣϯো ΞϓϦέʔγϣϯʹ߹ΘͤͯΫϥυ ͔ɺΦϯϓϨΛબ͢Δ
খ͞ͳνʔϜͷ߹
࠷ॳͷΞϓϦέʔγϣϯ • σʔλϕʔεઃܭ + Active Record etc ϑϨʔϜϫʔΫͰߏங͞ΕΔ ΞϓϦέʔγϣϯ •
গਓͷ։ൃऀͰߏ͞ΕΔ։ൃ৫
ෳνʔϜͷ
ΞϓϦέʔγϣϯͷ • ૿͑ΔΞϓϦέʔγϣϯػೳ • ։ൃνʔϜͷ૿һ εΩϧ༷ʑ
ΞϓϦέʔγϣϯͷ • Ϩίʔυ૿Ճɾ࣮ίʔυ૿ՃʹΑΔ ύϑΥʔϚϯεͷԼ ϥΠϒϥϦͰൃߦ͞ΕΔSQLʹ͍ͭͯ ཧղ͍ͯ͠Δ͔Ͳ͏͔ όΠφϦΛσʔλϕʔεʹ֨ೲʂʁ
ΞϓϦέʔγϣϯͱσʔλϕʔε • खܰʹ͑Δ͔Β͏ Ͱͳٙ͘Λ࣋ͭ ൃߦ͞ΕΔSQLݱࡏͷ ΞϓϦέʔγϣϯنʹ߹͍ͬͯΔ͔Ͳ͏͔ • ϋʔυΣΞ૿ڧͰΓΔ ͕ޙճ͠ʹͳΔ͜ͱ
ΞϓϦέʔγϣϯͷͱσʔλϕʔε • σʔλऔಘ؆ུԽͷͨΊͷ σʔλϕʔεઃܭ • ΞΫηεϩάͳͲͷσʔλΛ֨ೲ ཁҙ
େنνʔϜͷ
ߋͳΔΞϓϦέʔγϣϯͷ • ૿͑ଓ͚ΔΞϓϦέʔγϣϯػೳ • ։ൃνʔϜͷڊେԽ ෳͷνʔϜߏͱ ෳͷεςʔΫϗϧμ
ΞϓϦέʔγϣϯͷ • Ϩίʔυ૿Ճɾ࣮ίʔυ૿ՃʹΑΔ ͞ΒͳΔύϑΥʔϚϯεԼ • ͋ͪͪ͜Ͱى͜Γ࢝ΊΔো
ϦϦʔεΛ༏ઌͤ͞Αʂ
ฐ • ϦϦʔε༏ઌͷͨΊɺ ܧ͗͠ͷΞϓϦέʔγϣϯ • εςʔΫϗϧμ૿Ճʹ͏ ΞϓϦέʔγϣϯͷෳࡶԽ • খதنͷΞϓϦέʔγϣϯ࣌ͷ ઃܭͱ࣮༝དྷͷෆ۩߹͕૿Ճ
σʔλઃܭ༝དྷͷ • େྔσʔλͷϑϧεΩϟϯ • INDEXෆͷͨΊͷύϑΥʔϚϯεԼ • γϯϓϧͳߏނͷػೳՃ࣌ͷ ΫΤϦෳࡶԽ
ղܾ͢ΔͨΊʹ
ෳࡶ͞ͱͷઓ͍
ΞϓϦέʔγϣϯͷྨ • ॻ͖ࠐΈ͕ଟͷΞϓϦέʔγϣϯ • ಡΈࠐΈ͕ଟͷΞϓϦέʔγϣϯ ඞͣͲͪΒ͔ʹྨ͞ΕΔ
྆ํ͋Γ·͚͢Ͳɾɾʁ
ΞϓϦέʔγϣϯͷ୯Ґ • ҰͭͷΞϓϦέʔγϣϯʹ ͨ͘͞Μͷػೳ͕٧·͍ͬͯΔέʔε ػೳҰͭͣͭΛղͯ͠ߟ͑Δ
ॻ͖ࠐΈଟͷΞϓϦέʔγϣϯ • ॻ͖ࠐΈʹڧ͘ɺ εέʔϧ͕༰қͳσʔλϕʔε Cassandra, Dynamodb, MongoDB • ػೳ୯ҐͰߟ͑Δ ܾࡁܥͳΒRDBMSซ༻ͳͲ
ಡΈࠐΈଟͷΞϓϦέʔγϣϯ • RDBMSͷΈͰे • LIKEݕࡧͳͲElasticsearch, Solr
ॻ͖ࠐΈͱಡΈࠐΈͷ౷߹ • ͲͪΒ͔͚ͩͰΖ͏ͱ͠ͳ͍ࣄҰͭ • Message Brokerซ༻ʹΑΔࢄॲཧ Apache Kafka, RabbitMQ Amazon
SQS, Amazon Kinesis(Firehose)
CQRS "A few myths about CQRS". Ouarzy's Blog. http://www.ouarzy.com/2016/10/02/a-few-myths-about-cqrs/
ࢀর
࣮ྫ
େྔσʔλͷΞϓϩʔν
େྔσʔλͷΞϓϩʔν Ϣʔβʔͷ࣌ܥྻߦಈϩά͕ QIQSELBGLBܦ༝ͰૹΒΕͯ͘Δ
େྔσʔλͷΞϓϩʔν "QBDIF,BGLB "QBDIF;PPLFFQFS QBSUJUJPO ݱࡏԯ͘Β͍ ΞϓϦέʔγϣϯͷোɾऔΓ͜΅͠ͳ͠
େྔσʔλͷΞϓϩʔν σʔλϕʔεΛ݁߹ͯ͠ϏδωεϩδοΫٵऩ QVTI௨ࢦࣔͳͲΠϕϯτΛૹ৴ ଞαʔϏε͕SBCCJUNRΛ͍ͬͯΔͨΊ
େྔσʔλͷΞϓϩʔν ,BGLB$POOFDUʹΑΔసૹΛซ༻
େྔσʔλͷΞϓϩʔν $BTTBOESB $MVTUFS ͪ͜Βԯͪΐͬͱ͘Β͍ োͳ͠ɾίϯύΫγϣϯఆظ࣮ߦͰ τϥϒϧͳ͠
ूܭܥσʔλͱͷઓ͍
ΞΫηεϩάͳͲͷσʔλͷ׆༻ • ΞΫηεϩάͳͲͷղܾํ๏ • ΞϓϦέʔγϣϯͰఏڙ͞ΕΔػೳ ϩάΛར༻͢ΔϨίϝϯσʔγϣϯ ੳػೳ
ϩάσʔλͷΞϓϩʔν • ΄ͱΜͲաڈͷσʔλͷूܭͰ ΄΅ෆม • ूܭޙʹ ଞͷσʔλͱֻ͚߹ΘͤΔͳͲ
ϩάσʔλͷΞϓϩʔν • RDBMSͰूܭ ୯७ͳεϨʔϒͱ͓ͯ͘͠ࣄ ेԯҎ্ͷσʔλͰແཧ͠ͳ͍ • ूܭςʔϒϧͱΞϓϦέʔγϣϯ༻ͷ ςʔϒϧซ༻͠ͳ͍
ϩάσʔλͷΞϓϩʔν • HDFSͰूܭ RDBMS͔ΒApache Sqoopɺ Apache SparkͳͲͰసૹ • ूܭॲཧApache SparkͳͲͰߦ͍ɺ
ଞͷσʔλϕʔεͱ݁߹͠ɺ֨ೲ
࣮ྫ
ϩάσʔλͷΞϓϩʔν
ϩάσʔλͷΞϓϩʔν ूܭରͷ σʔλϕʔεɾςʔϒϧΛసૹ
ϩάσʔλͷΞϓϩʔν )%'43%#.4ͷσʔλ Λอ
ϩάσʔλͷΞϓϩʔν )%'4ʹ͋Δσʔλɺ ଞͷ3%#.4্ͷσʔλΛ݁߹
ϩάσʔλͷΞϓϩʔν ूܭॲཧޙ࠶ͼ)%'4ͳͲʹ ֨ೲ͢͠FUD
ूܭσʔλͱϦΞϧλΠϜσʔλͷΞϓϩʔν • ूܭ݁ՌΛ֨ೲͨ͠σʔλετϨʔδʴ ετϦʔϜॲཧͷΈ߹Θͤ • WebΞϓϦέʔγϣϯͰ ूܭߦΘͳ͍
KappaΞʔΩςΫνϟ
KappaΞʔΩςΫνϟ
࣮ྫ
ϩάσʔλͷΞϓϩʔν ͦͷ2
ϩάσʔλͷΞϓϩʔν ͦͷ2 ༷ʑͳΞϓϦέʔγϣϯ͔Β σʔλૹ৴
ϩάσʔλͷΞϓϩʔν ͦͷ2 "QBDIF,BGLB͕ શͯͷσʔλΛड৴
ϩάσʔλͷΞϓϩʔν ͦͷ2 ,BGLB 4QBSL4USFBNJOH ΞϓϦέʔγϣϯ͔Βૹ৴͞Εͨσʔλͱɺ 3%#.4ʹ֨ೲ͞ΕͨσʔλΛ݁߹͠ɺ ूܭɾूΛߦ͏
ϩάσʔλͷΞϓϩʔν ͦͷ2 ूܭɾू͞ΕͨσʔλΛɺ ಡΈࠐΈͰར༻͢ΔΞϓϦέʔγϣϯʹ ߹Θͤͯอ $BTTBOESBͱ4QBSL4USFBNJOHͷΈͰ ೖग़ྗΛߦ͏έʔε
ϩάσʔλͷΞϓϩʔν ͦͷ2 ूܭɾू͞Εͨσʔλͷ͏ͪ ༷ʑͳՕॴͰར༻͞ΕΔͷɺ)%'4 ࠶ܭࢉɺোൃੜ࣌ʹ෮چͤ͞ΔͳͲ
ϩάσʔλͷΞϓϩʔν ͦͷ2 ΞϓϦέʔγϣϯଆ͔Β $BTTBOESBͷΈʹ͍߹ΘͤΛߦ͏
·ͱΊ
·ͱΊ • نʹ߹Θͤͨσʔλઃܭ ఆظతͳσʔλϕʔεϦϑΝΫλϦϯά • దࡐదॴΛݟۃΊΔٕज़ • ΞϓϦέʔγϣϯͱઓ͏৺