Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
大きなデータと戦う技術 / fighting-large-data
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yuuki takezawa
October 13, 2018
Technology
660
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大きなデータと戦う技術 / fighting-large-data
明日の開発カンファレンス 2018秋
yuuki takezawa
October 13, 2018
More Decks by yuuki takezawa
See All by yuuki takezawa
なぜAI時代に 「イベント」を中心に考えるのか? / Why focus on "events" in the age of AI?
ytake
4
2.2k
PHPでアクターモデルを活用したSagaパターンの実践法 / php-saga-pattern-with-actor-model
ytake
0
3.1k
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
380
PHPでアクターモデルを理解・体験しよう / Understand and experience the actor model in PHP
ytake
2
1k
再考 アクターモデル/ reconsider actor model
ytake
0
1.7k
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
730
Phluxorでアクターモデルを 理解・体験しよう / toolkit-for-flexible-actor-models-in-php-phluxor
ytake
1
400
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
2
1.4k
DRE/SREのプラクティス融合によるクラウドネイティブなデータ基盤作り / dre_sre
ytake
0
1.1k
Other Decks in Technology
See All in Technology
The kernel report
ennael
PRO
1
180
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
660
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
110
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
120
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
610
Meet AgentCore Identity Consent Portal
hironobuiga
2
150
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
260
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
560
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
160
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Site-Speed That Sticks
csswizardry
13
1.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Paper Plane
katiecoart
PRO
4
53k
Crafting Experiences
bethany
1
360
Rails Girls Zürich Keynote
gr2m
96
14k
The agentic SEO stack - context over prompts
schlessera
0
950
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Become a Pro
speakerdeck
PRO
31
6.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ͷΈʹ͍߹ΘͤΛߦ͏
·ͱΊ
·ͱΊ • نʹ߹Θͤͨσʔλઃܭ ఆظతͳσʔλϕʔεϦϑΝΫλϦϯά • దࡐదॴΛݟۃΊΔٕज़ • ΞϓϦέʔγϣϯͱઓ͏৺