SlideShare a Scribd company logo
How to process 80 million events per day
and build relational graphs With POSTGRES
Evgen Kostenko
SPS Commerce
2
AGENDA
• Why we need process events
• Storing graphs
• Models for hierarchical data
• Building Architecture 1
• Building Architecture 2
• Lessons learned
SERVICES COMMUNICATION
3
4
DESIGN
5
REAL LIFE
6
EVENTS STREAM
7
EVENTS
8
• Monitoring distributed systems
• Route individual call across different services
EVENTS VALUE
9
ROUTE INDIVIDUAL CALL ACROSS
DIFFERENT SERVICES
10
DESIGN
11
EVENT
12
STORING GRAPHS
13
STORING GRAPHS
14
STORING GRAPHS IN AWS
15
STORING GRAPHS IN AWS
16
MODELS FOR HIERARCHICAL DATA
17
Example content
20
• Adjacency List
• Path Enumeration
• Nested Sets
• Closure Table
SOLUTIONS
21
• Naive solution nearly everyone uses
• Each entry knows its immediate parent
ADJACENCY LIST
22
• Store chain of ancestors in each node
PATH ENUMERATION
23
• A comment’s left number is less than all numbers used by the
comment’s descendants.
• A comment’s right number is greater than all numbers used by the
comment’s descendants.
NESTED SETS
24
CLOSURE TABLE
25
CHOOSING THE RIGHT DESIGN
26
CHOOSING THE RIGHT DESIGN
27
28
Joe Celko’s
Trees and Hierarchies in SQL for Smarties
2012
LAMBDA ARCHITECTURE
29
KAPPA ARCHITECTURE
30
EVENTS STREAM
31
EVENTS STREAM
32
ARCHITECTURE 1
33
ARCHITECTURE 1
34
OPTIMISTIC WRITES
35
Optimistic concurrency control (OCC) is a concurrency control method
applied to transactional systems such as relational database management
systems and software transactional memory. OCC assumes that multiple
transactions can frequently complete without interfering with each other.
While running, transactions use data resources without acquiring locks on
those resources. Before committing, each transaction verifies that no other
transaction has modified the data it has read. If the check reveals conflicting
modifications, the committing transaction rolls back and can be restarted
ARCHITECTURE 1
36
ARCHITECTURE 1
37
ARCHITECTURE 1
38
CHOOSING THE RIGHT DESIGN FOR CONCURRENT WRITES
39
40
ARCHITECTURE 2
41
ARCHITECTURE 2
42
LESSONS LEARNED
43
• If database support you data model it’s not means that it
optimized for you case.
• Old approaches still work
• Scalability limit exist and sometimes the are less than
number of instances/cores that you have
• Analyze you data
• Sometimes react faster means process slowly
EVGEN KOSTENKO,
Q/A
44

More Related Content

What's hot (20)

PDF
FIWARE Global Summit - QuantumLeap: Time-series and Geographic Queries
FIWARE
 
PPTX
SnapLogic Live: IoT Integration
SnapLogic
 
PPTX
Challenges of monitoring distributed systems
Nenad Bozic
 
PDF
Improving search at Wellcome Collection
Elasticsearch
 
PDF
Scylla Summit 2022: Scalable and Sustainable Supply Chains with DLT and ScyllaDB
ScyllaDB
 
PDF
How a Data Mesh is Driving our Platform | Trey Hicks, Gloo
HostedbyConfluent
 
PDF
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA
 
PPTX
SnapLogic Live: ServiceNow Integration
SnapLogic
 
PDF
BDX 2016- Monal daxini @ Netflix
Ido Shilon
 
PDF
BDX 2016 - Kevin lyons & yakir buskilla @ eXelate
Ido Shilon
 
PDF
Api observability
Red Hat
 
PPTX
Voxxed Days Cluj - 3 performance improvements with Hazelcast IMDG in your mic...
Nicolas Fränkel
 
PPTX
YaJUG/Kaiserslautern JUG - 3 easy improvements in your microservices architec...
Nicolas Fränkel
 
PPTX
Istanbul JUG - 3 performance improvements with Hazelcast IMDG in your microse...
Nicolas Fränkel
 
PPTX
go>tech world - 3 performance improvements with Hazelcast IMDG in your micros...
Nicolas Fränkel
 
PDF
Elastic APM: amplificação dos seus logs e métricas para proporcionar um panor...
Elasticsearch
 
PDF
Architecture for Scale [AppFirst]
AppFirst
 
PDF
Apache Flink
Mike Frampton
 
PDF
Le monitoring d'infrastructure de l'ingestion aux données : un jeu d'enfants !
Elasticsearch
 
ODP
Batch processing in EDA (Event Driven Architectures)
Álvaro Santuy Elena
 
