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
Антон Коновалов – «RoaringBitmap: что это такое...
Search
Ozon Tech
September 22, 2023
Technology
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Антон Коновалов – «RoaringBitmap: что это такое и как мы это используем»
Ozon Tech
September 22, 2023
More Decks by Ozon Tech
See All by Ozon Tech
Анастасия Писнова, «Текст как проект»
ozontech
0
80
Светлана Каюшина, Автоматизируем документирование и внедряем ИИ
ozontech
0
89
Павел Костромитин, «Что случилось у UXW T-Банка в 2024 »
ozontech
0
160
Сергей Горшенин, «Конвертация данных Ozon»
ozontech
0
88
Юрий Гуреев, «Интеграция 1С с внешними системами. Проблемы и их решения»
ozontech
0
120
Артём Нургалиев, «Кэш на кэш: как ускоряли автобиддеры»
ozontech
0
79
Анна Мария Попова (Х5 Tech) – Фантастический техпис: может ли опыт создания художественных книг помочь в написании документации
ozontech
0
260
Александр Мачулин (Gramax) – Справочник фантастических тварей из Docs as Code
ozontech
0
290
Мария Смирнова – Дзен и искусство работы с документацией: как использовать принципы буддизма в работе техписа
ozontech
0
220
Other Decks in Technology
See All in Technology
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
2027年のMetricKit
kantacky
0
130
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
120
強化学習「理論」入門
enakai00
3
3.6k
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
420
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
2
460
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
660
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
130
Android skills に学ぶ
kokiko
0
130
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
codmoninc
0
180
AIで変わるエンジニアの働き方(仮)
naoinaoi
0
210
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
110
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
660
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
350
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
For a Future-Friendly Web
brad_frost
183
10k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
KATA
mclloyd
PRO
35
15k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
870
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
430
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Transcript
Ozon Tech 2023 RoaringBitmap: что это такое и как мы
это используем Антон Коновалов, руководитель отдела «Сегменты и триггерные коммуникации»
Что такое битмапы 1
Какие свойства? Где используют? Bitmap, bitset, bit-array 3 Index 0
1 2 3 4 5 6 7 . . . N Bitmap 0 1 0 1 0 0 1 . . . 1 N существует в этом наборе 2 не существует в этом наборе
4 Почему это быстро? Храня наборы целых чисел в таком
представлении, bitmap могут использовать преимущества чрезвычайно быстрых инструкций CPU • bitwise-AND • bitwise-OR • SIMD
Маски 5
При решении каких задач мы используем bitmap в отделе «Сегменты
и триггерные коммуникации»? 2
Построение сегментов и сегментирование Сегменты 7
Визуализация сегментов Сегменты 8
Конструктор рассылок по аудиториям и аналитика по результатам Коммуникации 9
Конструктор рассылок по аудиториям и аналитика по результатам Коммуникации 10
Как написать свой маленький Bitset на Gо? 11
RoaringBitmap 3
Сжатые Bitmap. Могут быть в сотни раз быстрее RoaringBitmap 13
0х0000 0х0001 0х0001 0 62 124 186 248 310 … 61 938 [0,99] [101,99] [300,99] 1 0 1 0 1 0 … 0 16-bit values + pointers to container 1000 sorted 16-bit values (2000 B) 216 bits (8kB) 3 х 2 B = 6 B Three pairs of 16-bit values, indicating intervals [0,99], [101, 200], [300,399]; pairs are sorted for fast random access array container (1000 values) run container (3 runs) bitset container (215 values)
На сегменте 100_000_000 пользователей Посчитаем размер 14 Bitset 1. Структура
хранения: []uint64 2. Размер сета: 100_000_000 / 64 = 1_562_500 3. 1_562_500 * 8 bytes = 12.5Mb RoaringBitmap 1. Зависит от случая, посмотрим в коде J
[email protected]
Спасибо за внимание Антон Коновалов, руководитель отдела «Сегменты и
триггерные коммуникации»