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

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

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo
Download Telegram
💻Параллелизм базы данных в PostgreSQL

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

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

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

📎 Подробнее о параллелизме БД можно почитать тут, рекомендую. Вот ещё неплохая статья в тему

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7🔥2👎1
💻Внутренности PostgreSQL: как добавить новую функцию

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

Сразу можно отметить 2 момента. Во-первых, некоторые функции имеет смысл добавлять не в ядро системы, а поместить в отдельное расширение — либо стороннее, либо идущее вместе с PostgreSQL и живущее в каталоге /contrib/. Во-вторых, pg_proc.dat является удобной точкой входа для изучения внутренностей PostgreSQL. Также файл бывает полезен, когда вы примерно понимаете, какую функцию ищите, но не знаете ее название.

📎 Статья

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥2
💻Утилита стратегического мониторинга PostgreSQL

Основная задача стратегического мониторинга — предоставление количественной информации о наиболее ресурсоемких активностях СУБД. Такая информация очень полезна для анализа нагрузки СУБД, например, при проведении нагрузочного тестирования.

Стратегический мониторинг сам по себе никакие проблемы не решает, но может подсказать, на что обратить внимание. Одним из средств стратегического мониторинга является расширение pg_profile/pgpro_pwr — собственно, об этом и идёт речь в видео.
Спикер рассказывает об архитектуре, возможностях, особенностях работы и способах применения этих расширений.

Видео будет интересено всем, кто работает с СУБД Postgres — администраторам баз данных, инженерам нагрузочного тестирования и разработчикам приложений, непосредственно взаимодействующих с базами данных Postgres.
Enjoy)

📎 YouTube
📎 Презентация

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🔥2
💻Открытая книга «PostgreSQL 16 изнутри

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

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

📎 PDF

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥153👍3🥰1
🌟 Lightning Studio: Альтернатива Google Colab от создателей PyTorch Lighting

Lightning Studio представляет собой передовую облачную платформу для проектирования и тестирования моделей машинного обучения, разработанную создателями PyTorch Lightning. Эта платформа обеспечивает пользовательский опыт, сравнимый с "iPhone" в сфере инструментов ML, благодаря своей интуитивной простоте и одновременно впечатляющей мощности. Она объединяет инструменты машинного обучения в единый интерфейс, избавляя от необходимости переключения между разными приложениями. Это значительно упрощает процесс создания масштабируемых приложений и конечных точек AI.

Одна из множества функций Lightning Studio способствует повышению производительности разработки на 60%, так как она позволяет легко переходить с работы на CPU на GPU, сокращая таким образом до 80% времени, обычно тратимого на разработку.

Каждому пользователю Lightning Studio предоставляется 22 бесплатных GPU-часа в месяц на базе T4, с опцией покупки дополнительного времени по мере необходимости. Вы будете платить только за время активного использования GPU. Кроме того, для работы над более требовательными проектами вы можете увеличить свои ресурсы, арендовав до 8 GPU A100.

📎 Lightning Studio

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥5
🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять

Машинное обучение

Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети
Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат

🏆 Golang
Golang собеседование - разбор задач и вопросов с собесов
Golang вакансии -работа для Go разработчика
Golang книги библиотека книг
Golang задачи и тесты
Golang чат
Golang news - новости из мира go
Golang дайджест

💥 Linux /Этичный хакинг
Linux Academy - гайды, секреты и лучшие материалы по Linux
Kali linux - погрузись в мир этичного хакинга и кибербезопасности
linux_kal - kali чат
Информационная безопасность

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

🛢Базы данных
Sql базы данных - научим работе с базами данных профессионально
Библиотека баз данных
SQL чат
Вакансии Sql аналитик данных

#️⃣C#

С# академия - лучший канал по c#
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

🐍 Python

Python/django - самый крупный обучающий канал по Python
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

Java

Java академия - java от Senior разработчика
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend

🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops

🌟 Docker/Kubernets
Docker
Kubernets

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend
5🔥3
💻SQL-запрос для группировки и взятия уникальных значений

▶️Итак, есть табличка:
Number  Item
------------
202 Book
202 Cartoon
202 Book
207 Book
205 Elephant
207 Elephant
208 Book
209 Biggy
209 Smoke
203 Smoke

Нужно сгруппировать по number и вывести уникальные item для него, наподобие:
202 Book Cartoon
207 Book Elephant
205 Elephant
208 Book
209 Biggy Smoke
203 Smoke

Как это можно сделать?


▶️В целом ничего сложного, с этим справится вот такой запрос:
   SELECT Number,
group_concat (DISTINCT Item separator ' ')
FROM TABLE
GROUP BY Number


@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍14👎4🔥4😢1
🔥 Крутой список игр, которые помогут вам изучить программирование без скучных лекций, но с интерактивным подходом:

SQL Murder Mystery — вам предстоит стать шпионом Джаусом и использовать SQL для поиска загадочного убийцы;

CryptoZombies — Игра разделена на уроки, где вы, используя язык программирования Solidity, создадете свою первую веб-игру 3.0, собирая армию зомби;

Playground.tensorflow - браузерная игра, от tensorflow есть в которой можно настраивать и обучать нейросеть

Screeps — игра, которая похожа на Dwarf Fortress, но здесь для управления колонией нужно писать код;

Flexbox Froggy — милая игра про жаб, которая научит вас работе с CSS flexbox. Для полного погружения рекомендуется играть в определенной среде;

Checkio — отличное упражнение для программистов на Python и TypeScript. Сборник интересных интерактивных игр, решение которых требует написания кода.

@DevOPSitsec
👍124🔥4
💻Настройка обслуживания PostgreSQL. Основное и простое

Обслуживание БД — это не единственный вопрос, который следует решать администратору СУБД. И при этом не самый первый, если речь идет о сопровождении сервера.

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

— Настроили под себя оптимальным образом настройки PostgreSQL, например, с помощью сервиса pgtune.

— Решены все инфраструктурные вопросы в части работы сети, железа, дисков и так далее.

— Вы понимаете как работает PostgreSQL в части модификации строк, как работает версионирование, что такое “мертвые” строки и так далее.

Сосредоточимся только на базовых вопросах обслуживания. Итак, поехали!
📎 Статья

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
🖥 Знаете ли вы, что в MySQL есть невидимые столбцы!

Они нужны для обеспечения безопасности ваших данных (скрыть приватные данные, ключи).



CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE);
INSERT INTO t1 (col1, col2) VALUES(1, 2), (3, 4);

SELECT * FROM t1;
+------+
| col1 |
+------+
| 1 |
| 3 |
+------+

SELECT col1, col2 FROM t1;
+------+------+
| col1 | col2 |
+------+------+
| 1 | 2 |
| 3 | 4 |
+------+------+


https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥4👏1
💻Работа с 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