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
250
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
65
Светлана Каюшина, Автоматизируем документирование и внедряем ИИ
ozontech
0
78
Павел Костромитин, «Что случилось у UXW T-Банка в 2024 »
ozontech
0
150
Сергей Горшенин, «Конвертация данных Ozon»
ozontech
0
78
Юрий Гуреев, «Интеграция 1С с внешними системами. Проблемы и их решения»
ozontech
0
110
Артём Нургалиев, «Кэш на кэш: как ускоряли автобиддеры»
ozontech
0
70
Анна Мария Попова (Х5 Tech) – Фантастический техпис: может ли опыт создания художественных книг помочь в написании документации
ozontech
0
250
Александр Мачулин (Gramax) – Справочник фантастических тварей из Docs as Code
ozontech
0
270
Мария Смирнова – Дзен и искусство работы с документацией: как использовать принципы буддизма в работе техписа
ozontech
0
210
Other Decks in Technology
See All in Technology
EventBridge Connection
_kensh
5
710
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
990
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
3
2.1k
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.3k
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
3
1.9k
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
5
2.4k
失敗を資産に変えるClaude Code
shinyasaita
0
650
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
990
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
130
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
120
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
490
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Making Projects Easy
brettharned
120
6.7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
The agentic SEO stack - context over prompts
schlessera
0
820
Ethics towards AI in product and experience design
skipperchong
2
310
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
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]
Спасибо за внимание Антон Коновалов, руководитель отдела «Сегменты и
триггерные коммуникации»