sqlportal | Unsorted

Telegram-канал sqlportal - SQL Portal | Базы Данных

14500

Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных Связь: @devmangx РКН: https://clck.ru/3H4Wo3

Subscribe to a channel

SQL Portal | Базы Данных

SQL или NoSQL — редко бывают главной проблемой.

Гораздо чаще настоящая причина низкой производительности — это:

• плохо спроектированная схема базы данных;
• отсутствие необходимых индексов;
• неудачная модель хранения и организации данных.

Именно эти факторы обычно оказывают гораздо большее влияние на производительность и масштабируемость системы, чем выбор между SQL и NoSQL.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Универсальный 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

Читать полностью…

SQL Portal | Базы Данных

Не направляйте каждый аналитический запрос или задачу поиска данных для ИИ-агентов напрямую в рабочую базу данных.

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

Читать полностью…

SQL Portal | Базы Данных

Полезный совет для PostgreSQL

Знаете ли вы, что автоматизировать задачи в PostgreSQL можно с помощью расширения pg_cron?

Оно позволяет создавать задания по расписанию прямо внутри базы данных — без использования внешнего планировщика.

С помощью pg_cron можно автоматизировать, например:

• запуск VACUUM;
• обновление материализованных представлений (Materialized Views);
• выполнение регулярных SQL-запросов;
• другие задачи обслуживания базы данных.

Чтобы посмотреть список всех запланированных заданий, выполните:

SELECT * FROM cron.job;


pg_cron
— удобный инструмент для автоматизации рутинных операций и поддержки PostgreSQL в рабочем состоянии без внешних средств планирования.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Нашли удобный инструмент для миграций баз данных на Go — goose.

Что умеет:

• Управлять миграциями схемы базы данных через SQL-файлы или Go-функции.
• Работать с PostgreSQL, MySQL, MariaDB, SQLite, ClickHouse, SQL Server и другими популярными СУБД.
• Поддерживает откат миграций, применение до нужной версии, проверку статуса, сидирование данных и миграции, встроенные прямо в Go-приложение.

Полезный инструмент для Go-разработчиков, который помогает поддерживать структуру базы данных в актуальном состоянии, автоматизировать развёртывание и интегрировать миграции в CI/CD.

https://github.com/pressly/goose

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Разобрали, почему 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

Читать полностью…

SQL Portal | Базы Данных

Фатальная ошибка в pandas

Такой код не фильтрует значения NULL или None:

df[df['user_id'] != None]


В pandas пропущенные значения представлены как NaN или None, но оператор != работает с ними не так, как многие ожидают.

Поэтому такой фильтр не удаляет все пропущенные значения.

Вместо этого используйте:
df[df['user_id'].notna()]


или
df.dropna(subset=['user_id'])


Для проверки пропущенных значений в pandas всегда используйте методы isna() и notna(), а не операторы == или !=.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

PostgreSQL vs MySQL

Обе СУБД написаны на языке C, но их архитектура устроена по-разному.

PostgreSQL: PostgreSQL использует процессную архитектуру (process-based). Представьте завод, где есть управляющий (Postmaster), который координирует работу отдельных сотрудников. Для каждого нового подключения создаётся собственный процесс, а все процессы используют общую область памяти. Фоновые процессы независимо выполняют запись данных на диск, очистку базы (VACUUM), ведение журналов и другие служебные задачи.

MySQL: MySQL использует потоковую архитектуру (thread-based). Здесь один сервер одновременно обслуживает множество подключений с помощью потоков. Ещё одна особенность — поддержка подключаемых движков хранения (например, InnoDB и MyISAM), которые можно выбирать в зависимости от требований проекта.

А какую СУБД предпочитаете вы — PostgreSQL или MySQL?

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

20 нюансов PostgreSQL, о которых нужно знать

Подробный разбор основных аспектов работы с PostgreSQL — NULL, JSONB, индексация, вывод и многое другое.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Сегодня я разбирал реальные бизнес-кейсы на основе финтех-датасета.

Что удалось сделать:

Создал таблицу для проверки крупных транзакций.

Добавил тестовые транзакции вручную.
Автоматически перенёс успешные транзакции свыше ₦100 000 в отдельную таблицу с помощью INSERT INTO ... SELECT.

Но главный урок оказался вовсе не в синтаксисе SQL.

Я столкнулся с классической ошибкой новичков. Исходная таблица использовала стиль именования PascalCase (TransactionAmount), а новую таблицу я создал в snake_case (transaction_amount).

Из-за этого мои запросы постоянно выдавали ошибки.

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Подборка SQL-запросов для быстрой диагностики PostgreSQL, которые помогают обнаружить проблемы ещё до того, как они перерастут в серьёзные сбои.

В статье собраны готовые запросы для поиска «мёртвых» строк, самых затратных SQL-запросов, таблиц с частыми Seq Scan, неиспользуемых индексов, зависших транзакций и блокировок, а также для оценки эффективности кэша PostgreSQL.

Автор не только приводит SQL, но и объясняет, что означают результаты, какие значения считаются тревожными и как исправить найденные проблемы.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Объяснение JOIN, которое мы заслужили 😄

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

SQL-совет для начинающих

Не используйте SELECT * в реальных проектах. Вместо этого явно указывайте только те столбцы, которые действительно нужны:

SELECT column1, column2
FROM table
WHERE ...;


Такой подход:

• экономит время выполнения запроса;
• уменьшает объём передаваемых данных;
• делает ваш код более читаемым и понятным.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Полезное для разработчиков: SQL vs NoSQL простыми словами

Не знаете, какую базу данных выбрать для своего проекта? Эта статья поможет разобраться в ключевых отличиях SQL и NoSQL: модели данных, схемах, масштабировании, производительности, транзакциях и типичных сценариях использования.

Материал сопровождается понятными схемами, примерами запросов и сравнительными таблицами, поэтому отлично подойдет как новичкам, так и разработчикам, которые готовятся к собеседованиям или изучают System Design.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Postgres CONCAT_WS удобно собирает строку даже если есть NULL:

SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);


Если middle_initial = 'T', то результат будет:

John T Smith


Если middle_initial = NULL, то получится:

John Smith


Пробел вставляется только между существующими значениями, так что итоговая строка выглядит нормально без лишних пробелов.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Apache Cassandra — одна из самых популярных распределённых NoSQL-баз данных, разработанная для хранения огромных объёмов информации с высокой отказоустойчивостью и линейной масштабируемостью.

Проект входит в экосистему Apache Software Foundation и используется в системах, где критически важны доступность и производительность.

Что умеет:

• Линейно масштабируется — новые узлы можно добавлять в кластер без остановки сервиса, увеличивая производительность практически пропорционально количеству серверов.
• Использует masterless-архитектуру — все узлы равноправны, поэтому отсутствует единая точка отказа. Поддерживается репликация между дата-центрами и регионами.
• Работает через CQL (Cassandra Query Language) — язык запросов, синтаксис которого во многом напоминает SQL, что упрощает освоение для разработчиков.
• Поддерживает высокую скорость записи, автоматическое распределение данных, резервное копирование, индексацию, пользовательские типы данных, агрегатные функции и lightweight-транзакции.

Apache Cassandra особенно хорошо подходит для высоконагруженных систем: IoT, банковских сервисов, телеком-платформ, систем мониторинга, рекомендательных сервисов и других приложений, где требуется обрабатывать большие объёмы данных без простоев.

https://github.com/apache/cassandra

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Нашли лёгкую альтернативу phpMyAdmin для работы с SQL-базами

Adminer — это веб-клиент, состоящий всего из одного PHP-файла.

Что умеет:

• Поддерживает PostgreSQL, MySQL, MariaDB, SQLite, Oracle, MS SQL и другие СУБД.
• Позволяет выполнять SQL-запросы, управлять таблицами, индексами, пользователями, а также импортировать и экспортировать данные.
• Поддерживает плагины, расширяющие возможности и добавляющие поддержку других источников данных.

Удобный инструмент, когда нужен быстрый веб-доступ к базе данных без установки тяжёлых клиентов.

https://github.com/vrana/adminer

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Оптимизируйте работу с SQL

Улучшаем процесс разработки, добавив две мощные возможности: оператор Flow (->>) и UNION BY NAME.

Оператор Flow позволяет объединять SQL-запросы в цепочки по аналогии с Unix-конвейерами, где результат одного шага автоматически становится входными данными для следующего. Это делает код чище, избавляет от необходимости использовать временные таблицы или RESULT_SCAN() и позволяет строить более гибкие аналитические пайплайны.

UNION BY NAME выводит объединение данных на новый уровень. Вместо сопоставления столбцов по их порядку он автоматически объединяет их по именам. Это значительно упрощает работу с изменяющимися схемами данных, а отсутствующие столбцы автоматически заполняются значением NULL. Больше не нужно вручную переименовывать столбцы перед объединением.

Используя эти возможности вместе, вы сможете создавать более надежные, понятные и удобные в сопровождении SQL-пайплайны.

Подробности и примеры использования по ссылке.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Нашли отличный материал о том, какие проблемы может создавать MVCC (Multi-Version Concurrency Control) в PostgreSQL и почему этот механизм не так прост, как кажется.

В статье разбирается, как MVCC позволяет чтению и записи выполняться без взаимных блокировок, но одновременно приводит к появлению «мёртвых» версий строк (dead tuples), росту размера таблиц, дополнительной нагрузке на VACUUM и другим скрытым издержкам. Автор объясняет, почему каждое UPDATE фактически создаёт новую версию строки и как это влияет на производительность базы данных.

Отличный материал для тех, кто хочет глубже понять внутреннее устройство PostgreSQL, разобраться в работе MVCC, механизмах видимости строк, VACUUM, HOT Updates и причинах деградации производительности при больших объёмах обновлений.

https://boringsql.com/posts/mvcc-bad-bad/

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Большой шаг вперёд для PostgreSQL

