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
Google BigQuery の話 #yapcasia
Search
Naoya Ito
August 30, 2014
Technology
11k
21
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Google BigQuery の話 #yapcasia
Naoya Ito
August 30, 2014
More Decks by Naoya Ito
See All by Naoya Ito
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
4.3k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
13
4.6k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
8k
Functional TypeScript
naoya
19
6.9k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.8k
20230227-engineer-type-talk.pdf
naoya
91
87k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
38k
Other Decks in Technology
See All in Technology
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
140
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
6
3.6k
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
3
860
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
500
人気商品が「ちゃんと買える」をつくる ー ECの負荷改善
ykagano
1
180
[RSJ26] Flow as Flow: Modeling Robot Velocity Fields as Probability Velocity Fields
keio_smilab
PRO
0
170
Digitization部 紹介資料
sansan33
PRO
2
7.8k
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
12
9.4k
Does an AI Watermark Survive Translation?
machinetranslation
0
520
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
210
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
100
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
170
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The Curse of the Amulet
leimatthew05
2
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Discover your Explorer Soul
emna__ayadi
2
1.3k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
How to Ace a Technical Interview
jacobian
281
24k
A Tale of Four Properties
chriscoyier
163
24k
BBQ
matthewcrist
89
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
270
Writing Fast Ruby
sferik
630
63k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
Transcript
(PPHMF#JH2VFSZͷ /BPZB*UP ,"*;&/QMBUGPSN*OD :"1$"TJB5PLZP ˞(PPHMFࣾͷճ͠ ऀͰ͋Γ·ͤΜ
ΞδΣϯμ • #JH2VFSZ֓؍ • #JH2VFSZͷ෦ • ,"*;&/QMBUGPSN*ODͰͷ͍Ͳ͜Ζ
#JH2VFSZ֓؍
(PPHMF#JH2VFSZ
None
#JH2VFSZͱ • ڊେͳσʔλͷ42- ͳͲ ΛඵͰ࣮ߦ͢ΔΫϥυαʔϏε – ԯϨίʔυΛඵ ˞ –
8FCΠϯλʔϑΣʔε͓Αͼ3&45"1* • (PPHMFࣾͰΘΕ͖ͯͨ%SFNFMΛαʔϏεԽ – ݄$MPTFEϦϦʔε – ݄Ұൠެ։ – ܧଓతʹόʔδϣϯΞοϓ – ݄#JH2VFSZ4USFBNJOH ˞(PPHMFͷދͷࢠʮ#JH2VFSZʯΛ'MVFOUEϢʔβʔ͕Θͳ͍ཧ༝͕ͳ͘ͳͬͨཧ༝ IUUQRJJUBDPNLB[VOPSJJUFNTBDBDCCBBBG
ͲΜͳ͜ͱʹΘΕΔ͔ • Ϣʔεέʔε – ϩάղੳ – %BUBXBSF)PVTF – • ͍ͯͳ͍༻్ – ۀ%# ͍3%#.4Ͱ
ͳ͍Αɺͱ͍͏͜ͱ
#JH2VFSZͳ͍͔ͥ • جຊɺϑϧεΩϟϯͰ͕ΜΔ – 3%#.4ͷ#5SFFΠϯσοΫεͱ͔ͳ͍ • 42-Λࢄॲཧ – .11 .BTTJWFMZ1BSBMMFM1SPDFTTJOH
2VFSZ&OHJOF %SFNFM • ઍͷσΟεΫͱߴωοτϫʔΫͰεέʔϧΞτ – 5#ͷσʔλΛඵͰϦʔυ͢Δ*0
ͨͩ͠ • ͍3%#.4Ͱͳ͍ • େਓͰҰʹ͏ͷͰͳ͍ – ओʹόονॲཧʹ͏ • εΩʔϚϨεͰͳ͍ 5#نσʔλͰઢܗҎ ԼͰεέʔϧ͢Δ͕ɺٯ
ʹখ͞ͳσʔλͰඵ ͷΦʔόʔϔου͕͋Δ ͷͰ
BigQuery読書会、@harukasan 資料より引用
ଞͷྨࣅ࣮ͱͷϙδγϣχϯά • -BSHF#BUDI – ҆ఆͯ͠ڊେͳόονΛ࣮ߦͰ͖Δ – ΫΤϦ࣮ߦ࣌ͷΦʔόʔϔου͕େ͖͍ ेඵʙे –
.BQ3FEVDFɺ)BEPPQ )JWF • 4IPSU#BUDI – ΫΤϦ࣮ߦ࣌ͷΦʔόʔϔου͕ඵ – ΞυϗοΫΫΤϦʹ͍͍ͯΔ – .112VFSZ&OHJOF1SFTUPɺ*NQBMBɺ#JH2VFSZ %SFNFM • 4USFBN1SPDFTTJOH – όον࣮ߦͰ͖ͳ͍͕ετϦʔϜʹରͯ͠ϦΞϧλΠϜॲཧͰ͖Δ – /PSJLSBɺ"QBDIF,BGLBɺ5XJUUFS4UPSNFUD "NB[PO3FETIJGU 4IPSU#BUDI ৄ͘͠ ͳ͍ͷͰলུ cf. Batch processing and Stream processing by SQL h;p://www.slideshare.net/tagomoris/hcj2014-‐sql
Ձ֨ • ྉۚ – σʔλอ(#݄ – ΫΤϦ5# εΩϟϯͨ͠σʔλͷαΠ ζ "NB[PO4ΑΓ࣮
͍҆ ($1ؔͷษڧձ͍͘ͱ ͷແྉνέοτΒ ͑ͨΓ͠·͢
#JH2VFSZͷ෦ ͚ͩ͢͜͠
(PPHMF#JH%BUB4UBDL • ʰ(PPHMFΛࢧ͑Δٕज़ʱ – #JH%BUB4UBDL – ('4ɺ#JH5BCMFɺ.BQ3FEVDFFUD • #JH%BUB4UBDL –
#JH%BUB4UBDLͷ্ʹߏங͞Εͨɺͷ՝Λղফ͢Δ࣮܈ – $PMPTTVT .FHBTUPSF 4QBOOFS 'MVNF+BWB %SFNFM طʹ(PPHMFࣾ #JH%BUB4UBDLͩ ͱ͔͍͏ͪΒ΄Β
#JH2VFSZͷٕज़ελοΫ (PPHMF'JMF4ZTUFN ('4 $PMPTTVT'JMF4ZTUFN $'4 $PMVNO*0 %SFNFM ࢄ'4
('4ͷվྑܕ'4 ৄࡉඇެ։ #JH2VFSZͷͨΊͷྻࢦϑΝΠϧ ϑΥʔϚοτ ฒྻ42-࣮ߦΤϯδϯ σʔληϯλʔΛ·͍ͨͰ ࢄ͞ΕͯΔσʔλΛฒྻ ͔ͭߴʹऔಘͰ͖ΔΒ͠ ͍
$PMVNO*0 Dremel: InteracIve Analysis of Web-‐Scale Datasets h;p://research.google.com/pubs/archive/36632.pdf ߦͰͳ͘ྻ୯ҐͰɻಛ
ఆྻΛγʔέϯγϟϧʹ ಡΊΔͭ$PMPTTVT ͰฒྻಡΈࠐΈ
%SFNFM Dremel: InteracIve Analysis of Web-‐Scale Datasets h;p://research.google.com/pubs/archive/36632.pdf
Root Mixer Mixer 1 Shard 0-‐8 Mixer 1
Shard 9-‐16 Mixer 1 Shard 17-‐24 Shard 0 Shard 10 Shard 12 Shard 20 Shard 24 Distributed Storage (e.g., CFS) Dremel serving tree Google BigQuery AnalyIcs P.284 Chapter 9 Understanding Query ExecuIon ࢄ
Root Mixer Mixer 1 Shard 0-‐8 Mixer 1
Shard 9-‐16 Mixer 1 Shard 17-‐24 Shard 0 Shard 10 Shard 12 Shard 20 Shard 24 Distributed Storage (e.g., CFS) Dremel serving tree Google BigQuery AnalyIcs P.284 Chapter 9 Understanding Query ExecuIon $'4 $PMVNO*0Ͱಛ ఆྻͷσʔλ͕Ұ෦ฦͬ ͯ͘Δ ࢄ ू
Root Mixer Mixer 1 Shard 0-‐8 Mixer 1
Shard 9-‐16 Mixer 1 Shard 17-‐24 Shard 0 Shard 10 Shard 12 Shard 20 Shard 24 Distributed Storage (e.g., CFS) Dremel serving tree Google BigQuery AnalyIcs P.284 Chapter 9 Understanding Query ExecuIon $'4 $PMVNO*0Ͱಛ ఆྻͷσʔλ͕Ұ෦ฦͬ ͯ͘Δ ྻΛॱ൪ʹಡΈߦ Λऔಘɻ8)&3&۟ͳ ͲΛݟͯඞཁͳߦͷΈ ʹߜΓϝϞϦͰอ࣋ ࢄ ू
Root Mixer Mixer 1 Shard 0-‐8 Mixer 1
Shard 9-‐16 Mixer 1 Shard 17-‐24 Shard 0 Shard 10 Shard 12 Shard 20 Shard 24 Distributed Storage (e.g., CFS) Dremel serving tree Google BigQuery AnalyIcs P.284 Chapter 9 Understanding Query ExecuIon $'4 $PMVNO*0Ͱಛ ఆྻͷσʔλ͕Ұ෦ฦͬ ͯ͘Δ ྻΛॱ൪ʹಡΈߦ Λऔಘɻ8)&3&۟ͳ ͲΛݟͯඞཁͳߦͷΈ ʹߜΓϝϞϦͰอ࣋ ֤TIBSE͔ΒσʔλΛू ɻྫ͑ιʔτ-*.*5 ͷߜΓࠐΈͳͲ͢Δ ࢄ ू
Root Mixer Mixer 1 Shard 0-‐8 Mixer 1
Shard 9-‐16 Mixer 1 Shard 17-‐24 Shard 0 Shard 10 Shard 12 Shard 20 Shard 24 Distributed Storage (e.g., CFS) Dremel serving tree Google BigQuery AnalyIcs P.284 Chapter 9 Understanding Query ExecuIon $'4 $PMVNO*0Ͱಛ ఆྻͷσʔλ͕Ұ෦ฦͬ ͯ͘Δ ྻΛॱ൪ʹಡΈߦ Λऔಘɻ8)&3&۟ͳ ͲΛݟͯඞཁͳߦͷΈ ʹߜΓϝϞϦͰอ࣋ ֤TIBSE͔ΒσʔλΛू ɻྫ͑ιʔτ-*.*5 ͷߜΓࠐΈͳͲ͢Δ ूͨ݁͠Ռ ΛDBMMFSʹฦ͢ ࢄ ू
#JH2VFSZͷ͍͢͝ॴ • ΧϥϜܕ*0ɺ42-ͷׂ౷࣏ – Ͱ͜Εɺ.11తʹ͘͠ͳ͍ • ͡Ό͋ɺ#JH2VFSZͷԿ͕͍͔͢͝ – (PPHMFͷͰ͔͍Πϯϑϥ
ׂͱ֖ͳ͍ŋŋŋ
͜ΜͳΫιΫΤϦͰඵɺ̐ඵͩ
,"*;&/QMBUGPSN*OD Ͱͷ͍Ͳ͜Ζ
Ϣʔεέʔε • ΞΫηεϩάͷอଘௐࠪ • ΞϓϦέʔγϣϯϩάͷղੳ %BUBXBSF )PVTF • "#ςετͷ༗ҙࠩఆ
ΞΫηεϩά
ΞΫηεϩά #JH2VFSZ • /HJOYͷϩάΛqVFOUQMVHJOCJHRVFSZͰ ૹΓଓ͚Δ – &&Ͱ҉߸Խ͞ΕͯΔΑ • Կ͔༻͕͋ͬͨΒ42-Ͱղੳ –
%BJMZ8FFLMZ.POUIMZ17 – ϓϩμΫγϣϯͷσόοά
qVFOUQMVHJOCJHRVFSZ • CZUBHPNPSJT͞ΜɺZVHVJ͞Μଞ • ઌ͔Β,"*;&/QMBUGPSN*OD͕ϝ ϯςφʹ – ࣮࣭ɺԶ QBUDIFTXFMDPNF Ͱ͢
ΞϓϦέʔγϣϯͷϩάղੳ
ϩάΛඈ͢ • 3BJMT͔ΒUEMPHHFSSVCZͰqVFOUE • qVFOUEQMVHJOCJHRVFSZͰ#2ʹඈ͢
ϩάΛඈ͢ܖػ • ϦΫΤετຖ – "QQMJDBUJPO$POUSPMMFS – ϩάΠϯϢʔβͷଐੑΛඈ͢ˠ%"6."6ͷ ࢉग़ʹ • Ϟσϧͷঢ়ଶมߋ࣌
– "DUJWF3FDPSE0CTFSWFS – ϞσϧຖʹదͳଐੑΛݟસͬͯඈ͢ – #JH2VFSZෳࡶͳ42-Ͱී௨ʹԠ͢Δ㱺ϓ ϩμΫτϚωʔδϟ͕ؾܰʹ42-ॻ͍ͯΔ
ਖ਼نԽ͋·Γ͠ͳ͍ • ελʔεΩʔϚ – %8)ͷఆ൪ͷϞσϦϯά • ϑΝΫτςʔϒϧŋŋŋϩά • ࣍ݩςʔϒϧŋŋŋϚελʔσʔλ ސ٬໊ͱ͔
– ਖ਼نԽ͠ͳ͍ͷ͕ηΦϦʔ
"#ςετ༗ҙࠩఆ • "#ςετͷαʔϏεͳͷͰ͆ • ৄࡉൿີ • SFRTFDͱ͔qVUFOEͰૹͬͯΔ ͚ͲͬͪΌΒ͞ – ˞SFRTFDͷ)551SFRVFTUqVFOUE͕όοϑΝϦϯά͢ΔͷͰ
#JH2VFSZͷ"1*ίʔϧͣͬͱগͳ͍
֎෦πʔϧͱͷଓ • ΤΫηϧ – #JH2VFSZ$POOFDUPSGPS&YDFMCZ(PPHMF – ϐϘοτੳʹ • %0.0 #*
– FYQFSJNFOUBMͳ#JH2VFSZΠϯλϑΣʔε ͋ͬͨ – 5BCMFBVϝδϟʔͲ͜ΖରԠ࢝͠ΊͯΔ
໘ͳͱ͜Ζ • qVFOUEQMVHJOCJHRVFSZ͕εΩʔϚϑΝΠϧΛཁٻ ͢Δ – ͕͔ͩ͠͠IBLPCFSB͞Μ͕QBUDIΛॻ͍ͯ͘Εͨ – W͔ΒGFUDI@TDIFNBػೳ͕͑ΔΑ • ࣍ݩςʔϒϧͷߋ৽
– 61%"5&Ͱ͖ͳ͍ͷͰ – ؒͱ͔ʹҰճফͯ͠࡞ΔɺΈ͍ͨͳ – 1SFTUPΈ͍ͨʹҧ͏σʔλιʔεΛ+0*/Ͱ͖ͨΓ͢Δͱخ ͍͠ͷ͕ͩŋŋŋ
࢛ํࢁ • (PPHMF"OBMZUJDT #JH2VFSZศརͦ͏ – ("ͷੜϩάΛ#JH2VFSZͰղੳͰ͖ΔΦϓγϣϯ – ͨͩ͠("ͷ༗ྉαʔϏε • Ͱ͔͍σʔλͷΠϯϙʔτ
– (PPHMF%BUB4UPSFʹஔ͍͔ͯΒΠϯϙʔτ͢Δͱߴ • 5BCMF%FDPSBUPST – σʔλͷ࣌ؒൣғΛࢦఆͯ͠ΫΤϦɻεΩϟϯରͷσʔλ͕খ͘͞ͳ ΔͷͰΫΤϦඅ༻ΛઅͰ͖Δ • +0*/੍ݶ.#ੲͷ – +0*/&"$)Λ͏ͱ.BQ3FEVDFͷTIV⒐FΈ͍ͨͳॲཧͰڊ େͳ+0*/ ԯYԯͱ͔ŋŋŋ ͯ͘͠ΕΔΑ
·ͱΊ • #JH2VFSZϑϧεΩϟϯͰͰ͔͍σʔλͷ 42-͕ඵͳαʔϏε • ΫιΫΤϦྗۀͰॲཧͪ͠Ό͏ΧοίΠΠ • ׂ౷࣏ (PPHMFͷ%$نͰ֖ͳ͍ ฒྻॲཧܥ
• όονɺϩάղੳͳΜ͔ʹ͑·͢ • ࢲ(PPHMFࣾͷճ͠ऀͰ͍͟͝·ͤΜ
5IBOLT ֆCZ͋ΘΏ͖