Pull to refresh
31
0.1
Михаил Григорьев @Sleuthhound

Системное администрирование, программирование, IoT

Send message

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

Level of difficulty Medium
Reading time 4 min
Views 3.6K

Некоторое время назад у нас возникла задача организовать возможность создания managed баз данных. Сложность данной задачи в том, что нам надо развертывать и управлять тысячами баз данных PostgreSQL, которые обеспечивают репликацию, бэкапы, мониторинг и другие полезные пользователям функции. При этом в ядре нашей системы лежит Kubernetes, в котором запускаются приложения пользователей. И по ряду факторов нам требовалось запускать базы данных внутри кластера.

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

Читать далее
Total votes 9: ↑7 and ↓2 +5
Comments 10

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Level of difficulty Medium
Reading time 24 min
Views 5.2K

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее
Total votes 21: ↑21 and ↓0 +21
Comments 5

Как я с 0 поднял свой уровень английского до B2 и подтвердил этот уровень на экзамене IELTS Academic

Level of difficulty Easy
Reading time 10 min
Views 150K

Привет, Хабр!

В этой статье я расскажу о своем опыте изучения английского языка и поделюсь вещами которые работали и не работали для меня. Процесс изучения языка очень индивидуален, и никогда нельзя утверждать что верный какой-то один метод / схема (хотя некоторые статьи на Хабре прямо говорят: вот этот метод правильный, а вот этот нет).

Начнем с бекграунда и причин.

Я – инженер машиностроитель (мой профиль – торцевые уплотнения вращающихся валов). Я начал работать в своей отрасли сразу после бакалавра, параллельно заканчивая магистратуру, и как только я начал работать, я стал стараться впитать как можно больше теоретических знаний по моей специальности из академических источников. Достаточно бысто я понял, что последняя серьезная книга по моей специальности на русском языке была написана в 1978 году. И спустя больше чем 40 лет технологии сильно поменялись, а вот их описание на русском языке отсутствовает. Зато я нашел на reddit людей работающих в штатах в моей же отрасли. Они мне насоветовали кучу классной литературы. Разумееется, она вся на английском, и русского перевода не имеет.

Начал свой путь изучения языка я в январе 2022 года с около нулевого уровня. В всех моих школах преподование английского языка было не на самомом высоком уровне, а в университете было достаточно выучить 30 предложений наизусть чтобы получить достойную оценку на экзамене.

Конечно, перед началом обучения я прочитал много статей на хабре о том как люди учат языки. Некоторые из них поражали скоростью овладения материалом (что-то вроде с нуля до fluent за 4 месяца). Но одна вещь была неизменна – у всех был какой-то план изучения языка.

Читать далее
Total votes 173: ↑169 and ↓4 +165
Comments 220

Многогранный мониторинг Angie, форка веб-сервера nginx

Level of difficulty Medium
Reading time 11 min
Views 6.9K

Здравствуй, дорогой читатель. Меня зовут Дмитрий. Я — системный инженер компании «Веб-сервер». На протяжении моего опыта оказания услуг технической поддержки сначала в компании Nginx, а теперь и в компании разработчика российского веб-сервера Angie, мы отвечаем на очень популярный вопрос: «Как организовать мониторинг состояния веб-сервера?». А вот так.

Читать далее
Total votes 23: ↑23 and ↓0 +23
Comments 8

Как построить локальный self-managed Kubernetes-кластер

Level of difficulty Medium
Reading time 17 min
Views 12K

Возможно, у вас была мысль запустить собственную услугу Infrastructure as a Service (IaaS) либо разместить свои проекты на Kubernetes, но не платить за managed-услуги, или ваш проект — это и есть self-managed Kubernetes. У full-stack-разработчика и предпринимателя Нейта Бакареффа эти желания сошлись воедино.

Он решил научиться развертывать собственный кластер на виртуальных выделенных серверах, о чем и рассказал в своем блоге. Эта статья является переводом его материала.

Читать далее
Total votes 27: ↑24 and ↓3 +21
Comments 8

Стадо русских слонов

Reading time 7 min
Views 14K

