Greenplum — это open source MPP СУБД, основанная на PostgreSQL.
Архитектура СУБД укрупненно представляет собой систему, состоящую из n-го количества Segment Host — процессов/серверов, на которых производится хранение и обработка данных, и одного Master Host – процесса/сервера, являющегося точкой входа клиента, который также хранит внутри себя метаданные таблиц и распределяет обработку данных между сегментами.
Вопрос выбора способа хранения данных для меня встал достаточно остро из-за относительно большого объема анализируемых данных. Кратко опишу набор таблиц витрины и примерное количество строк в них на данный момент:
1. Таблица с пользователями маркетплейса (более 4 млн.);
2. Корзина товаров (более 150 млн.);
3. Покупки пользователей в маркетплейсе (более 40 млн.);
4. Таблица с начислениями бонусов за покупки (более 20 млн.)
5. И т.д. (суммарно еще около 5-10 млн. строк уходят на перечень продаваемых товаров, различные справочники и другую сопутствующую информацию)
Аналитические запросы, в особенности с объединением этих таблиц, занимают достаточно большое количество времени и ресурсов, что негативно складывается на работе СУБД, коллег и меня в частности.
В связи с этим, оптимизация хранения таблиц является одним из основных вариантов оптимизации запросов (вкупе с объяснением того, как эти оптимальные запросы строить, но это уже совсем другая история).
Рассмотрим задачу выбора оптимального способа хранения данных подробнее.
Читать
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
В данном примере запрос должен просканировать
8 отдельных файлов, чтобы найти строки, в которых id = 5. Однако при оптимизации Z Order запрос должен просканировать только один файл, чтобы найти нужные строки.• Delta Lake Z Order
• Что такое Delta Lake
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥7👎3❤1
В SQL-джойнах скрыто больше, чем можно подумать. Давайте разберем их.
Будем использовать две простые таблицы: компании companies и их вакансии
jobs.Есть три вымышленные компании —
Hoogle, Emazon и Neta — которые предлагают на удивление мало вакансий:Hoogle интересуется аналитиками данных. Emazon нанимает Go-разработчиков и ML-инженеров. У Neta нет вакансий. А какая-то ноунейм-компания с идентификатором 99 отчаянно разыскивает UI-дизайнера.Время джойнить!
📌 Читать
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4❤3
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— Регулярные выражения в реальных задачах
— О Prepare statements, серверном кэше скомпилированных запросов или как эффективно кэшировать запросы в YDB
— Exploring Database Options for Java Applications
— Fearless Multitenancy
— User-Defined Functions in SQL: Expanding Your Database Toolkit
— SQL Pro tips : AWS Athena SQL UNPIVOT : CROSS JOIN UNNEST
— SQL Pro tips : GCP BigQuery SQL CROSS JOIN with UNPIVOT UNNEST
— Exploring String Field Types in Databases: CHAR, VARCHAR, and TEXT
— PostgreSQL Internals: A Deep Dive into the Inner Workings of a Powerful Relational Database
— SQL - Optimize Your SQL Queries for Performance
— SQL - Use Indexes Wisely for Performance Optimization
— Performing SQL Commands
Посмотреть:
🌐 Разбор задачи с собеседования Data Science. Подготовка на практике (⏱ 26:12)
🌐 Cобеседование #Python топовый банк Goldman Sachs Associate на 12000 $ #задача #программирование (⏱ 01:00)
🌐 Facebook задача с собеседования на #Python на 120000 рублей #программирование #задача #код (⏱ 00:59)
🌐 Разбора задачи с собеседования #Golang (⏱ 00:22)
🌐 Django создание модели. Вывод даных на страницу (⏱ 13:01)
Хорошего дня!
Почитать:
— Регулярные выражения в реальных задачах
— О Prepare statements, серверном кэше скомпилированных запросов или как эффективно кэшировать запросы в YDB
— Exploring Database Options for Java Applications
— Fearless Multitenancy
— User-Defined Functions in SQL: Expanding Your Database Toolkit
— SQL Pro tips : AWS Athena SQL UNPIVOT : CROSS JOIN UNNEST
— SQL Pro tips : GCP BigQuery SQL CROSS JOIN with UNPIVOT UNNEST
— Exploring String Field Types in Databases: CHAR, VARCHAR, and TEXT
— PostgreSQL Internals: A Deep Dive into the Inner Workings of a Powerful Relational Database
— SQL - Optimize Your SQL Queries for Performance
— SQL - Use Indexes Wisely for Performance Optimization
— Performing SQL Commands
Посмотреть:
🌐 Разбор задачи с собеседования Data Science. Подготовка на практике (⏱ 26:12)
🌐 Cобеседование #Python топовый банк Goldman Sachs Associate на 12000 $ #задача #программирование (⏱ 01:00)
🌐 Facebook задача с собеседования на #Python на 120000 рублей #программирование #задача #код (⏱ 00:59)
🌐 Разбора задачи с собеседования #Golang (⏱ 00:22)
🌐 Django создание модели. Вывод даных на страницу (⏱ 13:01)
Хорошего дня!
👍9🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
В Oracle Database используйте:
CREATE TABLE ... ( <col> <datatype> DEFAULT ON NULL <expr> )
Если при
INSERT опустить <col> или поместить в него NULL, то база данных использует вместо него <expr> по умолчанию.#sql #tips #junior
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🥰3❤2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Хотите получить в #SQL строку top-N для каждой группы? Например.
Лучшие результаты/экзамен
Самые высокооплачиваемые сотрудники/отдел
Лучший результат/команда
Пронумеруйте строки для каждой группы в подзапросе с помощью функции
Затем отфильтруйте эти значения во внешнем запросе.
@sqlhub
Лучшие результаты/экзамен
Самые высокооплачиваемые сотрудники/отдел
Лучший результат/команда
Пронумеруйте строки для каждой группы в подзапросе с помощью функции
ROW_NUMBER () OVER (
PARTITION BY <group_cols> ORDER BY <sort_cols>
)
Затем отфильтруйте эти значения во внешнем запросе.
@sqlhub
👍7🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Вы можете объединить строки из двух таблиц в одну с помощью UNION и UNION ALL
В чем разница?
#SQL
@sqlhub
В чем разница?
UNION дедублирует данные, поэтому на выходе получается одна строка для каждого набора значенийUNION ALL сохраняет все строки из каждой таблицы.#SQL
@sqlhub
👍16🔥3❤2👎1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
С помощью
SELECT ... FOR UPDATEЕсли другая транзакция заблокировала какую-либо из этих строк, то она блокируется.
Чтобы заблокировать следующие строки таблицы, игнорируя заблокированные данные, используйте
SELECT ... FOR UPDATE SKIP LOCKEDЭто позволит обойти все строки, заблокированные другой транзакцией.
#SQL
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥1😁1
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— Отправка и обработка HTTP запросов в PostgreSQL
— Airflow vs NiFi: исследуем оркестратор для формирования витрин данных
— Повышение эффективности SQL-запросов: советы и рекомендации
— Top 10 Tools For SQL Writing For Students
— How Randomized SQL Testing Can Help Detect Bugs?
— SQL Joins Infographic
— ACID and Transactions in SQL
— SQL - Stored Procedures for Reusable and Secure SQL Code
— SQLite Create Table If Not Exists: Conditional Table Creation
— Text2SQL: Converting Natural Language to SQL
— CRUD Operations in SQL
— Should you use an enum column or a table to store allowed values in SQL?
— 7 Tips to Optimise Postgres query performance
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
Хорошего дня!
@sqlhub
Почитать:
— Отправка и обработка HTTP запросов в PostgreSQL
— Airflow vs NiFi: исследуем оркестратор для формирования витрин данных
— Повышение эффективности SQL-запросов: советы и рекомендации
— Top 10 Tools For SQL Writing For Students
— How Randomized SQL Testing Can Help Detect Bugs?
— SQL Joins Infographic
— ACID and Transactions in SQL
— SQL - Stored Procedures for Reusable and Secure SQL Code
— SQLite Create Table If Not Exists: Conditional Table Creation
— Text2SQL: Converting Natural Language to SQL
— CRUD Operations in SQL
— Should you use an enum column or a table to store allowed values in SQL?
— 7 Tips to Optimise Postgres query performance
Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
Хорошего дня!
@sqlhub
👍9❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Он переводит естественный язык в SQL запросы и выполняет их в базе данных.
На данный момент поддерживаются
MySQL, PostgreSQL и SQLite. Пример:
ormgpt.query("give me post with id 1, all comments for this post and user information about author");Сгенерированный запрос:
SELECT
p.id AS post_id,
p.title,
p.body,
c.id AS comment_id,
c.body AS comment_body,
u.username AS author_username,
u.email AS author_email
FROM
posts p
JOIN comments c ON p.id = c.post_id
JOIN users u ON u.id = p.user_id
WHERE
p.id = 1;
Вывод:
[
{
post_id: 1,
title: 'Hello world!',
body: 'This is my first post!',
comment_id: 1,
comment_body: 'Hello world!',
author_username: 'test',
author_email: '[email protected]'
}
]• Github
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤4😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
PostgreSQL - это база данных с открытым исходным кодом, обладающая широкими возможностями настройки.
Если вы хотите узнать, подходит ли она для ваших проектов, этот курс для начинающих поможет вам.
Вы узнаете об операторе
SELECT, предложениях WHERE, агрегатных функциях и многом другом.📌 Курс
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4❤2
Выбор подходящей базы данных для своего проекта - сложная задача. Существует множество видов баз данных, каждая из которых подходит для разных случаев использования.
Данная шпаргалка поможет определить, какой сервис соответствует потребностям вашего проекта, и избежать возможных "
подводных камней".@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Он предназначен для использования в тестировании и поддерживает работу с такими базами данных, как sqlite, mysql, postgresql, mongodb, redis и couchdb.
pip install fake2db📌 GitHub
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤3🔥3
🔥 Дайджест полезных материалов из мира SQL за неделю
Почитать:
— Построение OLAP-запросов с использованием аналитических функций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Агент пожизненного обучения, который играет в Minecraft и непрерывно совершенствуется.
— How to Connect Java Applications to Databases with JDBC
— Entendendo o WHERE e o ORDER BY
— Exploring Ways of Performance Tuning Your Postgresql Database
— Implementing distributed Flink SQL gateway based on Kyuubi
— What do front-end developers think of no-code DataViz tools?
— Incubate Your SQL Optimizer Using Egg
— Schemas em SQL: Indexes e B+ trees
— Sql Service Broker
— Deleting a Column in SQL: Everything You Need to Know
— The RETURNING clause in SQL
Посмотреть:
🌐 Пишем телеграм бота для скачивания #yotube видео (⏱ 20:41)
🌐 Алгоритм бинарного поиска на #C++ (⏱ 00:59)
🌐 Очередь с приоритетом разбор задачи на #C++ (⏱ 01:00)
🌐 Задача на поиск числа с leetcode на С++ (⏱ 01:00)
🌐 Задача с #leetcode решаем на #golang (⏱ 00:32)
🌐 Разбор задачи на содержание массива #С++ (⏱ 00:59)
🌐 Django гайд по формам (⏱ 10:32)
🌐 New Azure SQL Database free offer | Data Exposed
Хорошего дня!
@sqlhub
Почитать:
— Построение OLAP-запросов с использованием аналитических функций
— 7 концепций SQL, которые необходимо знать для работы с данными
— Агент пожизненного обучения, который играет в Minecraft и непрерывно совершенствуется.
— How to Connect Java Applications to Databases with JDBC
— Entendendo o WHERE e o ORDER BY
— Exploring Ways of Performance Tuning Your Postgresql Database
— Implementing distributed Flink SQL gateway based on Kyuubi
— What do front-end developers think of no-code DataViz tools?
— Incubate Your SQL Optimizer Using Egg
— Schemas em SQL: Indexes e B+ trees
— Sql Service Broker
— Deleting a Column in SQL: Everything You Need to Know
— The RETURNING clause in SQL
Посмотреть:
🌐 Пишем телеграм бота для скачивания #yotube видео (⏱ 20:41)
🌐 Алгоритм бинарного поиска на #C++ (⏱ 00:59)
🌐 Очередь с приоритетом разбор задачи на #C++ (⏱ 01:00)
🌐 Задача на поиск числа с leetcode на С++ (⏱ 01:00)
🌐 Задача с #leetcode решаем на #golang (⏱ 00:32)
🌐 Разбор задачи на содержание массива #С++ (⏱ 00:59)
🌐 Django гайд по формам (⏱ 10:32)
🌐 New Azure SQL Database free offer | Data Exposed
Хорошего дня!
@sqlhub
👍12🔥2❤1