Что ещё не прочитал или посмотрел. Ознакамливаться на свой страх и риск.
How to build MongoDB Event Store - Event-Driven.io
Пятничное чтиво
Буду рад предложениям, вопросам и идеям связанным с каналом или архитектурными/техническими вопросами. Можно написать в личку, а можно анонимно. А ответы на вопросы можно прочитать на сайте.
—————————————
SQL query optimization: a comprehensive developer’s guide
Название статьи говорит само за себя. По ссылке найдете 18 советов по оптимизации как SELECT, так и INSERT и DELETE запросов в реляционных базах. Часть советов подойдет под postgreSQL и mySQL.
Советы делятся на три группы. Так советы вокруг вставки включают следующий список: напоминание о EXPLAIN, работа с индексами, куча советов по джоинам (как типизации, функциям и избеганию лишних джоинов). Кроме этого авторы описывают как использовать subquery, пагинацию, GROUP и window functions. И что делать, что бы возвращать меньше данных, либо использовать меньше данных для селекта.
В случае INSERT найдете три главных совета: посмотреть в сторону специализированных функций (например COPY), отказ от не нужных индексов и оптимизация возвращаемого результата. А для DELETE найдете советы связанные с TRUNCATE, партициями, разбивкой транзакций на чанки и использование фильтрации, вместо удаления данных.
Каждый совет делится на три части: как применить совет, какие риски или потенциальные проблемы в решении и «золотое правило» использования совета. Если плаваете в базах — освежить знания стоит.
#sql
—————————————
How to build MongoDB Event Store
Когда говорят о каноническом event sourcing (который о стейте, а не о event streaming), в качестве event store (место, где хранятся события) используют либо реляционные базы, либо специализированные решения. Хотя на деле, можно взять любую базу (хоть редис), что доказывает автор поста выше.
Начинается текст с объяснения что такое event sourcing и event store (радует, что есть ссылка, которая объясняет в чем разница между event sourcing и event streaming). Дальше описываются базовые требования к event store связанные с хранением и получением данных. Дальше описывается, как хранить события в документах, причем не одно событие в одном документе, а стрим (набор событий) в одном документе. После показывается пример реализации подобного храниения стримов в монге и как добиться optimistic concurrency. В конце найдете список трейдофов, в которые попали как размеры документов в монге (до 16 мегабайт), так и проблемы с созданием read model.
#event_sourcing #event_store
—————————————
How Amazon S3 Stores 350 Trillion Objects with 11 Nines of Durability
Очередная статья о том, как в компании решали проблемы. Сегодня это aws, где оптимизировали работу S3 для поддержки 99,999999999% SLA (11 девяток). При этом, не ждите конкретных советов, статья скорее описание того, как работает сервис в общем и как дизайн решения привели к нужным свойствам.
Статья начинается с объяснения того, что такое s3 (object storage service) и какие свойства у сервиса сейчас: куча девяток в durability, разные виды стораджей, автоматический скейл и так далее. Далее описываются вехи «эволюции» сервиса: от рождения в 2006 году, добавление регионов в 2010, улучшение перформанса в 2015, оптимизация для AI и аналитики в 2018 и так далее. При этом, каждый этап эволюции занесен в одну из двух фаз, в которой требовались уникальные свойства от сервиса. После описывается архитектура сервиса, где найдете информацию о том, как обрабатываются запросы, индексируются и хранятся данные и происходят оптимизации. После начинается блок с объяснением того, как данные из запроса попадают в s3 и как работает индекс.
#how_it_works #durability
Event-Driven by Oskar Dudycz