Библиотека баз данных
10.4K subscribers
171 photos
1 video
24 files
192 links
Самая большая библиотека бесплатных книг по SQL

По всем вопросам- @haarrp

@ai_machinelearning_big_data - machine learning

@pythonl - Python

@itchannels_telegram - 🔥 best it channels

@ArtificialIntelligencedl - AI

РКН:  № 5037640984
Download Telegram
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
1🐳1
🔥SchemaCrawler — это бесплатный инструмент с открытым исходным кодом для анализа и визуализации структуры баз данных. Он позволяет создавать диаграммы сущностей и связей (ER-диаграммы) на основе метаданных базы данных, используя Graphviz или другие форматы, такие как Mermaid, PlantUML и dbdiagram.io. ​

📌 Основные возможности
SchemaCrawler:
Генерация диаграмм: Создание ER-диаграмм с использованием Graphviz, поддержка форматов PNG, SVG, PDF и HTML с встроенными SVG. ​

Фильтрация объектов: Использование регулярных выражений для фильтрации таблиц, представлений и столбцов, что позволяет сосредоточиться на интересующих элементах схемы. ​
schemacrawler.com

Поддержка различных форматов вывода: Экспорт схемы в текстовом, JSON, YAML и HTML форматах, что удобно для документирования и отслеживания изменений. ​
schemacrawler.com

Интеграция с другими инструментами: Возможность генерации диаграмм в форматах Mermaid, PlantUML и dbdiagram.io для последующего редактирования в сторонних приложениях. ​

Автоматизация и скриптинг: Поддержка скриптов на JavaScript, Python, Groovy и Ruby для автоматизации задач и интеграции в CI/CD процессы. ​

Анализ качества схемы (Lint): Возможность выявления потенциальных проблем в дизайне базы данных, таких как отсутствие первичных ключей или избыточные индексы. ​

Гибкая настройка: Широкие возможности конфигурации через файлы настроек или командную строку, включая отображение/скрытие имен схем, порядковых номеров столбцов, кардинальности связей и т.д. ​

Пример использования:
Чтобы создать диаграмму схемы базы данных в формате PNG, можно использовать следующую команду:​

schemacrawler --server=postgresql --host=localhost --database=mydb --user=postgres --password=secret \
--info-level=standard --command=schema --output-format=png --output-file=diagram.png

Эта команда подключится к базе данных PostgreSQL и создаст ER-диаграмму с основными элементами схемы.​

Установка и запуск:
Установка: Скачайте дистрибутив SchemaCrawler с официального сайта и распакуйте его в удобное место. ​
schemacrawler.com

Предварительные требования: Убедитесь, что установлены Java (версия 8 или выше) и Graphviz (если планируется генерация диаграмм).​

Запуск: Используйте скрипты schemacrawler.sh (для Unix) или schemacrawler.cmd (для Windows) для запуска инструмента.​
schemacrawler.com

https://www.schemacrawler.com/diagramming.html
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
📘 SQL Notes for Professionals — незаменимый справочник для разработчиков

Если ты работаешь с базами данных или только начинаешь изучать SQL, обязательно загляни в книгу *SQL Notes for Professionals*. Она представляет собой тщательно собранный справочник, составленный из лучших материалов Stack Overflow Documentation.

Что внутри?
• Краткие и понятные объяснения по синтаксису SQL
• Примеры запросов и структур данных
• Советы по работе с SELECT, JOIN, GROUP BY, транзакциями и многим другим
• Практическая информация для повседневной работы с реляционными базами данных

Кому подойдёт?
• Новичкам — для быстрого старта
• Опытным разработчикам — как удобный справочник под рукой
• Всем, кто хочет систематизировать знания и избежать типичных ошибок

🔍 Важно знать
Эта книга — неофициальное, бесплатное учебное пособие, созданное на основе открытой документации Stack Overflow. Контент лицензирован по Creative Commons BY-SA. Использование информации осуществляется на свой страх и риск — авторы не гарантируют её абсолютную точность.

📥 *Идеальный материал для тех, кто предпочитает учиться на практических примерах и хочет всегда иметь под рукой концентрированное знание SQL.*

📎 Ссылка на скачивание
3👍2🔥2
🧠 SQL-задача с подвохом: “Найди самого активного… по количеству разных друзей”

📘 Условие

