Symfony State Machines and Domain Driven Design

It has been just over 2 years since Symfony released their Workflow component. I was of course thrilled by the news and started to work on multiple PRs to make the component support state machines. It was a really cool experience working with the Symfony community and discussing everything from […]

Работаем с MySQL в Go

Сегодня хочу рассказать о небольшом опыте работы с MySQL (хотя тут можно использовать и любую другую БД) в Go. Я нашел для себя отличный способ работать с БД из Go и спешу им поделиться. Вообще в Go есть несколько важных вещей для того, чтобы делать запросы. Например database/sql и github.com/go-sql-driver/mysql. […]

Pessimistic vs Optimistic Locking in Laravel

Introduction When two or more clients want to update the same record, a conflict may occur which is known as a race condition. To prevent such a conflict, a pessimist system assumes the worst, i.e., the updates always occur at the same time. Thus, it eliminates the race condition by […]

How do slices internally work in golang

Why do slices exists if you already have arrays in golang? Let’s see why we need slices in golang. So in this blog, we will talk about What are slices and why do we need them? How do they internally work in golang? What mistakes can we make while using […]

Database Transactions and Resource Locking in Laravel

Database transactions and pessimistic locking are probably not the most used features, however, they can be extremely useful. Let’s take a brief look and then examine how Laravel’s database layer supports these features. In this post, we don’t focus on the plain SQL implementation of database transactions or locking. After […]

Что такое ETL: как справиться с анализом big data

Крупные предприятия собирают, хранят и обрабатывают разные типы данных из множества источников, таких как системы начисления заработной платы, записи о продажах, системы инвентаризации и других. Эта информация извлекается, преобразуется и переносится в хранилища данных с помощью ETL-систем. Расскажем, что такое ETL, а также какие платные и общедоступные решения для работы […]

MySQL / немного о SELECT… FOR UPDATE и GET_LOCK

Для примера рассмотрим такой случай.У нас есть MySQL база, в которой есть таблица queue. В эту таблицу поступают задания для выполнения.Задания должны распределяться между процессами. Одна и та же задача не должна попасть к разным процессам.Для решения задачи можно воспользоваться SELECT … FOR UPDATE.Каждый процесс для получения задачи будет выполнять […]

Блокировки в MySQL

На хабре часто обсуждаются принципы работы MySQL. Данный хабратопик посвящен механизмам блокировок, используемым в MySQL. Топик поможет начинающим изучать MySQL и, в некоторой степени, опытным хабралюдям. Механизм блокирования в MySQL Одновременный доступ нескольких клиентов к хранилищу данных может приводить к ошибкам различного типа. Например, одновременное чтение одним клиентом и запись […]

Что такое озера данных и почему в них дешевле хранить big data

Сейчас все вокруг твердят про пользу big data. В итоге бизнес пытается работать с масштабными базами данных, но сталкивается с проблемой — все данные разнородные и неструктурированные, перед загрузкой в базы их нужно долго обрабатывать. В итоге работа с big data оказывается слишком сложной и дорогой, а часть данных теряется, […]

Как выкатить обновление, если оно затрагивает все ваши сервисы

Обновления могут происходить каждый день, но иногда нужно выкатить фичу такого масштаба, что потенциальные ошибки поаффектят все ваши сервисы и пользователей. В статье расскажем, как сделать выкатку обновлений любой сложности в запланированный и анонсированный срок даунтайма без последствий для продакшен. Что такое выкатка Любой айтишник легко ответит, что такое выкатка: […]