FIWARE Global Summit - QuantumLeap: Time-series and Geographic Queries
FIWARE
 
SnapLogic Live: IoT Integration
SnapLogic
 
Challenges of monitoring distributed systems
Nenad Bozic
 
Improving search at Wellcome Collection
Elasticsearch
 
Scylla Summit 2022: Scalable and Sustainable Supply Chains with DLT and ScyllaDB
ScyllaDB
 
How a Data Mesh is Driving our Platform | Trey Hicks, Gloo
HostedbyConfluent
 
Data Con LA 2018 - Enabling real-time exploration and analytics at scale at H...
Data Con LA
 
SnapLogic Live: ServiceNow Integration
SnapLogic
 
BDX 2016- Monal daxini @ Netflix
Ido Shilon
 
BDX 2016 - Kevin lyons & yakir buskilla @ eXelate
Ido Shilon
 
Api observability
Red Hat
 
Voxxed Days Cluj - 3 performance improvements with Hazelcast IMDG in your mic...
Nicolas Fränkel
 
YaJUG/Kaiserslautern JUG - 3 easy improvements in your microservices architec...
Nicolas Fränkel
 
Istanbul JUG - 3 performance improvements with Hazelcast IMDG in your microse...
Nicolas Fränkel
 
go>tech world - 3 performance improvements with Hazelcast IMDG in your micros...
Nicolas Fränkel
 
Elastic APM: amplificação dos seus logs e métricas para proporcionar um panor...
Elasticsearch
 
Architecture for Scale [AppFirst]
AppFirst
 
Apache Flink
Mike Frampton
 
Le monitoring d'infrastructure de l'ingestion aux données : un jeu d'enfants !
Elasticsearch
 
Batch processing in EDA (Event Driven Architectures)
Álvaro Santuy Elena
 

Similar to Evgen Kostenko "How to process 80 million events per day and build relational graphs with Postgres" (20)

PPTX
Software architecture for data applications
Ding Li
 
PDF
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
SindhuVasireddy1
 
PDF
Martin Kleppmann-Designing Data-Intensive Applications_ The Big Ideas Behind ...
Samir P.
 
PDF
Intro to Databases
Sargun Dhillon
 
PPTX
osi-oss-dbs.pptx
Shivji Kumar Jha
 
PDF
Building data intensive applications
Amit Kejriwal
 
PPTX
Data Engineering for Data Scientists
jlacefie
 
PDF
Designing data intensive applications - Oleg Mürk
ExpressPlay Intertrust
 
PDF
Designing Data-Intensive Applications
Oleg Mürk
 
PDF
Designing Data Intensive Applications The Big Ideas Behind Reliable Scalable ...
lebanfyockkc
 
PPTX
Application architecture for cloud
Marco Parenzan
 
KEY
Dropping ACID - Building Scalable Systems That Work
Chris Patterson
 
PDF
Azure and cloud design patterns
Venkatesh Narayanan
 
PDF
Streaming Analytics with Spark, Kafka, Cassandra and Akka
Helena Edelson
 
PDF
Pivotal gem fire_twp_distributed-main-memory-platform_042313
EMC
 
PPTX
2 5404811386729530203
Stfalcon Meetups
 
PPT
No sql
Murat Çakal
 
PDF
Анализ телеметрии при масштабировании, Theo Schlossnagle (Circonus)
Ontico
 
PPTX
NoSQL and Couchbase
Sangharsh agarwal
 
PPTX
Building FoundationDB
FoundationDB
 
Software architecture for data applications
Ding Li
 
Designing Data-Intensive Applications_ The Big Ideas Behind Reliable, Scalabl...
SindhuVasireddy1
 
Martin Kleppmann-Designing Data-Intensive Applications_ The Big Ideas Behind ...
Samir P.
 
Intro to Databases
Sargun Dhillon
 
osi-oss-dbs.pptx
Shivji Kumar Jha
 
Building data intensive applications
Amit Kejriwal
 
Data Engineering for Data Scientists
jlacefie
 
Designing data intensive applications - Oleg Mürk
ExpressPlay Intertrust
 
Designing Data-Intensive Applications
Oleg Mürk
 
Designing Data Intensive Applications The Big Ideas Behind Reliable Scalable ...
lebanfyockkc
 
Application architecture for cloud
Marco Parenzan
 
Dropping ACID - Building Scalable Systems That Work
Chris Patterson
 
Azure and cloud design patterns
Venkatesh Narayanan
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka
Helena Edelson
 
Pivotal gem fire_twp_distributed-main-memory-platform_042313
EMC
 
2 5404811386729530203
Stfalcon Meetups
 
No sql
Murat Çakal
 
Анализ телеметрии при масштабировании, Theo Schlossnagle (Circonus)
Ontico
 