У тебя есть таблица дружбы:


friends(user_id, friend_id)


Здесь каждая строка означает, что user_id дружит с friend_id.
Записи всегда односторонние: если есть (1, 2), это не значит, что будет (2, 1).

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

Пример попытки:


SELECT user_id, COUNT(friend_id) AS total_friends
FROM friends
GROUP BY user_id
ORDER BY total_friends DESC
LIMIT 1;


🔍 Вопрос:

1) В чём здесь может быть логическая ошибка?
2) Какую строку подсчитает COUNT(friend_id)?
3) Когда нужно использовать COUNT(DISTINCT friend_id)?
4) Как обойти случай, если один и тот же друг записан несколько раз?

Разбор подвоха

💣 Проблема: один пользователь может быть записан как друг несколько раз, особенно если приложение допускает дубли (или "перезапросы дружбы").

Пример:


INSERT INTO friends VALUES (1, 2), (1, 2), (1, 3);


В этом случае:


SELECT COUNT(friend_id) FROM friends WHERE user_id = 1;
-- → вернёт 3


Но реальных друзей у пользователя 1 — только 2: 2 и 3.

Решение:

Используй COUNT(DISTINCT friend_id):


SELECT user_id, COUNT(DISTINCT friend_id) AS unique_friends
FROM friends
GROUP BY user_id
ORDER BY unique_friends DESC
LIMIT 1;


🎯 Дополнительно можно убрать самого пользователя из списка друзей (на случай ошибок):


WHERE user_id != friend_id


⚠️ Подвох

COUNT() без DISTINCT ловит даже опытных — особенно если в БД возможны дубли
LIMIT 1 не гарантирует "уникального победителя", если у нескольких одинаковый счёт
• Иногда friendship бывает и симметричной, тогда нужна защита от двойного счёта
🔥6
🖥 Database Design - 2nd Edition
Подробный разбор проектирования баз данных: нормализация, схемы, целостность данных. Больше, чем просто SQL.

🔗 Читать онлайн или скачать (PDF)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
SQL_cheatsheet.pdf
754.9 KB
⚡️ SQL-шпаргалка, которая выручит в интервью, проекте и проде

Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.

Что внутри:
💬 Создание баз, таблиц и изменение схем
💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
💬 VIEW, временные таблицы и работа с дубликатами
💬 Даты, строки, преобразования и агрегации
💬 Очистка данных, разбиение по разделителям
💬 UNION, INTERSECT, EXCEPT — управление сложными выборками

Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE

🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.

Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
👍6🔥63
Forwarded from Python/ django
Руководство_по_ускорению_и_оптимизации_Python_кода.pdf
264.6 KB
🖥 Гайд по ускорению Python, который реально стоит прочитать 🔥

Без лишней теории — только рабочие практики, которые используют разработчики в боевых проектах.

Внутри:
• Как искать bottleneck'и и профилировать код
• Где и когда использовать Numba, Cython, PyPy
• Ускорение Pandas, NumPy, переход на Polars
• Асинхронность, кеши, JIT, сборка, автопрофилировка — всё по полочкам
• Только нужные инструменты: scalene, py-spy, uvloop, Poetry, Nuitka

⚙️ Написано просто, чётко и с прицелом на production.

📌 Полная версия онлайн

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🔢 PGVector: векторный поиск прямо в PostgreSQL — гайд

Если ты работаешь с embedding'ами (OpenAI, HuggingFace, LLMs) и хочешь делать семантический поиск в SQL — тебе нужен pgvector. Это расширение позволяет сохранять и сравнивать векторы прямо внутри PostgreSQL.

📦 Установка PGVector (Linux)


git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install


Или просто:
• macOS: brew install pgvector
• Docker: pgvector/pgvector:pg17
• PostgreSQL 13+ (через APT/YUM)

🔌 Подключение расширения в базе


CREATE EXTENSION vector;


После этого ты можешь использовать новый тип данных vector.

🧱 Пример использования

Создаём таблицу:


CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3)
);


Добавляем данные:


INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');


Поиск ближайшего вектора:


SELECT * FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;


🧠 Операторы сравнения

PGVector поддерживает несколько видов расстояний между векторами:

- <-> — L2 (евклидово расстояние)
- <#> — скалярное произведение
- <=> — косинусное расстояние
- <+> — Manhattan (L1)
- <~> — Хэммингово расстояние (для битовых векторов)
- <%> — Жаккар (для битовых векторов)

