AT extra 👨‍💻 devcode
4 subscribers
601 photos
145 videos
1 file
574 links
Главное не ставить деплой в пятницу 🤣

#трюкдня #мемдня

Мемы тут: @atextra_entertrends
Download Telegram
Forwarded from Senior SQL Developer
Оптимизация SQL-запросов в Oracle (ч.1)

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

2. Минимизация использования ORDER BY
Ключевое слово ORDER BY используется для упорядочивания результирующего набора данных по одному или нескольким столбцам. Однако, использование ORDER BY увеличивает время выполнения запроса, особенно если сортировка выполняется по большому количеству данных. Если сортировка не является необходимой, то лучше избегать использования ORDER BY, либо использовать ее в интерфейсе программы:

- путем экспорта в excel и последующим использованием встроенных фильтров (если дальнейшая работа с данными предстоит именно в этом инструменте);

- путем сортировки BI-инструменте, если скрипт будет использован там.
Forwarded from IT Юмор
Слепили из того, что было
Forwarded from Data Science. SQL hub
✔ Зачем инструмент dbt нужен аналитику данных

dbt — open-source проект, который решает проблему организации данных и открывает много возможностей для их трансформации, обработкии моделирования.

dbt (Data Build Tool) — инструмент, который позволяет дата-инженерам и аналитикам автоматизировать процессы тестирования, внедрения, документирования в рамках трансформации данных. Проще говоря, dbt — это всё о букве T в акрониме ELT (Extract — Transform — Load). Этот фреймворк не выгружает данные из источников, но предоставляет огромные возможности по работе с теми данными, которые уже загружены в Хранилище (в Internal или External Storage).

dbt основан на языках SQL и Jinja, с версии 1.4.* также поддерживает Python.

Основное назначение dbt — взять код, скомпилировать его в SQL, выполнить команды в правильной последовательности в хранилище

Чем полезен фреймворк

▪Контроль качества. Для бизнеса важно получать качественные данные, а для этого, в свою очередь, нужны инструменты контроля качества. dbt как инструмент позволяет реализовать любые вариации тестирования: на этапе обновления каких-либо данных мы всегда можем собрать быструю статистику по любым метрикам.

▪Хранение данных. Даже из «коробки» этот фреймворк позволяет реализовать на уровне хранилища хранение данных с историей СКД-2 (хранения технической истории, изменение атрибутов). С ним можно выстраивать снэпшоты — детальные слои с историей данных. dbt помогает собрать любую историю данных, чтобы отвечать на вопросы аналитиков и бизнеса.

▪Связывание данных в единую цепочку. Инструмент описывает ациклические зависимости (DAG) и связи, что позволяет легко анализировать цепочку преобразований данных. Когда мы используем и переиспользуем данные, выполнение этих задач связано: если что-то где-то меняется, то сказывается на других сущностях. С помощью dbt мы решаем задачу консистентности данных — устраиваем зависимость выполнения, чтобы одна сущность была рассчитана только после другой, без задержек и потери актуальности данных. Фреймворк помогает собрать в одном месте и связать всю логику — от исходных данных до итоговых результатов и их переиспользования.

▪Перенос в другие среды. Фреймворк позволяет легко переносить и настраивать разные подходы к работе моделей в различных средах: тестовые модели, продуктовый уровень, промышленный слой.

▪Настройка дополнительных возможностей. С dbt можно вписать документацию данных и работать с ними, можно настроить логирование стандартными способами и отслеживать аналитику исполнения запросов. Всё это реализуемо, поскольку у фреймворка на основе SQL и Jinja нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.

Установка
Открываем терминал.
Запускаем команды:
pip install dbt-core #Установка
последней версии;
pip install dbt-core==1.4.0
#Установка конкретной версии.
dbt —version #Проверка установленной
версии.


▪Документация
▪Github

@sqlhub
​​🌐 Первый релизный кандидат PostgreSQL 16.

Вчера (31.08.2023) вышел первый релизный кандидат PostgreSQL 16 ! Можно сказать, что это уже полноценная 16я версия PostgreSQL, так как первый релизный кандидат, как правило, почти идентичен финальной версии. Выход финальной версии PostgreSQL 16 намечен на 14 сентября 2023 года.

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

Более подробно о первом релизном кандидате 16й версии PostgreSQL можно почитать на официальном сайте:

https://www.postgresql.org/about/news/postgresql-16-rc1-released-2702/

А между тем, несмотря на скорый выход 16й версии PostgreSQL, разработчики уже трудятся над 17й версией. И уже даже прошел первый коммитфест 17й PostgreSQL.

О подробностях этого комитфеста можно почитать в статье компании Postgres Pro на Хабре:

https://habr.com/ru/companies/postgrespro/articles/757028/

В этой же статье подробно описаны отмененные и вошедшие в 16ю версию PostgreSQL изменения и нововведения.

#pgnews
Forwarded from Senior SQL Developer
Оптимизация SQL-запросов в Oracle (ч.6)

1. Использование материализованных представлений

Материализованные представления (Materialized Views или MV)
– это представления, которые хранятся как физические таблицы и могут автоматически обновляться при изменении данных. Использование индексированных представлений может значительно улучшить производительность запросов, особенно для запросов с большими объемами данных.

Если использование индексированных представлений в вашей БД ограничено, их можно заменить на обычные предрасчетные таблицы, обновление которых настраивается с помощью ETL-инструментов.

2. Минимизация использования множественных вложенных подзапросов

Множественные вложенные подзапросы могут быть плохой практикой из-за следующих причин:

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