NoSQL and Couchbase
Sangharsh agarwal
 
Building FoundationDB
FoundationDB
 
Ad

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
Ad

Recently uploaded (20)

PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
July Patch Tuesday
Ivanti
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
July Patch Tuesday
Ivanti
 

Evgen Kostenko "How to process 80 million events per day and build relational graphs with Postgres"

Editor's Notes

  • #3: Сегодня мы с вами рассмотрим историю создания одного сервиса от зарождения идеи, зачем это было придумана и какая проблему мы пытались решить, до того как этот сервис стал приносить нам пользу и закрепился в нашей инфраструктуре как незаменимая часть.
  • #4: В современном мире одна из важных и сложных проблем построения больших, распределенных систем это организовать правильно коммуникацию между сервисами. Что только люди не придумывали для того чтобы это упростить. Давайте не будем углубляться в древнейшие времена и не будем говорить про те эпохи когда не было сети или изобретали TCP и TPC IP и даже не будем говорить о том когда был SOAP (хотя он наверно до сих пор где то есть). Вспомним сразу REST API. Сначала все передавали по JSON потом появились более оптимальные форматы данных Protobuf, Tref где можно было указывать типы, делать базовый RPC. Вариантов здесь много но я хочу лишь сказать что это довольно не простая задача даже в современном мире
  • #5: Масла в огонь еще подливают микросерввисы, которыми уже никого не удивишь они давно укоренились и каждый уважающий себя архитектор проектирует новые системы с использованием микросервисов и задача становиться еще сложнее в результате мы получаем сложности в понимании как взаимодействуют микросервисы друг с другом. А иногда границы начинают стираться и внутри огромной системы микросервисы которые были частью больших сервисов выходят за рамки своего сервиса и начинают взаимодействовать друг с другом.
  • #6: Вот так приблизительно выглядит дизайн приложения как мы его проектируем и разобраться в подобной схеме не очень то и сложно. У кого есть такие схемы на проектах? У кого есть такие схемы которые показывают взаимодействие всех сервисов внутри систем компании и внешних систем?
  • #7: Схемы это круто, но в реальности все становиться намного сложнее и схема взаимодействия выглядит приблизительно так. Как же решить эту проблему как распутать этот клубок?
  • #8: Одно из самых очевидных решений это заставить каждый сервис слать события о том что у них происходит и построить систему которая на основе этих событий будет нам собирать, валидировать, очищать, делать трансформацию и агрегацию в удобный для нас формат где мы всегда можем знать что у нас происходит в системе в целом так же и отдельно для каждой цепочке коммуникации которая произошла внутри всей системы.
  • #9: т.е. грубо говоря будет распутывать для нас эту паутину и превращать в ту самую удобную и понимаемую схему взаимодействий внутри системы.
  • #10: Вот 2 главные проблемы которые мы попытались решить с помощью ивентов Мониторинг распределенных систем И возможность проследить каждый запрос который происходит внутри системы от его начала до его завершения
  • #11: И с мотниторингом все более ли менее понятно, а вот с тем чтобы проследить цепочки запросов, эта задача становиться немного сложнее. Потому как на теперь нужно заставить все сервисы договориться друг с другом каким образом они будут сообщать нам в ивентах о том кто кого вызывает.
  • #12: Мы решили что каждый новый сервис будет присылать ссылку на предыдущий и предыдущий должен при запросу к каждому новому сервису сообщить о том что именно он его вызывает. Проблему можно было решить с помощью введения уникального id внутри цепочки вызовов, но в таком случае мы бы могли восстановить цепочку вызовов только отсортировав события по времени но в таком случае мы бы теряли информацию о тех случаях когда процесс распадается на нескольно, а потом объединяться снова что было для нас очень важно
  • #13: Ивенты в нашем случае это обычные JSON документы в которых есть список ссылок откуда данный запрос пришел. Например если это очередь и сервис делает некоторую агрегацию сообщений он укажет несколько ссылок. В поле метаданных сервисы могут писать любую свою внутреннюю информацию, статусы и на основе нее мы строим наши отчеты
  • #14: В итоге все эти данные в ивентах сама по себе стали очень похожи на граф потому мы задались а как же мы будем хранить и собирать этот граф
  • #18: Когда мы говорим про граф то всегда представляем что то такое это огромное количество связей которые так или иначе связаны друг с другом. Но когда мы попытались записать наши данные в графовую базу данных так вышло что у нас получилось очень много маленьких не связанных друг с другом графов которые были достаточно глубокими 10-50 вершин но в среднем не достаточно большими в ширину, хотя были и исключения и большинство графовых баз данных показали достаточно низкую производительность на этапе чтения этих графов
  • #21: Мы решили сделать сделать что свое