Тема импортозамещения всё более и более актуальна и уже даже можно сравнивать некоторые продукты между собой. Сегодня хотелось бы собрать в один строй и взглянуть на имеющиеся решения по СУБД семейства PostgreSQL. Кому интересно узнать про "русские" PostgreSQL - добро пожаловать под кат.

Читать далее..
Total votes 13: ↑12 and ↓1 +11
Comments 17

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficulty Medium
Reading time 15 min
Views 212K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 325: ↑324 and ↓1 +323
Comments 340

Разбираемся что MySQL пишет на диск и зачем [часть 1]

Level of difficulty Hard
Reading time 8 min
Views 16K

Разработчики предъявляют высокие требования к базам данных: максимальная надежность (ничего из того, что было записано не должно быть утеряно ни при каких обстоятельствах), и, одновременно, максимальная производительность при различных видах нагрузки (Запись/Чтение или OLTP/OLAP). Достичь этих требований может быть не просто. Давайте попробуем разобраться, как это делает MySQL.

Размышляя о базе данных, легко представить таблицу базы данных как HashMap/BinaryTree, отображающие первичный ключ (primary key) в структурированные записи с данными. Такое хранилище может работать in memory. Но, как только мы захотим записать данные на диск, придется использовать какие-то алгоритмы во внешней памяти. Просто положить наш HashMap на диск не получится, потому что память и диски слишком разные: чтение/запись диска производится блоками, latency диска больше чем у RAM, а еще нельзя будет воспользоваться обычными указателями и аллокаторами памяти - все это придется заменить самостоятельно.

Читать далее
Total votes 13: ↑13 and ↓0 +13
Comments 7

Разбираемся что MySQL пишет на диск и зачем [часть 2]

Level of difficulty Hard
Reading time 9 min
Views 4.8K

Это вторая часть моих копаний во внутренностях MySQL. В первой части [habr] были затронуты запись страниц данных на диск (с промежуточной записью в DoubleWrite buffer) и запись бинлогов (с батчингом в виде group commit). В этой части я расскажу про redo log и как все части MySQL координируются для достижения надежной работы.

Читать далее
Total votes 13: ↑13 and ↓0 +13
Comments 0

BASHUI

Level of difficulty Medium
Reading time 8 min
Views 21K

BASHUI - это BASH + UI, а не то что вы подумали.

Начиная работать над sshto я решил не переизобретать велосипед, вернее не переизобретать велосипед целиком а только некоторые его части и в качестве "рамы с педалями" использовал dialog. Это значительно ускорило разработку, но идея написать свой UI на баше с блекджеком и всем остальным ни на секунду не покидала мой воспалённый мозг. Звёзды сошлись, и я решил воплотить этот проект в жизнь(в bash). Втречайте BASHUI!

нажми на кнопку
Total votes 86: ↑85 and ↓1 +84
Comments 44

Поднимаем BI Apache Superset в 2023 году — гайд с последними обновлениями

Level of difficulty Easy
Reading time 4 min
Views 5.6K

Поднимаем BI Apache Superset в 2023 году - полный гайд с последними обновлениями и полезными настройками самого BI после установки.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 3

PostgreSQL и временные таблицы

Level of difficulty Medium
Reading time 9 min
Views 27K

Мы много лет уже используем в качестве основной базы данных PostgreSQL. За это время он зарекомендовал себя быстрой и надежной СУБД. Однако, есть в PostgreSQL одна проблема, с которой приходится сталкиваться достаточно часто. К сожалению, реализация логики временных таблиц в нем имеет ряд недостатков, которые отрицательно сказываются на производительности системы.

Одним из свидетельств наличия проблемы является то, что для временных таблиц в Postgres Pro была добавлена специальная функция fasttrun, а в Postgres Pro Enterprise существенно доработана работа с ними (см. пункт 4). 

Наиболее активно временные таблицы используют платформы, в которых разработчик не работает напрямую с базой данных, а таблицы и запросы генерируются непосредственно самой платформой. В частности, к ним относится платформа или ее открытый и бесплатный аналог - платформа lsFusion.

В этой статье я опишу почему приходится использовать временные таблицы, в чем суть проблемы, и как улучшить производительность путем настроек операционной системы и PostgreSQL.

Читать далее
Total votes 51: ↑50 and ↓1 +49
Comments 45

