14500
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных Связь: @devmangx РКН: https://clck.ru/3H4Wo3
SQL или NoSQL — редко бывают главной проблемой.
Гораздо чаще настоящая причина низкой производительности — это:
• плохо спроектированная схема базы данных;
• отсутствие необходимых индексов;
• неудачная модель хранения и организации данных.
Именно эти факторы обычно оказывают гораздо большее влияние на производительность и масштабируемость системы, чем выбор между SQL и NoSQL.
👉 @SQLPortal
Универсальный open source-клиент для работы с базами данных
Нашли удобный инструмент для работы с SQL и NoSQL базами данных.
WhoDB — это open source-клиент с современным веб-интерфейсом, который поддерживает PostgreSQL, MySQL, SQLite, MariaDB, ClickHouse, MongoDB, Redis, Elasticsearch и многие другие СУБД.
Что умеет:
• Подключаться к популярным SQL и NoSQL базам данных
• Выполнять SQL-запросы с подсветкой синтаксиса и автодополнением
• Просматривать и редактировать данные в удобной табличной форме
• Визуализировать структуру базы и связи между таблицами (ERD)
• Импортировать и экспортировать данные
• Работать с ИИ: задавать вопросы к данным на естественном языке через OpenAI, Anthropic, Ollama, Gemini и другие совместимые модели
• Запускаться через Docker, как десктопное приложение, CLI или MCP-сервер для интеграции с ИИ-ассистентами
https://github.com/clidey/whodb
👉 @SQLPortal
Не направляйте каждый аналитический запрос или задачу поиска данных для ИИ-агентов напрямую в рабочую базу данных.
Spice — это open-source рантайм на языке Rust для разработчиков, которым нужны SQL-запросы, поиск и LLM-инференс рядом с существующими источниками данных.
Он помогает создавать приложения и ИИ-агентов, работающих с реальными данными, объединяя различные источники и предоставляя SQL, гибридный поиск и OpenAI-совместимые API из единого переносимого рантайма.
Основные возможности:
• Нативный CDC (Change Data Capture) — реплицирует изменения из PostgreSQL, MySQL и MongoDB, создавая готовые для аналитики реплики.
• Федеративные запросы — подключается более чем к 30 источникам данных и поддерживает query push-down для выполнения части запроса непосредственно в источнике данных.
• Гибридный поиск — объединяет векторный и полнотекстовый поиск с поддержкой RRF (Reciprocal Rank Fusion) и SQL-функций для повторного ранжирования результатов.
• Интерфейсы для ИИ — включает OpenAI-совместимые API, MCP-сервер и шлюз, а также поддержку Text-to-SQL.
• Гибкое развёртывание — может работать как один исполняемый файл, контейнер, sidecar или распределённый кластер.
https://github.com/spiceai/spiceai
Проект полностью open-source и распространяется по лицензии Apache 2.0.
👉 @SQLPortal
Полезный совет для PostgreSQL
Знаете ли вы, что автоматизировать задачи в PostgreSQL можно с помощью расширения pg_cron?
Оно позволяет создавать задания по расписанию прямо внутри базы данных — без использования внешнего планировщика.
С помощью pg_cron можно автоматизировать, например:
• запуск VACUUM;
• обновление материализованных представлений (Materialized Views);
• выполнение регулярных SQL-запросов;
• другие задачи обслуживания базы данных.
Чтобы посмотреть список всех запланированных заданий, выполните:
SELECT * FROM cron.job;
pg_cron — удобный инструмент для автоматизации рутинных операций и поддержки PostgreSQL в рабочем состоянии без внешних средств планирования.
Нашли удобный инструмент для миграций баз данных на Go — goose.
Что умеет:
• Управлять миграциями схемы базы данных через SQL-файлы или Go-функции.
• Работать с PostgreSQL, MySQL, MariaDB, SQLite, ClickHouse, SQL Server и другими популярными СУБД.
• Поддерживает откат миграций, применение до нужной версии, проверку статуса, сидирование данных и миграции, встроенные прямо в Go-приложение.
Полезный инструмент для Go-разработчиков, который помогает поддерживать структуру базы данных в актуальном состоянии, автоматизировать развёртывание и интегрировать миграции в CI/CD.
https://github.com/pressly/goose
👉 @SQLPortal
Разобрали, почему PostgreSQL рекомендуют запускать с режимом Strict Memory Overcommit в Linux.
В статье объясняется:
Что такое memory overcommit и почему стандартное поведение Linux может быть опасно для PostgreSQL.
Как OOM Killer способен завершить процесс Postgres при нехватке памяти, оставив сервер без возможности принимать новые подключения.
Почему режим Strict Memory Overcommit помогает избежать подобных ситуаций, заставляя систему заранее отклонять выделение памяти вместо аварийного завершения процессов.
Какие параметры ядра (vm.overcommit_memory, vm.overcommit_ratio) влияют на работу PostgreSQL и как подобрать их для стабильной работы сервера.
Полезный материал для DBA, DevOps и всех, кто администрирует PostgreSQL в Linux и хочет лучше понимать причины OOM-ошибок и настройки памяти.
https://clickhouse.com/blog/strict-memory-overcommit-for-postgres
👉 @SQLPortal
Фатальная ошибка в pandas
Такой код не фильтрует значения NULL или None:
df[df['user_id'] != None]
pandas пропущенные значения представлены как NaN или None, но оператор != работает с ними не так, как многие ожидают.df[df['user_id'].notna()]
df.dropna(subset=['user_id'])
pandas всегда используйте методы isna() и notna(), а не операторы == или !=.
PostgreSQL vs MySQL
Обе СУБД написаны на языке C, но их архитектура устроена по-разному.
PostgreSQL: PostgreSQL использует процессную архитектуру (process-based). Представьте завод, где есть управляющий (Postmaster), который координирует работу отдельных сотрудников. Для каждого нового подключения создаётся собственный процесс, а все процессы используют общую область памяти. Фоновые процессы независимо выполняют запись данных на диск, очистку базы (VACUUM), ведение журналов и другие служебные задачи.
MySQL: MySQL использует потоковую архитектуру (thread-based). Здесь один сервер одновременно обслуживает множество подключений с помощью потоков. Ещё одна особенность — поддержка подключаемых движков хранения (например, InnoDB и MyISAM), которые можно выбирать в зависимости от требований проекта.
А какую СУБД предпочитаете вы — PostgreSQL или MySQL?
👉 @SQLPortal
20 нюансов PostgreSQL, о которых нужно знать
Подробный разбор основных аспектов работы с PostgreSQL — NULL, JSONB, индексация, вывод и многое другое.
👉 @SQLPortal
Сегодня я разбирал реальные бизнес-кейсы на основе финтех-датасета.
Что удалось сделать:
Создал таблицу для проверки крупных транзакций.
Добавил тестовые транзакции вручную.
Автоматически перенёс успешные транзакции свыше ₦100 000 в отдельную таблицу с помощью INSERT INTO ... SELECT.
Но главный урок оказался вовсе не в синтаксисе SQL.
Я столкнулся с классической ошибкой новичков. Исходная таблица использовала стиль именования PascalCase (TransactionAmount), а новую таблицу я создал в snake_case (transaction_amount).
Из-за этого мои запросы постоянно выдавали ошибки.
В итоге я понял важное правило: в операторе SELECT всегда нужно обращаться к именам столбцов именно так, как они называются в исходной таблице, независимо от того, как эти столбцы названы в таблице назначения.
👉 @SQLPortal
Подборка SQL-запросов для быстрой диагностики PostgreSQL, которые помогают обнаружить проблемы ещё до того, как они перерастут в серьёзные сбои.
В статье собраны готовые запросы для поиска «мёртвых» строк, самых затратных SQL-запросов, таблиц с частыми Seq Scan, неиспользуемых индексов, зависших транзакций и блокировок, а также для оценки эффективности кэша PostgreSQL.
Автор не только приводит SQL, но и объясняет, что означают результаты, какие значения считаются тревожными и как исправить найденные проблемы.
👉 @SQLPortal
Объяснение JOIN, которое мы заслужили 😄
👉 @SQLPortal
SQL-совет для начинающих
Не используйте SELECT * в реальных проектах. Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT column1, column2
FROM table
WHERE ...;
Полезное для разработчиков: SQL vs NoSQL простыми словами
Не знаете, какую базу данных выбрать для своего проекта? Эта статья поможет разобраться в ключевых отличиях SQL и NoSQL: модели данных, схемах, масштабировании, производительности, транзакциях и типичных сценариях использования.
Материал сопровождается понятными схемами, примерами запросов и сравнительными таблицами, поэтому отлично подойдет как новичкам, так и разработчикам, которые готовятся к собеседованиям или изучают System Design.
👉 @SQLPortal
Postgres CONCAT_WS удобно собирает строку даже если есть NULL:
SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);John T Smith
John Smith
Apache Cassandra — одна из самых популярных распределённых NoSQL-баз данных, разработанная для хранения огромных объёмов информации с высокой отказоустойчивостью и линейной масштабируемостью.
Проект входит в экосистему Apache Software Foundation и используется в системах, где критически важны доступность и производительность.
Что умеет:
• Линейно масштабируется — новые узлы можно добавлять в кластер без остановки сервиса, увеличивая производительность практически пропорционально количеству серверов.
• Использует masterless-архитектуру — все узлы равноправны, поэтому отсутствует единая точка отказа. Поддерживается репликация между дата-центрами и регионами.
• Работает через CQL (Cassandra Query Language) — язык запросов, синтаксис которого во многом напоминает SQL, что упрощает освоение для разработчиков.
• Поддерживает высокую скорость записи, автоматическое распределение данных, резервное копирование, индексацию, пользовательские типы данных, агрегатные функции и lightweight-транзакции.
Apache Cassandra особенно хорошо подходит для высоконагруженных систем: IoT, банковских сервисов, телеком-платформ, систем мониторинга, рекомендательных сервисов и других приложений, где требуется обрабатывать большие объёмы данных без простоев.
https://github.com/apache/cassandra
👉 @SQLPortal
Нашли лёгкую альтернативу phpMyAdmin для работы с SQL-базами
Adminer — это веб-клиент, состоящий всего из одного PHP-файла.
Что умеет:
• Поддерживает PostgreSQL, MySQL, MariaDB, SQLite, Oracle, MS SQL и другие СУБД.
• Позволяет выполнять SQL-запросы, управлять таблицами, индексами, пользователями, а также импортировать и экспортировать данные.
• Поддерживает плагины, расширяющие возможности и добавляющие поддержку других источников данных.
Удобный инструмент, когда нужен быстрый веб-доступ к базе данных без установки тяжёлых клиентов.
https://github.com/vrana/adminer
👉 @SQLPortal
Оптимизируйте работу с SQL
Улучшаем процесс разработки, добавив две мощные возможности: оператор Flow (->>) и UNION BY NAME.
Оператор Flow позволяет объединять SQL-запросы в цепочки по аналогии с Unix-конвейерами, где результат одного шага автоматически становится входными данными для следующего. Это делает код чище, избавляет от необходимости использовать временные таблицы или RESULT_SCAN() и позволяет строить более гибкие аналитические пайплайны.
UNION BY NAME выводит объединение данных на новый уровень. Вместо сопоставления столбцов по их порядку он автоматически объединяет их по именам. Это значительно упрощает работу с изменяющимися схемами данных, а отсутствующие столбцы автоматически заполняются значением NULL. Больше не нужно вручную переименовывать столбцы перед объединением.
Используя эти возможности вместе, вы сможете создавать более надежные, понятные и удобные в сопровождении SQL-пайплайны.
Подробности и примеры использования по ссылке.
👉 @SQLPortal
Нашли отличный материал о том, какие проблемы может создавать MVCC (Multi-Version Concurrency Control) в PostgreSQL и почему этот механизм не так прост, как кажется.
В статье разбирается, как MVCC позволяет чтению и записи выполняться без взаимных блокировок, но одновременно приводит к появлению «мёртвых» версий строк (dead tuples), росту размера таблиц, дополнительной нагрузке на VACUUM и другим скрытым издержкам. Автор объясняет, почему каждое UPDATE фактически создаёт новую версию строки и как это влияет на производительность базы данных.
Отличный материал для тех, кто хочет глубже понять внутреннее устройство PostgreSQL, разобраться в работе MVCC, механизмах видимости строк, VACUUM, HOT Updates и причинах деградации производительности при больших объёмах обновлений.
https://boringsql.com/posts/mvcc-bad-bad/
👉 @SQLPortal
Большой шаг вперёд для PostgreSQL
Долгое время полнотекстовый поиск считался одной из слабых сторон Postgres. Если требовался качественный поиск с ранжированием по релевантности, обычно приходилось разворачивать Elasticsearch, подключать Algolia или использовать другие внешние сервисы, постоянно синхронизируя данные.
Проблема была не в том, что PostgreSQL не умеет искать по тексту. Умеет. Но встроенная функция ts_rank использует относительно простой алгоритм ранжирования, который уступает современным поисковым движкам.
Из-за этого многие команды были вынуждены:
• Поднимать отдельный кластер Elasticsearch только ради поиска.
• Поддерживать пайплайны синхронизации данных между системами.
• Платить за управляемые поисковые сервисы.
• Мириться с не самым качественным ранжированием результатов.
Теперь появилась альтернатива — pg_textsearch, новое open-source расширение для PostgreSQL от TigerData.
Что оно предлагает:
• Поддержку алгоритма BM25 — того самого, который используется в Elasticsearch, Lucene и большинстве современных поисковых систем.
• Простой SQL-синтаксис для поиска:
ORDER BY content <@> 'search terms'
pgvector, что особенно полезно для RAG-приложений.
• Друзья, пришло время провести очередной конкурс. На этот раз мы разыгрываем бумажную версию книги "The Ultimate Kali Linux Book" - это новое издание книги по изучению Kali Linux, которое перевели на русский язык.
• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.
• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи ❤
Для участия нужно:
1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.
Бот может немного подвиснуть — не переживайте! В таком случае просто нажмите еще раз на кнопку «Участвовать».
#Конкурс
Google выпустила Open Knowledge Format (OKF) — открытый формат для хранения знаний, понятный и людям, и ИИ-агентам.
Что внутри:
Представляет знания в виде обычных Markdown-файлов с YAML-метаданными — без привязки к конкретному фреймворку или поставщику моделей.
Подходит для описания таблиц БД, API, метрик, документации, плейбуков и других артефактов в едином формате.
Все данные можно хранить в Git, версионировать, связывать между собой и использовать как базу знаний для ИИ-агентов или поисковых систем.
Полезный проект для команд, которые строят AI-агентов, работают с корпоративной документацией или хотят превратить внутренние знания компании в структурированную базу, пригодную для автоматической обработки.
👉 @SQLPortal
Нашли мощный AI-клиент для работы с базами данных
Chat2DB набрал почти 27 тысяч звёзд на GitHub
Что умеет:
Генерировать SQL-запросы по описанию на естественном языке — достаточно написать, что нужно получить, и ИИ сам составит запрос, включая сложные JOIN.
Работать сразу с десятками СУБД: MySQL, PostgreSQL, Oracle, SQL Server, SQLite и многими другими.
Анализировать данные и строить графики — можно просто спросить, например, «покажи продажи за прошлый месяц», и инструмент сам подготовит визуализацию.
Полезный инструмент для тех, кто часто работает с SQL и базами данных или хочет ускорить написание запросов с помощью ИИ.
👉 @SQLPortal
Вопрос по SQL:
Что вернёт этот запрос, если значение score равно NULL?
👉 @SQLPortal
SQL-совет: ORDER BY может учитывать регистр
Многие считают, что сортировка текста в SQL всегда происходит просто — от A до Z. Но это не всегда так.
В зависимости от СУБД и настроек сортировки (collation), ORDER BY может учитывать регистр символов.
Например, вместо привычного порядка:
apple
banana
cherry
Apple
Banana
apple
banana
COLLATE NOCASE:SELECT *
FROM users
ORDER BY name COLLATE NOCASE;
ORDER BY выглядят странно, первым делом проверьте настройки collation — именно они часто определяют, как база данных сравнивает и сортирует текст.
Совет по SQL для начинающих
При тестировании запросов всегда используйте LIMIT 10 (или TOP 10 в SQL Server).
Это позволит:
• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.
Например:
PostgreSQL / MySQL
SELECT *
FROM employees
LIMIT 10;
SELECT TOP 10 *
FROM employees;
Учимся читать SQL SELECT
Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные
Подача материала очень наглядная, только самая необходимая практическая информация 📚
👉 @SQLPortal
А кто-о-о это сделал: они полностью переписали PostgreSQL на Rust и он уже проходит 100% официальных тестов PostgreSQL 😔
Важно: это не форк, а полностью новая реализация с нуля на Rust, которая на данный момент:
• Проходит все 46 066 запросов из regression suite PostgreSQL 18.3.
• Совместима на уровне диска (можно запустить её напрямую с вашим текущим каталогом данных).
• Имеет рабочее демо в браузере.
Цель проекта — сделать одну из самых сложных баз данных в мире значительно проще для модификации, расширения и оптимизации изнутри, используя Rust и AI-assisted programming.
И самое безумное: уже существует WIP-версия (пока не опубликована), которая обещает быть на 50% быстрее на транзакционных нагрузках и примерно в 300 раз быстрее на аналитических нагрузках.
https://github.com/malisper/pgrust
👉 @SQLPortal
Не пиши в SQL = NULL или != NULL
Для NULL всегда используй IS NULL / IS NOT NULL
NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.
= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.
👉 @SQLPortal
Интерактивное разъяснение про B-деревья
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове 👍
👉 @SQLPortal