Долгое время полнотекстовый поиск считался одной из слабых сторон Postgres. Если требовался качественный поиск с ранжированием по релевантности, обычно приходилось разворачивать Elasticsearch, подключать Algolia или использовать другие внешние сервисы, постоянно синхронизируя данные.

Проблема была не в том, что PostgreSQL не умеет искать по тексту. Умеет. Но встроенная функция ts_rank использует относительно простой алгоритм ранжирования, который уступает современным поисковым движкам.

Из-за этого многие команды были вынуждены:

• Поднимать отдельный кластер Elasticsearch только ради поиска.
• Поддерживать пайплайны синхронизации данных между системами.
• Платить за управляемые поисковые сервисы.
• Мириться с не самым качественным ранжированием результатов.

Теперь появилась альтернатива — pg_textsearch, новое open-source расширение для PostgreSQL от TigerData.

Что оно предлагает:

• Поддержку алгоритма BM25 — того самого, который используется в Elasticsearch, Lucene и большинстве современных поисковых систем.
• Простой SQL-синтаксис для поиска:

ORDER BY content <@> 'search terms'

• Совместимость с конфигурациями полнотекстового поиска PostgreSQL для разных языков.
• Возможность объединить поиск по ключевым словам и векторный поиск через pgvector, что особенно полезно для RAG-приложений.

Расширение распространяется с открытым исходным кодом по лицензии PostgreSQL и позволяет реализовать современный поиск прямо внутри Postgres, без необходимости использовать отдельную поисковую инфраструктуру.

https://github.com/timescale/pg_textsearch

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

• Друзья, пришло время провести очередной конкурс. На этот раз мы разыгрываем бумажную версию книги "The Ultimate Kali Linux Book" - это новое издание книги по изучению Kali Linux, которое перевели на русский язык.

• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.

• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи ❤

Для участия нужно:

1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.

Бот может немного подвиснуть — не переживайте! В таком случае просто нажмите еще раз на кнопку «Участвовать».

#Конкурс

Читать полностью…

SQL Portal | Базы Данных

Google выпустила Open Knowledge Format (OKF) — открытый формат для хранения знаний, понятный и людям, и ИИ-агентам.

Что внутри:

Представляет знания в виде обычных Markdown-файлов с YAML-метаданными — без привязки к конкретному фреймворку или поставщику моделей.

Подходит для описания таблиц БД, API, метрик, документации, плейбуков и других артефактов в едином формате.

Все данные можно хранить в Git, версионировать, связывать между собой и использовать как базу знаний для ИИ-агентов или поисковых систем.

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Нашли мощный AI-клиент для работы с базами данных

Chat2DB набрал почти 27 тысяч звёзд на GitHub

Что умеет:

Генерировать SQL-запросы по описанию на естественном языке — достаточно написать, что нужно получить, и ИИ сам составит запрос, включая сложные JOIN.

Работать сразу с десятками СУБД: MySQL, PostgreSQL, Oracle, SQL Server, SQLite и многими другими.

Анализировать данные и строить графики — можно просто спросить, например, «покажи продажи за прошлый месяц», и инструмент сам подготовит визуализацию.

Полезный инструмент для тех, кто часто работает с SQL и базами данных или хочет ускорить написание запросов с помощью ИИ.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Вопрос по SQL:

Что вернёт этот запрос, если значение score равно NULL?

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

SQL-совет: ORDER BY может учитывать регистр

Многие считают, что сортировка текста в SQL всегда происходит просто — от A до Z. Но это не всегда так.

В зависимости от СУБД и настроек сортировки (collation), ORDER BY может учитывать регистр символов.

Например, вместо привычного порядка:

apple
banana
cherry

вы можете получить:
Apple
Banana
apple
banana


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

Как отключить чувствительность к регистру? В SQLite для этого можно использовать COLLATE NOCASE:

SELECT *
FROM users
ORDER BY name COLLATE NOCASE;


Так SQL будет сортировать значения без учёта регистра, не изменяя сами данные.

Если результаты ORDER BY выглядят странно, первым делом проверьте настройки collation — именно они часто определяют, как база данных сравнивает и сортирует текст.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Совет по SQL для начинающих

При тестировании запросов всегда используйте LIMIT 10 (или TOP 10 в SQL Server).

Это позволит:

• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.

Например:

PostgreSQL / MySQL

SELECT *
FROM employees
LIMIT 10;


SQL Server

SELECT TOP 10 *
FROM employees;


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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Учимся читать SQL SELECT

Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные

Подача материала очень наглядная, только самая необходимая практическая информация 📚

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

А кто-о-о это сделал: они полностью переписали 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 Portal | Базы Данных

Не пиши в SQL = NULL или != NULL

Для NULL всегда используй IS NULL / IS NOT NULL

NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.

= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Интерактивное разъяснение про B-деревья

Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД

Один из лучших способов наконец-то сложить картинку в голове 👍

👉 @SQLPortal

Читать полностью…
Subscribe to a channel