Также можно усреднять вектора:


SELECT AVG(embedding) FROM items;


🚀 Индексация для быстрого поиска

HNSW (лучшее качество):


CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);


Параметры можно настраивать:


SET hnsw.ef_search = 40;


#### IVFFlat (быстрее создаётся, но чуть менее точный):


CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
SET ivfflat.probes = 10;


🔍 Проверка версии и обновление


SELECT extversion FROM pg_extension WHERE extname='vector';
ALTER EXTENSION vector UPDATE;


📌 Особенности

- Работает с PostgreSQL 13+
- Поддержка до 2000 измерений
- Расширяемый синтаксис
- Можно использовать DISTINCT, JOIN, GROUP BY, ORDER BY и агрегации
- Подходит для RAG-пайплайнов, NLP и встраивания LLM-поиска в обычные SQL-приложения

🔗 Подробнее

💡 Храни embedding'и прямо в PostgreSQL — и делай семантический поиск без внешних векторных БД.
🔥54👍2
🎯 Хитрая SQL-задача для продвинутых
Тема: переходы состояний пользователей через inactive → banned → active?

У нас есть таблица логов смены статусов пользователей:


CREATE TABLE user_status_log (
user_id INT,
status TEXT, -- 'active', 'inactive', 'banned'
changed_at TIMESTAMP
);


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

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

• стали inactive
• потом были banned
• и либо так и остались забанены, либо позже перешли в active

Важно:
• Статусы могут меняться много раз
• Нас интересует первая последовательность inactive → banned (→ optional `active`)
• Если пользователь не вернулся в `active`, всё равно считаем, что условие выполнено

---

🧠 Решение с оконными функциями:


WITH ranked_status AS (
SELECT
user_id,
status,
changed_at,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY changed_at) AS rn
FROM user_status_log
),
status_with_next AS (
SELECT
user_id,
status,
changed_at,
LEAD(status) OVER (PARTITION BY user_id ORDER BY changed_at) AS next_status,
LEAD(changed_at) OVER (PARTITION BY user_id ORDER BY changed_at) AS next_changed_at
FROM ranked_status
),
transitions AS (
SELECT
user_id,
changed_at AS from_time,
next_changed_at AS to_time,
status AS from_status,
next_status AS to_status
FROM status_with_next
WHERE next_status IS NOT NULL
),
flagged_users AS (
SELECT DISTINCT user_id
FROM (
SELECT
user_id,
MAX(CASE WHEN from_status = 'inactive' AND to_status = 'banned' THEN 1 ELSE 0 END) AS went_inactive_then_banned,
MIN(CASE WHEN from_status = 'banned' AND to_status = 'active' THEN 1 ELSE 0 END) AS banned_then_active
FROM transitions
GROUP BY user_id
) t
WHERE went_inactive_then_banned = 1
)
SELECT *
FROM flagged_users;


🧩 Почему это интересно?

• Используются оконные функции LEAD(), ROW_NUMBER()
• Нужно отслеживать последовательные пары статусов
• Объединяем логику в несколько CTE-слоёв
• Придётся думать не только о текущем статусе, но и о контексте (что было до и что после)

Подобные задачи — хороший способ прокачать мышление о временных событиях в SQL.
5👎2🤔2👍1
🔥 Успех в IT = скорость + знания + окружение

Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
2🥱1🥴1
Чит лист по основам SQL.pdf
247.6 KB
🔥 Русская шпаргалка по SQL — удобно и по делу!

В этом чек-листе собраны самые важные примеры SQL-запросов с понятными пояснениями на русском языке. Всё, что нужно: SELECT, JOIN, фильтрация, сортировка и другие практичные приёмы — в одном месте.

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

Сохрани себе, чтобы не потерять!
10👍2
SQL Window Functions.pdf
129.5 KB
Крутая подборка полезных шпаргалок по SQL

Внутри можно найти:
База по SQL
SQL Joins подробно
Оконные функции
SQL для анализа данных
И др.
👍5
🗃️ Работа с JSON в SQLite через JDBC (на Java)

SQLite поддерживает встроенные JSON-функции, и теперь их можно удобно использовать прямо из Java-приложений с помощью JDBC. BlackSlate выпустили подробный гайд, как это делать эффективно.

