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
DynamoDBとBloomFilterのムフフなカンケイ
Search
co-sche
November 11, 2016
Technology
0
1.3k
DynamoDBとBloomFilterのムフフなカンケイ
メディアのための広告配信システム、A.J.A.でのDynamoDBとBloomFilterの活用事例
co-sche
November 11, 2016
Tweet
Share
More Decks by co-sche
See All by co-sche
PackerとAnsibleでコンパクトに始めるInfrastructure as Code
co_sche
0
250
Other Decks in Technology
See All in Technology
日本におけるデータエンジニアリングのこれまでとこれから
foursue
12
2.5k
小さな開発会社がWebサービスを作る理由
polidog
PRO
1
160
シン・Kafka / shin-kafka
oracle4engineer
PRO
7
2.7k
コードを書く隙間を見つけて生きていく技術/Findy 思考の現在地
fujiwara3
24
5.2k
転移学習とドメイン適応の基礎
kmatsui
2
570
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
2
690
"好き"との生活/Regularly update profile with GitHub Actions
judeeeee
0
150
Databricks におけるデータエンジニアリング
databricksjapan
0
380
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
140
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
220
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
200
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
503
110k
The Pragmatic Product Professional
lauravandoore
24
5.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
11
4.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
Automating Front-end Workflow
addyosmani
1355
200k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Documentation Writing (for coders)
carmenintech
59
3.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Transcript
DynamoDBͱBloomFilterͷ ϜϑϑͳΧϯέΠ
ࣗݾհ ฏদ ߛయ • A.J.A. ϓϩάϥϚʔɾΞʔΩςΫτ • നนͷ֗ ෑग़ •
Ϊλʔ͍ͬͺ͍࣋ͬͯΔ • ͓ڕ৯ΒΕͳ͍ • https://github.com/co-sche
None
લճɺBloomFilterͷಈ࡞ݪ ཧͳͲʹ͍ͭͯΛ͠·ͨ͠ɻ IUUQXXXTMJEFTIBSFOFUDPTDIFTT
A.J.A.ͰͲ͏ΘΕ͍ͯΔͷ͔Λ Γ͍ͨͱ͍͏্͕͕ͬͨͷͰɺࠓ ճͦͷลΛத৺ʹ͓͠͠·͢ɻ
͘͡ • DynamoDB • DynamoDBͷ׆༻ࣄྫ • DynamoDBͷ • BloomFilter •
DynamoDB with BloomFilter
DynamoDB
DynamoDB • AWSͷϑϧϚωʔδυͳ NoSQL DB • ΩϟύγςΟϢχοτͱ͍͏୯ҐͰRead/WriteΛݟ ੵͬͯઃఆ͢Δ͚ͩͰɺμϯλΠϜແ͠Ͱεέʔ ϧ •
ઃఆͨ͠ΩϟύҎ্ͷΞΫηεʹجຊ͑ΒΕͳ͍ • ઃఆͨ͠Ωϟύʹରͯ͠՝ۚ
DynamoDB׆༻ࣄྫ A.J.A.ͷ߹
ϒϥβΫοΩʔͷସͱͯ͠ಋೖ
֨ೲͯ͠Δใ • ͲΜͳ༰ͷࠂͳͷ͔ • ͲΜͳॴʹग़ͯΔͷ͔ • ͲΜͳબग़ͷ͞ΕํΛͨ͠ͷ͔
WriteͷλΠϛϯά • ϝσΟΞαΠτͰͷࠂΫϦοΫ࣌
ReadͷλΠϛϯά • ࠂओαΠτʹຒΊࠐ·ΕͨϏʔίϯλά ϑοΫ • PVCVͷϩάʹు͍ͯɺ͔࣍Βͷࠂબ ग़ʹ׆͔͢
͜ͷέʔεͰͷ • Read͠Α͏ͱ߲͕ͨ͠ݟ͔ͭͬͯݟ͔ͭ Βͳͯ͘ΩϟύγςΟϢχοτফඅ͞Ε Δ
A.J.A. Ձ֨.c̋m͞Μ͔ΒϏʔίϯ ड৴͔ͨ͠Β͜ͷID͕ͯ͞͠ɻ
DynamoDB ͕͚ͨ͞͠Ͳɺ ͦΜͳΜ͋ΒΜͰɻ
A.J.A. ͞Α͏͔ɻ ͢·Μͳɻ
DynamoDB ͓͏ɻ ͋ɺۚΖͯ͘Ͱɻ
͜ͷέʔεͰͷ • ReadͷλΠϛϯάࠂओαΠτʹຒΊࠐ·ΕͨϏʔίϯ ϑοΫ • Ձ֨.c̋mͷৄࡉϖʔδʹຒΊࠐ·ΕͨΒʁ • YAH̋̋!γϣοϐϯάͷߪೖྃϖʔδʹషΒΕͨΒʁ • ͜ΕΒͷϏʔίϯͷ΄ͱΜͲɺA.J.A.ࠂΛclickͯ͠ભҠ͠
ͨΘ͚Ͱͳ͍ແؔͳϏʔίϯ • ͭ·ΓɺReadͰݟ͔ͭΒͳ͍͜ͱ͕΄ͱΜͲ
͜ͷέʔεͰͷ • ΄ͱΜͲ͕ϛεώοτ͢ΔେྔͷRead • ↑ͷ෩͕ಥવਧ͖ߥΕ࢝ΊΔڪා • ͜ΕΒʹରͯ͠ɺΩϟύγςΟΛେྔʹݟੵ Βͳ͚ΕͳΒͳ͍ෆໟײ
A.J.A. σʔλͷ༗ແ͚ͩͰ ࣄલʹ͔Ε͍͍ͷʹ…
BloomFilter
BloomFilter • ཁૉΛ༩͑ɺޙʹ͍߹ΘͤΔͱʮΈͨ͜ͱ ͋ΔΘʔʯ͘Β͍ʹ͍֮͑ͯͯ͘ΕΔσʔλ ߏ • ཁૉΛ༩͑ͯͳ͍ͷʹ͔ͬͨͿΔ͜ͱ͕͋ Δ • ༩͑ͨͷʹ֮͑ͯͳ͍ͱ͍͏͜ͱɺઈରͳ
͍
ཁૉΛ༩͑ͯͳ͍ͷʹͬͨ ͔ͿΔ͜ͱ͕͋Δ ِཅੑ͕͋Δ
༩͑ͨͷʹ֮͑ͯͳ͍ͱ͍͏ ͜ͱɺઈରͳ͍ ِӄੑͳ͍
BloomFilter • ِཅੑΛڐ༰͢Δ͜ͱͰɺੌ·͘͡লεϖʔε Ͱཁૉͷ༗ແΛهԱ͢Δ͜ͱ͕Ͱ͖Δ • Ұཁૉ͋ͨΓbits
DynamoDB with BloomFilter • DynamoDBʹΫΤϦ͢ΔલʹBloomFilterʹฉ ͘͜ͱͰɺϋζϨReadΛ΄΅Χοτ • ِཅੑൃੜ͢Δ͕ɺͦΕʹΑͬͯى͜Δͷ ͨͩͷϋζϨReadͳͷͰͳ͠
DynamoDB with BloomFilter • A.J.A.ͷ߹ • PVϏʔίϯ 1000/s • DynamoDBͷΫΤϦ
50/s • 1 / 20 • ແؔͳPVϏʔίϯ͕ٸಅͯ͠ͳ͠
·ͱΊ • A.J.AͰɺBloomFilterΛDynamoDBͷલஈ ͷωΨςΟϒΩϟογϡͱͯ͠ར༻͍ͯ͠·͢ɻ
͓·͚ • ͜ͷྨͷਖ਼֬ੑΛͪΐͼͬͱ٘ਜ਼ʹͯ͠ɺ࣌ؒ తɾۭؒతίετΛେ෯ʹઅ͢Δσʔλߏ ɺཚσʔλߏͱݺΕ͍ͯ·͢ɻ • BloomFilterҎ֎ʹɺHyperLogLogMinHash ͱ͍͏ͷ͋Γ·͢ɻ • ͦΕͧΕ໘ന͕͋͞ΔͷͰɺௐͯΈͯԼ͍͞
Ͷʂ
Have a nice ཚʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