SQL Portal | Базы Данных
14.4K subscribers
614 photos
83 videos
41 files
508 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Клауза ORDER BY в оконных функциях SQL сортирует строки.

Затем функция возвращает накопительный итог в рамках окна

RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW


Это включает все строки, у которых значение сортировки меньше либо равно значению текущей строки.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Апдейт Postgres 18: индексируемые UUID

Postgres 18 сейчас в бете и выйдет в продакшен этой осенью.
В uuid добавили поддержку UUIDv7.

UUID — это случайно сгенерированные строки, которые по определению глобально уникальны.

Почему UUID хороши для первичных ключей

1. Уникальность — можно генерировать ключи в разных местах.
2. Развязка — приложение может создать первичный ключ ещё до того, как отправит данные в БД.
3. Безопасность — если в URL используются ID (.../users/5), атакующий легко подберёт другие (.../users/6, .../users/7) и увидит общее количество пользователей.

С UUID (.../users/f47ac10b-58cc-4372-a567-0e02b2c3d479) такое невозможно.

Что изменилось

- Раньше в Postgres нативно поддерживался UUIDv4, но сортировка и индексация в больших таблицах работала медленно.
- UUIDv7 решает проблему сортировки и индексации.

Он по-прежнему случайный, но первые 48 бит (12 символов) — это таймстамп, остальные биты остаются случайными.

Таймстамп

Таймстамп хранится в hex (по сути сжатое десятичное число).

Пример:

0189d6e4a5d6 (hex) = 2707238289622 (decimal),
что соответствует количеству миллисекунд с 1970 года.

Пример DDL для UUIDv7

CREATE TABLE user_actions (
action_id UUID PRIMARY KEY DEFAULT uuidv7(),
user_id BIGINT NOT NULL,
action_description TEXT,
action_time TIMESTAMPTZ NOT NULL DEFAULT NOW()
);


Если раньше у тебя были проблемы с UUID -сейчас можно уже попробовать бету

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
В SQL можно комбинировать PARTITION BY и ORDER BY в оконных функциях.

Это делит строки на группы по значению PARTITION BY,
а затем считает накопительный итог внутри каждой группы.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
Выучи SQL за 16 страниц этой PDF

(Сохрани, чтобы не потерять)

ссылка — тык

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍144🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как B- и B+-деревья лежат в основе индексов в базах данных (например, InnoDB в MySQL), почему размер и тип первичного ключа (например, BIGINT против UUID) напрямую влияют на глубину дерева, порядок хранения и количество I/O, и как это отражается на скорости поиска и диапазонных запросов

https://planetscale.com/blog/btrees-and-database-indexes

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥1
Тутор по ограничениям в Postgres тык

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

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

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2
Как IT-специалисту зарабатывать больше?
Вторая работа 😄
Реферальная программа 👍

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


Сейчас — лучшее время, ведь действуют специальные условия:
1️⃣ Присоединяетесь к программе до 30 сентября
2️⃣ Приводите первых клиентов
3️⃣ Получаете до 20% от суммы их чеков весь год

Стать партнёром в пару кликов🖱
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
Мы часто обсуждаем с людьми тему «Почему именно Postgres?». Какие фичи делают его сильнее других баз. В этом списке почти всегда фигурирует индексируемый JSONB.

JSONB в Postgres изначально сделан для эффективных запросов и индексации

Вот отличный материал с обзором этих возможностей.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤯1
SQL против Python для работы с данными: must-have для аналитиков и дата-сайентистов, которые прокачивают скиллы

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🤔2🔥1👀1
🖥 Ищем SQL разработчиков. Релокейт, удалёнка, платим много!

Специально для Вас, собираем лучшие вакансии, только с прямыми контактами в Telegram!

🖥 SQL 👣 Go

👩‍💻 C# 👩‍💻 Python

🖼️ PHP 👩‍💻 Node.js

👩‍💻 DevOps 🤖 ML & DS

🔎 QA 👩‍💻 Java

👩‍💻 UX/UI 👩‍💻 Frontend

👩‍💻 Mobile 👩‍💻 Analyst

💼 1C

Подпишись чтобы не упустить свой шанс получить лучший оффер!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Используй правильный тип данных при определении колонок в базе данных. Например:

для чисел — numeric, для дат/времени — date или timestamp

Неправильный выбор типа данных приводит к неявным преобразованиям, что может:

- отключить использование индексов → замедлить SQL
- вызвать ошибки во время выполнения

Выбирай типы внимательно.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥1