Александр Межов

+3
с 2024

Заметки про ИТ-архитектуру и разработку. Telegram https://t.me/arch_and_dev Дзен https://dzen.ru/arch_and_dev

3 подписчика
5 подписок
Log-based- и Queue-based-брокеры сообщений
Log-based- и Queue-based-брокеры сообщений
Выбор UUID для первичного ключа таблицы

В базах данных, где в качестве алгоритма хранения первичного ключа используется B-tree, отдается предпочтение целочисленным типам данных. Это связано с рядом причин, включая производительность. Но что, если в качестве ключа нужно использовать UUID/GUID? Насколько сильно это повлияет на производительность? А можно ли сделать так, чтобы это влияние б…

Выбор UUID для первичного ключа таблицы
Структура, высеченная в камне

Сегодня будет небольшой манифест. Часто сталкиваюсь с одним очень интересным фактом. Большинство разработчиков с большей охотой идут на изменения в коде, нежели на изменение в структуре проекта. Даже самые очевидные аргументы в этом вопросе работают плохо.

Структура, высеченная в камне
1
Устранение уязвимостей в коде

Сегодня решил рассказать об одном аспекте в разработке ПО, про который очень часто несправедливо забывают. Это способы изоляции приложения и системы, в которой это приложение исполняется.

Bubblewrap: изоляция приложений

Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что, если нам нужно что-то более легковесное и простое в использо…

Bubblewrap: изоляция приложений
Конкурентный доступ к данным

Конкурентный доступ к данным — это драйвер всего того, что делается во имя изоляции транзакций. Конечно, речь о транзакциях, которые модифицируют данные (read/write, write/write), поскольку именно в этом случае возникают все те аномалии, о которых шла речь ранее.

Проблемы изоляции транзакций

Конкурентный доступ к данным - одна из основных проблем при реализации изоляции транзакций. Способ решения этой проблемы определяет ключевые характеристики базы данных, на которые мы опираемся при выборе подходящего хранилища для своих проектов. И так повелось, что со времен изобретения SQL-стандарта так и не появилось однозначного определения "уро…

1
Calvin Protocol для распределенных транзакций

Многие знают про протокол двухфазной фиксации (2PC), но мало кто слышал про протокол Calvin. Честно говоря, до недавних пор я тоже относился к этому меньшинству, поэтому решил поделиться своей находкой с вами. Однако для начала предлагаю освежить память.

Хочешь рисуй, не хочешь - вызывай REST

Решил завести нерегулярную рубрику "Утилиты", в которой буду делиться своими находками удобных и полезных инструментов. Если сталкивались с чем-то похожим, делитесь своими подборками в комментариях.

Хочешь рисуй, не хочешь - вызывай REST
ACID, AID или AD

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

ACID, AID или AD
1
Что не так с PostgreSQL

Если вы никогда не задумывались о том, что не так с PostgreSQL, скорей всего, у вас всё так и можно спокойно жить дальше. Но это не точно. :-)

Принцип прочности

В продолжении разговора о надежности, прочности и устойчивости. Недавно наткнулся на принцип, о существовании которого не знал, но много раз применял его на практике. Точней сказать, я не знал, что это целый принцип. 😃

Борьба с зомби-процессами

В Linux каждый процесс знает о своих потомках и должен самостоятельно о них заботиться. Например, если код приложения создает дочерний процесс вызовом системной функции fork(), то он должен дождаться его завершения через вызов функции waitpid(). Вполне логично, ведь "родитель" должен заботиться о своих детях. :)