Реализовать решение могут многие, но владеет решением только тот, кто владеет знаниями. Владеть знаниями может только тот, кто умеет сохранять знания, поддерживать их актуальность и полноту, делать их читабельными и непротиворечивыми, связанными, структурированными и переиспользуемыми. Последний критерий, пожалуй, является самым веским…
Знакомясь с продуктом Apache Kafka, вы можете наткнуться такое утверждение – в Kafka соблюдается принцип «тупой брокер – умный потребитель» (для RabbitMQ, стало быть, наоборот). Но в этой статье речь пойдет не о брокере, а о потребителе. Дело в том, что потребитель умный только до пояса, не выше. Чтобы реализовать семантику Exactly-Once (строго…
Довольно часто, при реализации API или бизнес-операции требуется отчитаться о запуске или выполненной работе, например – отправить сообщение в брокер с последующим приземлением в хранилище логов. И вот тут, в силу отсутствия компетентности, сроков или нацеленности на MVP-дизайн, очень часто программисты реализуют дешевый антипаттерн – отправление…
Хотите ускорить загрузку страницы сайта на несколько порядков или поднять скорость ответа сервиса – не вопрос, добавьте к вашей модели данных несколько видов комплексных объектов, денормализованных по восходящему принципу. Идея в некоторой степени перекликается с CQRS, но в ней нет категоричности, нет проблем с рассинхронизацией моделей,…
В этой статье маленькая памятка как сделать короткий (частичный) динамический (покрывающий плавающее/скользящее окно данных) индекс для большой таблицы. Использование короткого индекса может ускорить запросы. Индекс создается параллельно основному. Коротким он называется потому, что в него попадает ограниченный набор данных (в примере ниже это…
Если нужно сделать быструю вставку, чтобы не держать транзакцию, то можно использовать промежуточную табличку или PgQ. Далее job (pgpro_scheduler) или сторонний worker может спокойно перекладывать данные (или оправлять куда-то, например в брокер сообщений) уже в другой транзакции.
Это статья - памятка, в ней описывается паттерн приземления потока сырых данных (логов Nginx) из Kafka в ClickHouse. Так как логи бывают разного формата, то уместно ожидать, что местами решение будет носить частный характер.
В документе изложены рекомендации по проектированию UI и ретроспективной модели данных, которая будет достаточна и полноценна для построения ретроспективных отчетов. Ретроспективная модель поддерживает версионность записей, что позволяет обратиться к любому историческому моменту и воспроизвести актуальное состояние данных на этот период.
В этой статье предлагается способ, как описать душу программного кода, его альфу и омегу, и сделать его бессмертным. Бессмертным он станет потому, что код, а также мысли и мотивы создателя, смогут понять и принять другие – идущие следом. Рекомендуется для сложных решений и больших блоков.
Заявленная тема не новая, но часто актуальная, поэтому прошу рассматривать статью исключительно как памятку для тех, кто работает с совсем бесплатными СУБД. В этой статье описывается схема, как организовать простое решение, чтобы процесс передачи данных между системами не приводил к рассогласованности этих же данных в системе-потребителе или их…