Сколько стоит жизнь в Канаде. Расходы за год

Reading time 10 min
Views 56K

За 2022 год в Торонто мы потратили более 100 тысяч канадских долларов (или более 80 000 USD). Далее все суммы в статье указаны в канадских долларах (CAD), чтобы перевести их в американские - достаточно просто умножить число на 0.8. Курс этих двух валют достаточно стабилен и на протяжении многих лет меняется незначительно в ту или иную сторону.

Читать далее
Total votes 131: ↑128 and ↓3 +125
Comments 790

PostgreSQL: настройка и оптимизация производительности. Часть 1

Level of difficulty Medium
Reading time 9 min
Views 15K

Данная статья посвящена способам повышения производительности PostgreSQL и EDB Postgres Advanced Server (EPAS) с 10 по 13 версии. Мы начнём с аппаратного обеспечения и будем двигаться вверх по стеку, оставив напоследок SQL-запросы. 

Читать далее
Total votes 21: ↑20 and ↓1 +19
Comments 5

PostgreSQL под капотом. Часть 0. Старт программы

Reading time 17 min
Views 13K

Postgres - один из крупнейших open source проектов. Он создавался многие года. Кодовая база накопилась огромная. Мне, как программисту, всегда было интересно как он работает под капотом. Но не про SQL пойдет речь, а про язык на котором он написан. Про C. 

С общей архитектурой можно ознакомиться здесь

Для начала поймем, что происходит до входа в главный цикл сервера.

Читать далее
Total votes 24: ↑24 and ↓0 +24
Comments 2

PostgreSQL. Тестируй то, тестируй это, тестируй не боясь

Reading time 24 min
Views 14K

Как:

1. тестировать на продуктивных данных и не бояться

2. получить 100 копий продуктивной БД и не создавать 100 серверов

3. узнать какой будет план запроса на продуктиве

4. дать каждому разработчику свою БД с данными и не разориться на оплате дисков

Если вам это нужно и у вас PostgreSQL, то эта статья для вас.

Читать далее
Total votes 24: ↑24 and ↓0 +24
Comments 4

Как мы перешли с Elastic на Grafana stack и сократили расходы в несколько раз

Reading time 8 min
Views 28K

Привет! Хочу поделиться историей миграции сервисов логирования и трейсинга с компонентов Elastic Stack на Grafana Stack и тем, что из этого вышло. До миграции у нас в М2 использовались достаточно классические схемы:

Читать далее
Total votes 31: ↑31 and ↓0 +31
Comments 22

Загрузочный образ Acronis + VNC + VPN

Reading time 5 min
Views 7.8K

Мы в компании давно используем готовые образы систем для быстрого разворачивания рабочего места, но появилась проблема как это сделать удаленно. Попытки объяснить человеку на другом конце страны в каком порядке и что делать - утомили. Проще научить загружаться с флешки, а дальше уже самому поставить разворачиваться образ или наоборот сделать его. Для этого пришлось немного дополнить образ стандартного загрузочного диска Acronis Bootable PE добавив VNC и подключение по VPN до нашего шлюза.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 1

Обзор операторов PostgreSQL для Kubernetes. Часть 3: CloudNativePG

Reading time 9 min
Views 7.2K

Статья продолжает наш обзорный цикл о PostgreSQL-операторах для Kubernetes. В первой части мы рассматривали операторы Stolon, Crunchy Data и Zalando. Во второй — KubeDB и StackGres, а также объединили все пять операторов в сравнительную таблицу. В этот раз разбираем решение CloudNativePG, его возможности и особенности, а заодно актуализируем таблицу.

Читать далее
Total votes 32: ↑32 and ↓0 +32
Comments 1

Разбираемся с Redis

Reading time 19 min
Views 214K

Этот материал представляет собой глубокое исследование всего, что связано с Redis. В частности — речь пойдёт о различных способах организации хранилищ Redis, о постоянном хранении данных, о форках процессов.

Читать далее
Total votes 64: ↑63 and ↓1 +62
Comments 7

Information

Rating
2,810-th
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity

Specialization

System Administration, Database Administrator
Lead
From 280,000 ₽
PostgreSQL
Linux
MySQL
Database
Zabbix