Data Science. SQL hub
36K subscribers
909 photos
48 videos
37 files
967 links
По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo
Download Telegram
💻Работа с json в PostgreSQL

В PostgreSQL есть два типа данных для работы с JSON: json и jsonb. Они отличаются друг от друга способом хранения данных и способом работы с ними.

Тип данных json использует текстовый формат хранения JSON-данных, который позволяет хранить только простые типы данных JSON: строки, числа, логические значения, null и массивы или объекты, состоящие только из этих типов. Это означает, что при хранении данных типа json не происходит никакой оптимизации, и любые изменения в данных приводят к перезаписи всей строки JSON.

Тип данных jsonb использует бинарный формат хранения JSON-данных, который позволяет хранить все типы данных JSON, включая вложенные объекты и массивы, а также дополнительные типы данных, такие как булевы значения, даты и времена и т.д. Бинарный формат данных jsonb позволяет эффективно хранить, индексировать и быстро выполнять запросы к данным в формате JSON, и при изменении данных не требует перезаписи всей строки JSON, а лишь тех частей, которые изменились.

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

Предположим, что мы хотим в select-запросе динамически сгенерировать json-объект. Сделать это можно так:
SELECT jsonb_build_object('name', 'Иван', 'age', 30, 'city', 'Москва') AS person;

Этот запрос создаст JSON-объект со свойствами name, age и city, которые будут содержать соответствующие значения. Результатом запроса будет следующий JSON-объект:
{
"age": 30,
"city": "Москва",
"name": "Иван"
}


📎 Подробнее

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍8🔥2
🖥 Решение задач с помощью SQL является важным навыком для дата-саентиста по нескольким причинам:

1. SQL позволяет эффективно извлекать, фильтровать и обрабатывать данные из баз данных.

2. SQL предоставляет возможность проводить аналитические запросы к данным, выявлять закономерности, тренды и паттерны, что помогает в принятии бизнес-решений.

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

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

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

Предлагаю немного попрактиковаться и порешать задачи на знание SQL.

🖇 Решение заданий из тренажера SQL Academy
🖇 Вводный Курс с задачами по работе с Базами данных
🖇В репозитории представлены проекты курса Аналитик данных
🖇Решение задач hackerrank по SQL
🖇100 ключевых Вопросов с собеседований

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍7🔥4
💻Как в Postgresql реализовать поиск по первым символам каждого слова в строке?

▶️Суть задачи:
На ввод подаются строки. Например: "один". Запрос в базу должен матчить записи типа "три два один", "одиннадцатый", но не должен матчить записи типа "иван родин"

Как реализовать такое в SQL запросе?


▶️Для этого в PostgreSQL можно использовать оператор ~ и соответствующее регулярное выражение с '\m', обозначающим начало слова:
SELECT * 
FROM tbl
WHERE name ~ '\mодин'


@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍253🔥3
💻Как сделать дамп PostgreSQL

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

Уверен, будет полезно)

📎 Статья

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164🔥4
💻 Внутренности PostgreSQL: кэш системного каталога

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

Реализация кэша находится в следующих файлах:
syscache.{c,h} — реализация основных функций кэша. Функции оперируют с Datum’ами и HeapTuple’ами;

catcache.{c,h} — низкоуровневые функции, используемые syscache.c. Выделение и освобождение памяти реализовано здесь;

lsyscache.{c,h} — высокоуровневая обертка над syscache.c. Содержит функции «получить имя отношения по его Oid» и подобного рода;

inval.{c,h} — логика инвалидации кэша. Подробности см ниже по тексту;

sinvaladt.{c,h} — реализация кольцевого буфера в разделяемой памяти, через который рассылаются сообщения об инвалидации кэшей;

sinval.{c,h} — интерфейс коммуникации через sinvaladt.c. Содержит функции вроде «отправить / получить SharedInvalidationMessage»;

📎 Подробнее

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2
💻Работа с PostgreSQL: настройка и масштабирование — открытый учебник

Держите ценный контент — открытый учебник от А. Ю. Васильева aka leopard по Postgres.
Нереально полезно, здесь раскрывается множество важных моментов, связанных с этой СУБД

📎 PDF

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍9🔥6
💻 Шпаргалка по SQL-инъекциям

Эта шпаргалка по SQL-инъекциям содержит примеры синтаксиса, который часто используется для проведения атак на БД. Примеры инъекций приведены для разных СУБД: Oracle, PostgreSQL, MySQL, MicrosoftSQL.
Проверьте, не подвержено ли ваше приложение SQL-инъекциям

🟡Рассматриваются SQL-инъекции для извлечения такой информации как:
├╼ Объединение строк
├╼ Подстрока
├╼ Комментарии
├╼ Версия базы данных
├╼ Содержимое базы данных
├╼ Условные ошибки
├╼ Извлечение данных с помощью сообщений об ошибках
├╼ Пакетные (или штабелированные) запросы
├╼ Временные задержки
├╼ Условные временные задержки
├╼ DNS lookup (Поиск DNS)
╰╼ DNS lookup с эксфильтрацией данных

📎 Шпаргалка

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍134🔥2
💻Руководство по MySQL JOIN с примерами

JOIN в MySQL — это мощный оператор, позволяющий объединять данные из нескольких таблиц на основе соответствия критериям.
Именно об этом и идёт речь в туториале, параллельно разбирается ещё много полезных вещей, рекомендую

Оглавление
Различные типы соединений в MySQL
— INNER JOIN
— LEFT JOIN
— RIGHT JOIN
— FULL JOIN (не поддерживается напрямую MySQL)

Реальные сценарии использования соединений в веб-разработке
— Отображение профилей пользователей с заказами
— Фильтрация товаров по категориям и брендам
— Отображение отзывов с информацией о продукте

Советы по эффективным и оптимизированным соединениям в MySQL

📎 Руководство

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🥰2😢1
💻Диагностика производительности PostgreSQL

В этой статье рассмотрим методы диагностики производительности PostgreSQL, которая состоит из 3 шагов.

🟡Шаг 1: Оптимизировать кластер

Для улучшения работы вашей базы данных используйте следующие методы диагностики производительности PostgreSQL:
— примените вертикальное или горизонтальное масштабирование и затем проведите анализ запросов;
— настройте конфигурационные параметры развернутого кластера. Например, используйте онлайн генераторы конфигурационных параметров.

🟡Шаг 2: Анализ логов

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

Вы можете использовать встроенные инструменты для анализа производительности PostgreSQL, чтобы идентифицировать узкие места и медленные запросы:
pg_stat_statements
pg_stat_kcache
auto_explain
log_min_duration_statement

🟡Шаг 3: Анализ планов

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

План запроса PostgreSQL описывает выполнение SQL-запроса, включая сортировку и фильтрацию, а также использование ресурсов во время выполнения.

📎 Статья

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥2👎1