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
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.1k
PHPでアクターモデルを活用したSagaパターンの実践法 / php-saga-pattern-with-actor-model
ytake
0
3k
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
350
PHPでアクターモデルを理解・体験しよう / Understand and experience the actor model in PHP
ytake
2
980
再考 アクターモデル/ reconsider actor model
ytake
0
1.6k
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
670
Phluxorでアクターモデルを 理解・体験しよう / toolkit-for-flexible-actor-models-in-php-phluxor
ytake
1
390
オブジェクトのおしゃべり大失敗 メッセージングアンチパターン集 / messaging anti-pattern collection
ytake
2
1.4k
DRE/SREのプラクティス融合によるクラウドネイティブなデータ基盤作り / dre_sre
ytake
0
1.1k
Other Decks in Technology
See All in Technology
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
1.1k
FDEの心得
noriakioji
5
6.4k
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
400
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
【GCC2026】TrueHDRIを用いたルックデブ環境とライティングテクニック
bandainamcostudios
PRO
0
320
RelayerというPHPのフレームワークを作った
polidog
PRO
0
130
35分でわかるEffective Platform Engineering
nwiizo
5
610
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
830
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
380
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
170
8bit CPU 2026
koba789
7
2.7k
Oracle MCP Servers Explained
thatjeffsmith
0
430
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
440
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
Bash Introduction
62gerente
615
220k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
540
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Automating Front-end Workflow
addyosmani
1369
210k
How STYLIGHT went responsive
nonsquared
100
6.2k
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ͷΈʹ͍߹ΘͤΛߦ͏
·ͱΊ
·ͱΊ • نʹ߹Θͤͨσʔλઃܭ ఆظతͳσʔλϕʔεϦϑΝΫλϦϯά • దࡐదॴΛݟۃΊΔٕज़ • ΞϓϦέʔγϣϯͱઓ͏৺