📌 Что внутри:
- Подключение к SQLite через JDBC
- Хранение, извлечение и обновление JSON-данных в таблицах
- Использование функций json_extract, json_set, json_insert, json_remove и других
- Примеры SQL-запросов для работы с вложенными JSON-структурами

🔧 Зачем это нужно:
- Хочешь хранить метаинформацию, конфиги или вложенные структуры — JSON в SQLite отличный выбор
- Не нужно ставить отдельную NoSQL-СУБД: всё работает локально
- Идеально подходит для embedded-приложений, десктопных утилит, мобильных приложений

💡 Примеры:
- Вставка JSON:

INSERT INTO configs (id, data) VALUES (1, '{"theme": "dark", "font": {"size": 14}}');


https://www.blackslate.io/articles/explore-sqlite-json-operations-using-jdbc
3👍2
Как настроить реакцию на изменения в таблицах Postgres?

Как передать эти изменения в микросервисы, в Kafka и в другие СУБД, например в Clickhouse?

Расскажем на открытом уроке «Событийная интеграция Postgres» посвященный курсу «PostgreSQL для администраторов баз данных и разработчиков»

Научитесь выбирать правильный способ событийной интеграции

Посмотрите, как и что можно реализовать для надежной передачи данных из Postgres во внешние системы

👉Узнаете про опыт других предприятий и протестируйте обучение на открытом уроке

https://tglink.io/4390305eba19?erid=2W5zFJYeg6C

#реклама
О рекламодателе
3
Сохраняй себе годноту : сотни бесплатных PDF-книг по языкам и технологиям.

Здесь есть буквально всё: гайды по Bash и основам Linux, книги по всем актуальным языкам программирования (включая Python, JS, Swift и другие), материалы по SQL, Docker, алгоритмам и не только. База регулярно обновляется и полностью бесплатна.

🆖 https://goalkicker.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
4👎3🔥3👍2
Forwarded from Machinelearning
Media is too big
VIEW IN TELEGRAM
🌟 Amazon встроила векторную базу данных прямо в хранилище S3.

Amazon анонсировала S3 Vectors - нативную поддержку векторного поиска прямо внутри своего вездесущего объектного хранилища. Заявлено, что это может снизить затраты на хранение и обработку векторов до 90%.

По сути, AWS предлагает не отдельный сервис, а новый тип бакета vector bucket. Внутри него вы создаете векторные индексы, указывая размерность векторов и метрику расстояния (косинусную или евклидову).

🟡Дальше все работает как магия

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

Один бакет может содержать до 10 тысяч индексов, а каждый индекс, в свою очередь, десятки миллионов векторов.

🟡Главная сила этого решения - в экосистеме.

S3 Vectors бесшовно интегрируется с Bedrock Knowledge Bases. Теперь при создании базы знаний для RAG-приложения можно просто указать S3-бакет в качестве векторного хранилища.

Процесс создания RAG-пайплайна для тех, кто уже живет в облаке AWS, упрощается до нескольких кликов. То же самое касается и SageMaker Unified Studio, где эта интеграция тоже доступна из коробки.

🟡"One more thing" анонса - умная интеграция с сервисом OpenSearch.

AWS предлагает гибкую, многоуровневую стратегию. Нечасто используемые или «холодные» векторы можно экономично хранить в S3 Vectors. А когда для части данных потребуется максимальная производительность и низкая задержка в реальном времени, например, для системы рекомендаций, их можно быстро экспортировать в OpenSearch.

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

Пока сервис находится в статусе превью и доступен в регионах US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Frankfurt), and Asia Pacific (Sydney) Regions.

Попробовать S3 Vectors можно в Amazon S3 console.


🟡Статья
🖥Github


@ai_machinelearning_big_data

#AI #ML #RAG #Amazon
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21🥰1
800+ SQL Server Interview Questions and Answers .pdf
1 MB
🖥 Нашли кладезь знаний из 800+ SQL-вопросов с задачами — идеально для подготовки к собеседованиям.

Подойдёт, чтобы:
— прокачать SQL-навыки с нуля до продвинутого уровня
— быстро освежить синтаксис перед интервью
— попрактиковаться на реальных задачах

Полезно как джунам, так и мидлам. Отличный способ проверить себя и закрыть пробелы.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3