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
Агрегация и обработка статистики
Search
Yehor Nazarkin
August 12, 2013
Programming
0
5.7k
Агрегация и обработка статистики
Доклад Валерия Змиевского, kharkivpy #8
Yehor Nazarkin
August 12, 2013
Tweet
Share
More Decks by Yehor Nazarkin
See All by Yehor Nazarkin
Flask, гордость и предубеждения
nimnull
0
290
Python non-mainstream web
nimnull
0
130
Write once, run everywhere
nimnull
0
6.2k
GPU Computing in Python
nimnull
1
5.6k
To Flask or not to Flask
nimnull
5
620
MongoDB Без ORM
nimnull
0
270
REST in Flask (And small client-side intro)
nimnull
10
1.7k
Other Decks in Programming
See All in Programming
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
420
Why Prism?
kddnewton
4
1.7k
Patched fetch did not work
quramy
4
380
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
160
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
210
Ruby Parser progress report 2024
yui_knk
2
230
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
0
400
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
390
Featured
See All Featured
Design by the Numbers
sachag
277
19k
Music & Morning Musume
bryan
46
6k
Building a Scalable Design System with Sketch
lauravandoore
459
32k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2.1k
Designing the Hi-DPI Web
ddemaree
278
34k
Unsuck your backbone
ammeep
667
57k
Ruby is Unlike a Banana
tanoku
96
11k
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
Adopting Sorbet at Scale
ufuk
73
8.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Atom: Resistance is Futile
akmur
261
25k
Transcript
Агрегация и обработка статистики реального времени Валерий Змиевской
Что нам нужно? • База данных • Отказаться от запросов:
group by keyfield … order by sum(datafield) desc • Upsert MongoDB, MySQL - есть нативный синтаксис
Как хранить данные Хранить данные для каждого ключа группировки в
отдельной таблице: user : [last_login, orders, coupons_used, …] category, date : [orders_amount, items_sold] region, date : [orders_amount, items_sold] ….
OLAP-куб на одной таблице Ключи : данные [region, category, year,
month] : [ord, isold] [<all>, 12, 2013, 01] : [100, 665] [<all>, <all>, 2013, 01] : [1600, 5200] ….
Срезы [region, category, year, month] [0, 0, 1, 0], [0,
0, 1, 1], [1, 0, 1, 0], [1, 0, 1, 1] [0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 1, 0], [1, 1, 1, 1] [0, 1, 0, 0], [1, 1, 0, 0] Не нужны срезы: [*, *, 0, 1] и [*, 0, 0, 0]
Показываем: category, графики по месяцам Сортируем: ord, isold Индексы: •
region, category, year, month - unique|Charts • region, year, month, ord - Orders/Category • region, year, month, isold - It. sold/Category Индексы
Запросы: Категории: region=<all>, year=<all>, month=<all> region=EU, year=<all>, month=<all> region=EU, year=2013,
month=<all> График по категории Goods за 2013 год region=EU, year=2013, category=’Goods’