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
Index Compression Using Byte-Aligned ANS Coding...
Search
chie8842
April 15, 2018
Technology
0
810
Index Compression Using Byte-Aligned ANS Coding and Two-Dimensional Contexts
WSDM 2018 論文読み会の資料
https://atnd.org/events/95510
chie8842
April 15, 2018
Tweet
Share
More Decks by chie8842
See All by chie8842
MongoDB Atlas Search のご紹介
chie8842
2
1.5k
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
1.5k
AWS GlueとAWS Lake Formationではじめるデータマネジメント
chie8842
0
1k
Distributed Processing in Python
chie8842
2
680
クックパッドにおける推薦(と検索)の取り組み
chie8842
20
8k
Understanding distributed processing in Python
chie8842
2
2k
Performance Tuning Tips of TensorFlow Inference
chie8842
1
740
クックパッドにおけるCloud AutoML事例
chie8842
9
7.8k
Cookpad_Internship_MLOps_Lecture_2018
chie8842
35
16k
Other Decks in Technology
See All in Technology
脳波を用いた嗜好マッチングシステム
hokkey621
0
290
OCI Success Journey OCIの何が評価されてる?疑問に答える事例セミナー(2025年2月実施)
oracle4engineer
PRO
2
140
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
190
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
210
AIエージェント入門
minorun365
PRO
31
17k
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
OPENLOGI Company Profile for engineer
hr01
1
20k
急成長する企業で作った、エンジニアが輝ける制度/ 20250227 Rinto Ikenoue
shift_evolve
0
130
ディスプレイ広告(Yahoo!広告・LINE広告)におけるバックエンド開発
lycorptech_jp
PRO
0
340
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
150
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
140
【Findy】「正しく」失敗できる チームの作り方 〜リアルな事例から紐解く失敗を恐れない組織とは〜 / A team that can fail correctly by findy
i35_267
5
860
Featured
See All Featured
A Tale of Four Properties
chriscoyier
158
23k
4 Signs Your Business is Dying
shpigford
182
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Six Lessons from altMBA
skipperchong
27
3.6k
Statistics for Hackers
jakevdp
797
220k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Optimizing for Happiness
mojombo
376
70k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Typedesign – Prime Four
hannesfritz
40
2.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Transcript
*OEFY$PNQSFTTJPO6TJOH#ZUF"MJHOFE"/4 $PEJOHBOE5XP%JNFOTJPOBM$POUFYU 84%.ಡΈձ $IJF)BZBTIJEB
Θͨ͠ͷ͠ΐ͏͔͍ $IJF)BZBTIJEB !DIJF ΫοΫύουɹػցֶशνʔϜ $POUSJCVUFUP"QBDIF4QBSL )BEPPQ FUD
ൃചͷ8&# %#13&44ͷ 1ZUIPOͱՊֶٕज़ܭࢉͷষ ॻ͍ͨɻ
"#453"$5 • #MPDLCBTFEJOWFSUFEJOEFYDPNQSFTTJPOͷ࣮ݧΛߦͬͨɻ • "TZNNFUSJD/VNFSBM4ZTUFNT "/4 ΤϯτϩϐʔίʔσΟϯ άʹରͯ͠ҎԼͷ֦ுΛߦ͏͜ͱʹΑΔվળ͕ಘΒΕͨɻ – ͭͷूύϥϝʔλʹΑΔ࣍ݩͷ݅ίϯςΩετʹΑͬͯɺγ
ϯϘϧͷΧςΰϥΠζΛߦ͏ɻ – #ZUFGSJFOEMZͳϚοϐϯάΛͬͯγϯϘϧΛ"/4ͷDPEFXPSE CVDLFUʹΘ͚Δ – ίϯςΩετϚʔδͷϓϩηεʹΑΓɺෳͷEJTUSJCVUJPOΛͭͱ Έͳ͞ΕΔɻ • ͜ͷख๏ʹΑΓɺJOUFSQʹΑΔΠϯσοΫεͷѹॖͷੑೳج ४Λ্ճͬͨɻ • ࣮ݧ(#ͷHPWίʔύεͱ৽͍͠χϡʔεهࣄΛ͍ɺ ΫΤϦධՁผͷCMPDLCBTFEͷख๏ͱൺֱͨ͠ɻ
*/530%6$5*0/ • *OWFSUFE సஔ ΠϯσοΫεςΩετσʔλʹର͢Δ ߴͳΫΤϦ࣮ߦͷॏཁͳߏͰ͋Δɻ term Posting list J1IPOF
Ϗοάσʔλ Χό ϝϩϯ posting ͦΕͧΕͷυΩϡϝϯτ*%ʹରͯ͠୯ޠͷग़ݱසϙδ γϣϯͷใ࣋ͭɻ ίϯύΫτͳQPTUJOHMJTUTʹɺCZUFBMJHOFEDPEFT XPSE BMJHOFEDPEFT CJOBSZQBDLFEΞϓϩʔν͕͋Δɻ
*/530%6$5*0/ • ϋϑϚϯූ߸ԽͷΑ͏ͳΤϯτϩϐʔϕʔεͷख๏ఏҊ͞Ε͍ͯ ͕ͨɺҎલ͋·ΓސΈΒΕΔ͜ͱ͕ͳ͔ͬͨɻલʹ+FSFL %VEB͕"/4ϝΧχζϜΛ։ൃͨ͜͠ͱʹΑΓɺΤϯτϩϐʔίʔ σΟϯά͕࠶ͼ͞ΕΔΑ͏ʹͳͬͨɻ • 7#ZUF 4JNQMF 1BDLFEͷख๏Λ༻͍ͯɺͦΕͧΕѹॖޮ͕վળ͞
Εͨɻ • 1BDLFE "/4ΞϓϩʔνͷఏҊ – ݻఆϒϩοΫͷγϯϘϧ͕ηϨΫλʹΑͬͯಛఆ͞Εͨ֬ͱؔ࿈ ͯ͠ූ߸Խ͞ΕΔɻ – 1BDLFE "/4Ξϓϩʔνͷհʹ͓͍ͯɺηϨΫλϒϩοΫͷ࠷্Ґ ͕ར༻͞ΕΔɻ – QBDLFEGSBNFPGSFGFSFODF 1'03 ϝΧχζϜͷΑ͏ͳར͕͋Δɻ – ΤϯτϩϐʔίʔσΟϯάͷϝϦοτ • ΤϯτϩϐʔίʔσΟϯάͷॊೈੑʹΑΓɺࣅ௨ͬͨූ߸ͷ֬ٴͼූ ߸ͷ໘Ͱѹॖޮ্͕͕ͬͨɻ – ϒϩοΫͷूʹ͓͍ͯ࣍ݩͷηϨΫλ͕ར༻Ͱ͖ͨɻ • γϯϘϧͷࣝผࢠ͔Β"/4ͷͱϚοϐϯάΛม͑ΔলϝϞϦͰ CZUFGSJFOEMZͳग़ྗ • σίʔυͷࡍͷϝϞϦ༻ྔΛݮ͢ΔͨΊͷ$POUFYU.FSHJOH
#"$,(306/%ɿ*OEFY$PNQSFTTJPO ˙$PNQSFTTJPO"QQSPBDI • طଘͷํࣜ – ౷తͳख๏ɹ&MJBTDPEFT – 7#ZUFͦͷมܗ – ϫʔυϕʔεͷγϯϓϧͳΞϓϩʔν
– *OUFSQNFDIBOJTN • εέʔϧͨ͠ͱ͖ʹྑ͍ѹॖޮ͕ಘΒΕ͕ͨɺEFDPEF͕ &MJBTΑΓ͔ͬͨɻ
ิɿ&MJBT(BNNB https://en.wikipedia.org/wiki/Elias_gamma_coding
ิɿ7#ZUF 1 0 0 0 0 0 1 0 value
End marker 1000000110000010 整数自体を符号化するのでなく、逐次差分を符号化する方法
#"$,(306/%ɿQBDLFEDPEFT ˙1BDLFE$PEFT • ݻఆͷQPTUJOHTʹର͢ΔQBDLFEDPEFT • ൺֱత࠷ۙͷٕज़ • ΩʔΞΠσΞɺϩʔΧϧͳҰ؏ੑΛར༻͢Δํ๏Ͱ͋ Δɻ •
ݻఆʢେʣͷϒϩοΫ͝ͱͷΛͭͷϢχο τͱͯ͠ॲཧ͢Δɻ • ྫ͑ɺ ͔ΒηϨΫλΛબͿ͜ͱͰɺ͋ΔΛ ͱ͍ͬͨॻ͖ํͰදͤΔɻ
#"$,(306/%ɿ1BUDIFE'SBNFPG3FGFSFODF 2 1 31 1 0 … 2 10 01
01 01 00 … 10 b=5 b’=2 1exception position3 • ϒϩοΫຖʹͦͷϒϩοΫͷͷ΄ͱΜͲΛද͢͜ͱ͕Ͱ͖ΔϏοτΛ ܾΊͯ Τϯίʔυ͢Δɻ • খ͍͞ϏοτͰදͤΔͨΊσʔλαΠζ͕খ͘͞ͳΔɻ • 1'03ͷมܗͰ͋Δ0QU1'03Ͱɺ࠷શମͷύοέʔδ͕͜Μͺ͘ͱʹͳ ΔΑ͏ʹηϨΫλΛબͿΑ͏ʹͳ͍ͬͯΔɻ b b’ metadata
#"$,(306/%ɿ7BSJBCMF-FOHUI#SPDLT • ՄมͷϒϩοΫʹύʔςΟγϣχϯάͨ͠߹ͷख๏ Λ0UUBWJBOPFUBM͕ఏҊ͍ͯ͠Δɻ • ಉҰͷσʔλ͕ग़ݱͨ͠ͱ͖ʹେ͖ͳΠϯϓοτϢχο τΛ࣋ͭηϨΫλετϨʔδΛঈ٫͢ΔΑ͏ʹγʔΫ͢ Δɻ͕ہॴతʹόʔετ͢Δ߹ʹ༗ޮͳํ๏Ͱ͋Δɻ
#"$,(306/%ɿ"TZNNFUSJD/VNFSBM 4ZTUFNTʢ"/4ʣ • +BSFL%VEBʹΑͬͯ։ൃ͞Εͨ৽͍͠Τϯτϩϐʔූ߸ Խํࣜ • ϋϑϚϯූ߸Խࢉज़ූ߸ͱಉׂ͡ΛՌͨ͢ɻ • ग़ݱසͷߴ͍γϯϘϧʹϏοτͷখ͍͞ූ߸ɺग़ݱ සͷ͍γϯϘϧʹϏοτͷେ͖͍ූ߸ΛׂΓͯ
Δɻ
"/4Λ༻͍ͨΠϯσοΫεѹॖͷྫ • γϯϘϧ1 2 3ͦΕͧΕग़ݱ֬ɺɺͱ͢Δ • ϋϑϚϯූ߸ԽͰɺ1͕̍Ϗοτɺ2ͱ3͕̎ϏοτͱͳΔɻ • "/4ූ߸ԽͰɺ.ݸͷཁૉͷ͕1ɺ͕2ɺ͕3ʹϥϕϦϯά͞Εɺ ͦͷΞϧϑΝϕοτ্ͷه߸ͷγʔέϯεɺରԠ͢ΔϑϨʔϜͷঢ়ଶͱ͠
ͯදݱ͞ΕΔɻ • ଞͷϑϨʔϜΛ࡞Δ߹ɺଞͷॱྻ͘͠.ΑΓେ͖͍Λ༻͢Δɻ • ϑϨʔϜͷූ߸ԽɺભҠؔ5 ɾ ɾ Λ༻͍ͯߦ͏ɻ5্ͷΧϥϜɺεςʔ τมͰΠϯσοΫεԽ͞ΕΔɻ • શମΛූ߸Խ͢Δ߹ɺεςʔτม͕େ͖͘ͳΔɻ • σίʔυ͢Δͱ͖ɺɹɹɹ͕ΘΕΔɻ
"/4Λ༻͍ͨΠϯσοΫεѹॖͷྫʢଓ͖ʣ • TFRVFODF2222222222ݸͷεςʔτΛ ࣋ͪɺϏοτͰද͞ΕΔɻϋϑϚϯූ߸Խͩͱ ϏοτͰ͋Δɻ • ରͯ͠ɺTRVFODF3333333333εςʔτ͕ ݸͱͳΓɺϏοτʹͳΔɻ • ͜ͷख๏ɺ4LFXͷ͋Δσʔλʹ༗ޮͰ͋Δɻ
39364 118096 ….
"/4$PNQBSFE • ϋϑϚϯූ߸ٴͼ"SJUINFUJDDPEJOHͱͷൺֱ – "/4ཧతͳූ߸Խ͕"SJUINFUSJDDPEJOHͱۙ͘ͳΔɻ – ߴ͍ग़ݱසͷγϯϘϧΛൃੜ͢ΔͨΊʹɺϏοτͷίʔυ͢ Βൃੜ͠ͳ͍͍ͯ͘߹͕͋ΔɻʢϋϑϚϯූ߸ͩͱৗʹϏο τҎ্͕ඞཁɻʣ –
"SJUINFUSJDDPEJOHΑΓ͘ɺߴʹઃܭ͞ΕͨϋϑϚϯූ ߸ͷ࣮ʹ͍ۙεϧʔϓοτϨʔτΛग़͢͜ͱ͕Ͱ͖Δɻ – "/4"SJUINFUJDDPEJOHͱҟͳΓ੩తϝΧχζϜͰ͋Γɺҟͳ ΔίϯςΩετͷͱͰγϯϘϧΛੜ͢Δ͜ͱ͕Ͱ͖ͳ͍ɻ ͨͩ͜͠ͷ͜ͱΠϯσοΫεѹॖʹӨڹ͠ͳ͍ɻ
"/4GPS*OEFY$PNQSFTTJPO • Ҏલͷݚڀ – "/4Λ̏ͭͷҟͳΔΠϯσοΫεѹॖํࣜͱΈ߹Θͤͨɻ – ಛʹ7#ZUFͱΈ߹ΘͤΔΞϓϩʔνΛQPTUJOHMJTUͷѹॖʹ༻ ͨ͠ɻ – σίʔυͷεϧʔϓοτগ͠Լ͢Δ͚ͩͰɺετϨʔδΛ
͔ͳΓઅͰ͖Δ͜ͱΛ֬ೝͨ͠ɻ • ࠓճͷख๏ɿʮ1BDLFE "/4ʯϝΧχζϜ – ʮͭͷύϥϝʔλʯΛ͏ – গͳ͍ϝϞϦ༻ྔͷίϯύΫτͳ࣮ – ίϯςΩετϚʔδ • ͜ΕΒͷख๏ͷ༗༻ੑΛ࣮ূ͢ΔͨΊʹɺͭͷେ͖ͳ ςΩετίϨΫγϣϯΛ༻ͯ͠ɺѹॖͷ༗ޮੑͱΫΤ Ϧͷεϧʔϓοτʹؔ͢Δৄࡉͳ࣮ݧ݁ՌΛఏڙ͢Δɻ
1BDLFE "/4 • ඪ४తͳ1BDLFEBSSBOHFNFOUͰɺίϯςΩετΛಛఆ ͢ΔηϨΫλ͕֤ϒϩοΫͷූ߸Խͷௐʹར༻͞ΕΔɻ • ූ߸Խεςοϓ͕όΠφϦίʔυΛ༻͢Δ߹ɺηϨ ΫλɺϒϩοΫͷ࠷େΛݟग़͠ɺόΠφϦͷେ͖ ͞Λܾఆ͢Δɻ •
࣍ʹɹɹɹɹͱͳΔΑ͏ͳୈͷɹΛٻΊΔɻैདྷͷ 1BDLFEߏͰɺM൪ͷίϯςΩετΛ༻ͯ͠ɹɹɹɹɹ ΛؚΉϖΠϩʔυ͕ੜ͞ΕΔɻ
*.1307&%1"$,&%$0.13&44*0/ 1BDLFE "/4 • 1BDLFE "/4ϝΧχζϜͰɺ͜ΕΒͷ͞·͟·ͳཁૉ͕ີ ʹ݁ͼ͔ͭͳ͍ɻ • ηϨΫλϒϩοΫͷ࠷େͱ͠ɺ"/4ϑϨʔϜϓʔϧ Λࣝผ͢Δɻ
• ֤ϑϨʔϜʹɺͷϙεςΟϯάΛॲཧ͢Δ࠷ॳͷύεத ʹ౷ܭΛੵ͠ɺ֬Λর߹͢ΔͨΊʹߏங͞Εͨҟ ͳΔγϯϘϧ֬ηοτΛؚΉɻ • γϯϘϧͷසਐͷόέοτʹੵ͞ΕɺͦͷΑ͏ͳ֤ όέοτͷͯ͢ͷγϯϘϧʢͨͱ͑ʣʹͳΔɻ • ྫ͑ɺʜ ʜͱʜ֬Ͱ͋ΔͱԾఆ ͞ΕΔɻ • ͕͠γʔέϯεɹͷ൪ͷγϯϘϧ͕ϒϩοΫͷηο τͱͯ͠ූ߸Խ͞Ε͍ͯΔͳΒɺͱಉ͡ϒϩοΫͷ γϯϘϧʹΘͨΔ࠷େਐ͔Βܭࢉ͞ΕͨηϨΫλͰ͋Δɻ
5XP%JNFOUJPOBM$POUFYUT • ίϯςΩετΛ֦ு͢Δ͜ͱͰɺηϨΫλΛ֨ೲ͢Δί ετ૿Ճ͢Δ͕ɺਖ਼֬ʹλʔήοτͷ֬Λ༻ ͢Δ͜ͱ͕Ͱ͖Δ • ίϯςΩετͷՃํ๏ͱͯ͠ɺҎԼ͕ڍ͛ΒΕΔ – ̎ͷྦྷʹΑΓηϨΫλϕΫτϧΛऔಘ͢Δ –
όέοτ͕খ͘͞ͳΔΑ͏ʹରͷఈΛมߋ͢Δ • ্ͨͩ͠ه྆ํڞϒϩοΫͷ࠷େʹΑܾͬͯ·ͬ ͯ͠·͏ͷͰɺΤϯτϩϐʔίʔσΟϯάͷརΛ׆͔ ͤͳ͍
5XP%JNFOUJPOBM$POUFYUT • ࣍ݩͷηϨΫλΛར༻͍ͨ͠ɻ – ୈҰ࣍ݩ͕ϒϩοΫͷ࠷େɺୈೋ࣍ݩ͕ϒϩοΫͷ࠷খͱ ͢Δɻ • ͜ͷ্ݶΑΓେ͖͍ɺԼݶΑΓখ͍͞ྫ֎ͱͯ͠ ѻ͏͜ͱ͕Ͱ͖Δɻ –
ϒϩοΫͷதԝΛར༻͢Δ͜ͱͰ͖Δɻ
5XP%JNFOUJPOBM$POUFYUT • ࣍ݩ͔Βೋ࣍ݩͷίϯςΩετʹΓସ͑ͨ߹ͷ༷ࢠɻ
3FEVDJOHUIF'SBNFTJ[F • 1BDLFE "/4Ͱɺσίʔυʹ༻͞ΕΔςʔϒϧͷ ҡ࣋ίετ͕͔͔Δͱ͍͏σϝϦοτ͕͋Δɻ • "/4ΛγϯϘϧͷਐͷൣғͰ༻͠ɺ"/4ετϦʔ ϜͱิॿϏοτετϦʔϜΛฒྻʹॲཧ͢Δ͜ͱͰΛ ࠶ߏ͢Δͱ͍͏खஈ͕͋Δɻ •
͜ͷ߹ՃͷΞϥΠϝϯτʹΑΔίετ͕͔͔Δ ͜ͷͨΊɺ1'030QU1'03Ͱར༻͞ΕΔྫ֎Λఆٛ͠ ͯγϯϘϧͱ"/4λʔήοτͷؒͷϚοϐϯάΛఆٛ ͢Δɻ • ͜ΕʹΑΓѹॖͷ༗ޮੑΛߴΊΔ͜ͱ͕Ͱ͖Δɻ
1BDLFE "/4ͷσίʔυ
$POUFYU.FSHJOH • ίϯςΩετΛՃ͢ΔͱɺηϨΫλ͕ՃϏοτΛඞ ཁͱ͢ΔͨΊɺίϯςΩετ͕ଟ͗͢Δͱޮ͕ѱ͘ͳ ΔՄೳੑ͕͋ΔɻίϯςΩετ͕ͷྦྷͰ͋Δ͜ͱ Λอূ͢Δ͖ɻ • ίϯςΩετͷϖΞΛϚʔδ͢Δ͜ͱͰɺ୯Ұͷίϯς Ωετʹஔ͖͑ΔҊɻ γϯϘϧT͕ίϯςΩετB্ͰOB
T ճൃੜ͢Δͱ͢Δͱɺ τʔλϧͷPDDVSSFODF ΤϯτϩϐʔίʔσΟϯάՄೳͰɺͦͷίϯςΩετ ͷτʔλϧίετ
&YQFSJNFOUT &YQFSJNFOUBM$POUFYU • ࣍ݩͷηϨΫλΛར༻ͨ͠ࡍͷOFXTHBQͷ֬ͷ ਤ
γϯϘϧग़ݱසʹجͮ͘ѹॖ༗ޮੑ
.FBTVSFE*NQSPWFNFOU
࣮ߦ࣌ؒɺϝϞϦ༻ྔɺΫΤϦεϧʔϓοτ • *OUFSQΑΓΫΤϦϨεϙϯε͕ૣ͘ɺѹॖ࠷ྑ ͍ͱ͍͏݁Ռ͕ಘΒΕͨɻ
$0/$-64*0/4"/%'6563&803, ˙$PODMVTJPOT • 1BDLFE "/4ϝΧχζϜʹΑΓɺͭͷҟͳΔख๏Λվળͨ͠ɻ – ࣍ݩίϯςΩετ – ࠷্ҐόΠτϚοϐϯά –
ίϯςΩετϚʔδϯά • લͷ*OUFSQͷϕϯνϚʔΫʹউͬͨɻ • 1BDLFE "/4ͷ࣮0QU1'03&'PQUʹൺͯΫΤϦεϐʔ υʹ͓͍ͯྼ͍ͬͯΔ͕ɺ"/4ʹ·ͩվળͷ༨͕͋Δɻ • ͢Ͱʹ΄ͱΜͲͷQPTUJOHT͕খ͍͞αΠζʹූ߸ԽͰ͖Δ͜ͱΛ֬ ೝͨ͠ɻ ˙'VUVSFXPSL • ෳͷঢ়ଶΛฒߦͯ͠෮߸͢ΔͨΊʹ֦ு͞Εͨ෮߸Խςʔϒϧ͓ Αͼ4*.%ػߏΛ༻͢Δͱɺ෮߸ԽΛഒҎ্ʹ૿Ճͤ͞ΔՄ ೳੑ͕͋Δɻ • ՄมϒϩοΫͷ༻ • ΫΤϦͷ౷ܭใΛར༻ͯ͠ҟͳΔѹॖϝΧχζϜΛมߋ͢Δ