- Сложность чтения и понимания: чем больше вложенных подзапросов, тем сложнее становится чтение и понимание запроса. Это может затруднить поддержку и обслуживание кода в будущем.

- Ограниченность возможностей оптимизации: при использовании множественных вложенных подзапросов оптимизатор базы данных может иметь ограниченные возможности для оптимизации запроса и выбора оптимального плана выполнения.

Как вариант, вложенные подзапросы можно легко заменить на CTE.
Forwarded from IT Юмор
​Есть только 3 типа разработчиков:
Forwarded from Хабр
​Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64

В этой статье мы немного проанализируем код Windows XP, a также соберём калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми автор столкнулся в процессе сборки, и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд аппликации calc.exe.
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
даже кот умеет настраивать nginx, чтобы бэкенд не отваливался

@devopsina
Forwarded from Senior SQL Developer
Функция WEEK в MySQL

Функция WEEK используется для извлечения номера недели из даты.

Базовый синтаксис функции выглядит следующим образом:
WEEK( date_value, [ mode ] )

- date_value - значение даты или даты/времени, из которого извлекается неделя.
- mode - Необязательный. Он используется для указания дня недели. Это может быть один из следующих вариантов:

Примечание:
1.
Функция WEEK возвращает значение от 0 до 53 или от 1 до 53 в зависимости от указанного режима.
2. Если вы используете MySQL 4.0.14+, а режим не указан, функция WEEK будет использовать значение в системной переменной default_week_format в качестве режима.
3. Если вы используете версию MySQL, которая старше 4.0.14, а режим не указан, функция WEEK будет использовать 0 в качестве режима.
4. Функция WEEKOFYEAR возвращает то же самое, что и функция WEEK с синтаксисом WEEK (date_value, 3).
AT extra 👨‍💻 devcode pinned «https://habr.com/ru/articles/670062/»
Forwarded from Rozetked (Антон Курилов)
This media is not supported in your browser
VIEW IN TELEGRAM
Революция в мире мемосоздания

Приложение Paint теперь умеет автоматически удалять фон в изображении. Пока фишку могут опробовать участники бета-тестирования Windows 11.

Осталось добавить слои.

rozetked.me/news/30443
Forwarded from Однажды в трендах
Метода join()

При использовании метода join() мы объединяем элементы списка в строку.

В этом примере мы объединяем элементы списка фруктов в строку, разделяя их запятой и пробелом.
Forwarded from Хабр
​Сам написал, сам поиграл: 2D-игра для Android полностью с нуля весом менее 1мб

Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время just for fun. Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать всё сам оказался и автор этой статьи. И в один день ему просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное!

Из этой статьи вы узнаете про написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптацию игры под любые устройства
Forwarded from Senior SQL Developer
Партиционирование в SQL (ч.1)

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

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

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

Варианты партиционирования: горизонтальное и вертикальное

Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное.

Горизонтальное партиционирование - разделение таблицы на партиции по строкам. Это полезно для таблиц с большим объемом данных, так как обработка становится более эффективной.

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

Выбор типа партиционирования зависит от требований базы данных. При правильном применении, партиционирование может значительно улучшить производительность работы с SQL-базами данных.
​​🧾 Работа с JSON в PostgreSQL (часть 1).

В этой заметке начнем разговаривать о знаменитой возможности PostgreSQL работать с форматом данных JSON. Разберемся что такое JSON, чем он удобен и за чем он нужен.

JSON расшифровывается как JavaScript Object Notation. Фактически, это еще один формат представления данных по типу XML. JSON стал популярен, благодаря своей простоте и гибкости. Этот формат легко читается как человеком так и машиной и поддерживается практически всеми языками программирования.

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

Представим пример. У нас есть какой-то объект и мы хотим дать пользователю возможность самостоятельно добавлять атрибуты к этому объекту. Реляционная модель не даст нам хранить кучу атрибутов в одной ячейке таблицы, это противоречит правилам нормализации данных. По этому нам придется что-то выдумывать для решения такой задачи, либо добавлять новую колонку в таблицу при каждом добавлении нового атрибута, либо организовывать данные по модели Entity Attribute Value (о ней мы с вами как-нибудь поговорим в будущих постах). Т.е. фактически, JSON в PostgreSQL нам становится нужен, когда возникает необходимость в работе с неструктурированными данными.

И тут к нам на помощь приходит JSON. Сам формат выглядит очень просто, ниже пример:

{
"id": "1",
"username": "Ilya",
"location": "Moscow"
}

В фигурных скобках у нас находится объект, который представляет собой набор пар ключ-значение. Ключ записывается до знака двоеточия в кавычках, значение - после, все пары разделены между собой запятыми. В рамках одного объекта ключ должен быть уникальным. Значение может быть разными типами данных: цифра, строка, булево, другой объект, ноль или массив. Пары можно записывать и в одну строку, но запись в столбик (как в примере) повышает удобство их чтения.

Массивы в JSON записываются так:

{
"username": "Ilya",
"location": "Moscow",
"posts": [
{
"id":"1",
"title":"Hello"
},
{
"id":"4",
"title":"Enjoy"
}
]
}

Т.е. массив начинается с квадратной скобки и представляет собой упорядоченный набор объектов.

В PostgreSQL есть два варианта работы с JSON. Это собственно сам JSON и JSONB. JSONB считается более продвинутой технологией для работы с форматом JSON в PostgreSQL. О различиях этих двух подходов, а так же о дальнейшей работе с JSON в PostgreSQL мы с вами поговорим в будущих постах.

#pgbase #queries #pgjson