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
How IBLT Works
Search
cipepser
March 11, 2018
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How IBLT Works
cipepser
March 11, 2018
More Decks by cipepser
See All by cipepser
long-running-tasks
cipepser
3
550
layerx-fde-practices
cipepser
6
3.3k
NIKKEI Tech Talk#38
cipepser
0
1.2k
LayerXにおけるFDEについて
cipepser
4
3.4k
20250725-bet-ai-day
cipepser
4
670
Criterion-rs
cipepser
0
180
Practical Anonify
cipepser
2
920
procedural-macros
cipepser
0
210
Move for Libra written in Rust
cipepser
2
3.4k
Other Decks in Technology
See All in Technology
Terraform共通モジュールをチーム横断で“変えられる”運用へ ― リリースと適用の分離
kekke_n
1
2.6k
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.1k
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
160
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.5k
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.4k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.5k
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
600
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
210
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
320
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
210
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
AI Driven AI Governance
pict3
0
330
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
The browser strikes back
jonoalderson
0
1.4k
Designing for Performance
lara
611
70k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
GitHub's CSS Performance
jonrohan
1033
470k
A Tale of Four Properties
chriscoyier
163
24k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Amusing Abliteration
ianozsvald
1
220
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
HDC tutorial
michielstock
2
740
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Transcript
How IBLT works @cipepser
Structure of IBLT 1 2 3 ... ... ... m
m cells each cell have 3 fields: count keySum valueSum
Supported method ・Insert(key, value) ・Get(key) ・Delete(key, value) ・ListEntries()
Insert for each hash function h i [key], i =
1, …, k (like standard BloomFilter) T: IBLT T[h i [key]].count++ T[h i [key]].sumKey += key T[h i [key]].sumValue += value
Insert ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) Insert(key=5, value=10) h 1 (key=5) = 1 0 c: 1 ks: 5 vs: 10 1 c: 1 ks: 5 vs: 10 2 3 4 c: 1 ks: 5 vs: 10 5 6 count: c keySum: ks valueSum: vs h 2 (key=5) = 4 h 3 (key=5) = 0
Insert ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) Insert(key=2, value=30) h 1 (key=2) = 5 0 c: 1 ks: 5 vs: 10 1 c: 2 ks: 7 vs: 40 2 3 4 c: 2 ks: 7 vs: 40 5 c: 1 ks: 2 vs: 30 6 count: c keySum: ks valueSum: vs h 2 (key=2) = 1 h 3 (key=2) = 4
Get T[h i [key]].count == 0? YES NO return false
T[h i [key]].count == 1? return sumValue for i = 1, …, k end for T[h i [key]].sumKey == key? YES YES return false NO NO
Get ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30) have been inserted Get(key=2) →return 30 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 3 4 c:2 ks: 7 vs: 40 5 c:1 ks: 2 vs: 30 6 h 1 (key=2) = 5 T[5].count = 1 T[5].keySum = 2 T[5].valueSum = 30
Get ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30) have been inserted Get(key=3) →return false 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 3 4 c:2 ks: 7 vs: 40 5 c:1 ks: 2 vs: 30 6 c:0 ks: 0 vs: 0 h 1 (key=3) = 6 T[6].count = 0 != 1
Get ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30) have been inserted Get(key=9) →return false 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 3 4 c:2 ks: 7 vs: 40 5 c:1 ks: 2 vs: 30 6 h 1 (key=9) = 5 T[5].keySum = 2 h 2 (key=9) = 1 T[1].keySum = 7 h 3 (key=9) = 4 T[4].keySum = 7
Get ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30), (3, 20) have been inserted Get(key=2) →return false (false-negative) 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 c:1 ks: 3 vs: 20 3 4 c:2 ks: 7 vs: 40 5 c:2 ks: 5 vs: 50 6 c:1 ks: 3 vs: 20 h 1 (key=2) = 5 T[5].keySum = 5 != 2 h 2 (key=2) = 1 T[1].keySum = 7 != 2 h 3 (key=2) = 4 T[4].keySum = 7 != 2
Delete for each hash function h i [key], i =
1, …, k T: IBLT T[h i [key]].count-- T[h i [key]].sumKey -= key T[h i [key]].sumValue -= value
Delete ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30) have been inserted 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 3 4 c:2 ks: 7 vs: 40 5 c:1 ks: 2 vs: 30 6 Delete(key=2, value=30) h 1 (key=2) = 5 0 c: 1 ks: 5 vs: 10 1 c: 1 ks: 5 vs: 10 2 3 4 c: 1 ks: 5 vs: 10 5 c: 0 ks: 0 vs: 0 6 h 2 (key=2) = 1 h 3 (key=2) = 4
ListEntries T[i].count == 1? YES NO for i = 1,
…, m end for push( key = T[i].sumKey, value = T[i].sumValue ) Delete(key, value) START
ListEntries ex) m = 7 cells, k = 3 hash
functions, h i (x) = (10 * i + x) mod m (simply) (key, value) = (5, 10), (2, 30) have been inserted 0 c:1 ks: 5 vs: 10 1 c:2 ks: 7 vs: 40 2 3 4 c:2 ks: 7 vs: 40 5 c:1 ks: 2 vs: 30 6 T[0].count == 1 push(key=5,value=10) Delete(key=5,value=10) 0 c:0 ks: 0 vs: 0 1 c:1 ks: 2 vs: 30 2 3 4 c:1 ks: 2 vs: 30 5 c:1 ks: 2 vs: 30 6 T[1].count == 1 push(key=2,value=30) Delete(key=2,value=30) 0 c:0 ks: 0 vs: 0 1 c:0 ks: 0 vs: 0 2 3 4 c:0 ks: 0 vs: 0 5 c:0 ks: 0 vs: 0 6 pushed key-value pairs: {(5, 10), (2, 30)}