Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Антон Коновалов – «RoaringBitmap: что это такое...
Search
Ozon Tech
September 22, 2023
Technology
290
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
89
Светлана Каюшина, Автоматизируем документирование и внедряем ИИ
ozontech
0
98
Павел Костромитин, «Что случилось у UXW T-Банка в 2024 »
ozontech
0
180
Сергей Горшенин, «Конвертация данных Ozon»
ozontech
0
97
Юрий Гуреев, «Интеграция 1С с внешними системами. Проблемы и их решения»
ozontech
0
120
Артём Нургалиев, «Кэш на кэш: как ускоряли автобиддеры»
ozontech
0
89
Анна Мария Попова (Х5 Tech) – Фантастический техпис: может ли опыт создания художественных книг помочь в написании документации
ozontech
0
270
Александр Мачулин (Gramax) – Справочник фантастических тварей из Docs as Code
ozontech
0
300
Мария Смирнова – Дзен и искусство работы с документацией: как использовать принципы буддизма в работе техписа
ozontech
0
230
Other Decks in Technology
See All in Technology
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
360
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.3k
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
120
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
190
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
890
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
200
夫婦で子育てするための育児標準化
codmoninc
PRO
0
450
Metadata - Section 1: HTML Basics
mohab1
0
120
Local CI × GitHub Actions
gogutan
3
230
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Building the Perfect Custom Keyboard
takai
2
910
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Odyssey Design
rkendrick25
PRO
2
880
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Ethics towards AI in product and experience design
skipperchong
2
440
Testing 201, or: Great Expectations
jmmastey
46
8.3k
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]
Спасибо за внимание Антон Коновалов, руководитель отдела «Сегменты и
триггерные коммуникации»