Базы данных (Data Base). По всем вопросам @evgenycarter
Миграции баз данных
Можно использовать CLI и Golang библиотеки
Поддерживаемые СУБД:
PostgreSQL
PGX v4
PGX v5
Redshift
Ql
Cassandra
SQLite
SQLite3
SQLCipher
MySQL/ MariaDB
Neo4j
MongoDB
CrateDB
Shell
Google Cloud Spanner
CockroachDB
YugabyteDB
ClickHouse
Firebird
MS SQL Server
https://github.com/golang-migrate/migrate
#db
👉 @database_info
Открытый практикум Linux by Rebrain: DNS — записи и утилиты
Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!
👉Регистрация
Время проведения:
27 Марта (Среда) в 19:00 по МСК
Программа практикума:
🔹Различные типы записей и их возможности (SRV, «ALIAS»...)
🔹Цифровые подписи с DNSSEC
🔹Репликация записей
🔹Полезные утилиты и способы отладки
Кто ведёт?
Даниил Батурин – Основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2VtzqvQaJLg
ACID на примере PostgreSQL
В этом видео мы рассмотрим свойства транзакций ACID на примере PostgreSQL
https://imvanich.notion.site/7cee1b18bf6446818d2cd8dd22493269
источник
#db
👉 @database_info
Почему PostgreSQL признан самым лбимой бд по результатам опроса разработчиков Stackoverflow?
На диаграмме показано множество вариантов использования PostgreSQL - одной базы данных, которая включает в себя почти все функции необходимых разработчикам.
🔹OLTP (Online Transaction Processing)
Мы можем использовать PostgreSQL для CRUD-операций (Create-Read-Update-Delete).
🔹OLAP (Online Analytical Processing)
Мы можем использовать PostgreSQL для аналитической обработки. PostgreSQL основан на архитектуре 𝐇𝐓𝐀𝐏 (Hybrid transactional/analytical processing), поэтому он может хорошо работать как с OLTP, так и с OLAP.
🔹FDW (Foreign Data Wrapper)
FDW - это расширение, доступное в PostgreSQL, которое позволяет нам обращаться к таблице или схеме одной базы данных из другой.
🔹Streaming
PipelineDB - это расширение PostgreSQL для высокопроизводительной агрегации временных рядов, предназначенное для работы с отчетами и аналитическими приложениями в реальном времени.
🔹Geospatial
PostGIS - это расширитель базы данных для объектно-реляционной базы данных PostgreSQL. Он добавляет поддержку географических объектов, позволяя выполнять запросы на определение местоположения в SQL.
🔹Временные ряды
Timescale расширяет PostgreSQL для работы с временными рядами и аналитикой. Например, разработчики могут объединять непрерывные потоки финансовых и тиковых данных с другими бизнес-данными для создания новых приложений и получения уникальных знаний.
🔹Распределенные таблицы
CitusData масштабирует Postgres за счет распределения данных и запросов.
#db
👉 @database_info
SQL-запросы, которые вы рано или поздно погуглите
Разобрали на примерах самые популярные SQL-запросы, связанные с модификацией таблиц, изменением записей и условиями.
В этой статье отвечу на вопросы, которые возникают у новичков в SQL, в частности в PostgreSQL и BigQuery. Мы не будем обсуждать совсем базовые SELECT, CREATE или DROP. |playerId|name |installationDate|game |os |
|--------|----------------|----------------|----------|----------|
|9e8a0174|Трофимова Алёна |2023-07-30 |basketball|iOS 16 |
|3e2e04ad|Семенова Алиса |2022-07-21 |consumer |iOS 13 |
|642eafb2|Абрамова Диана |2022-06-06 |curtain |iOS 15 |
|8c231f49|Ефимова Ульяна |2022-06-21 |conductor |Android 12|
|a085caf1|Захаров Михаил |2023-04-11 |appear |Android 11|
|c4deb869|Николаева Марта |2022-03-31 |possible |iOS 11 |
https://telegra.ph/SQL-zaprosy-kotorye-vy-rano-ili-pozdno-poguglite-03-22
#db
👉 @database_info
⁉️ Как повысить производительность Spark? С помощью оптимизатора запросов Catalyst!
О том, как работать с Catalyst, – мы поговорим на открытом вебинаре «Раскрытие мощности Apache Spark: Погружение в оптимизатор запросов Catalyst».
Урок проведёт Андрей Чучалов, опытный специалист по технологиям на базе JVM и большим данным.
💻 Вы узнаете:
— Каким образом Catalyst повышает производительность Spark
— Из чего состоит архитектура Catalyst
— Каким образом Catalyst обеспечивает расширяемость и настройку
— Какие препятствия и ограничения возникают при работе с Catalyst
После вебинара можно записаться на курс «Spark Developer». Курс доступен для приобретения в рассрочку.
🔛 Начало: 28 марта, 20:00 МСК
🟣 Записаться на событие - https://vk.cc/cvCOoy
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Самоучитель PostgreSQL - полный курс для начинающих
Узнайте, как использовать PostgreSQL в этом полном курсе. PostgreSQL - это объектно-реляционная система управления базами данных общего назначения. Это самая передовая система баз данных с открытым исходным кодом, широко используемая для создания внутренних систем.
https://www.youtube.com/watch?v=qw--VYLpxG4
#Postgres
👉 @database_info
Вопрос по SQL с собеседования Airbnb
Найдите среднее количество ванных комнат и спален для каждого типа собственности в городе. Выведите результат вместе с названием города и типом недвижимости.airbnb_search_details
id:int
price:float
property_type:varchar
room_type:varchar
amenities:varchar
accommodates:int
bathrooms:int
bed_type:varchar
cancellation_policy:varchar
cleaning_fee:bool
city:varchar
host_identity_verified:varchar
host_response_rate:varchar
host_since:datetime
neighbourhood:varchar
number_of_reviews:int
review_scores_rating:float
zipcode:int
bedrooms:int
beds:int
ОтветSELECT city, property_type, avg(bedrooms) as n_bedrooms_avg, avg(bathrooms) as n_bathrooms_avg
FROM airbnb_search_details
GROUP BY city, property_type
ORDER BY city
#db
👉 @database_info
erid: LjN8KacLQ
Построение DWH в Yandex Cloud: кейс крупной логистической компании
21 марта в 16.00
На вебинаре эксперты iiii Tech и Yandex Cloud совместно с клиентом Рулог поделятся кейсом, как в рамках локализации отчетности развернуть DWH (КХД) на Yandex Cloud.
Расскажем о:
- современном стеке аналитических инструментов
- бесшовной миграции с международных облачных платформ
- о проекте построения DWH (КХД) на основе дата-контрактов
Вебинар будет полезен CDO, CTO, руководителям направлений по работе с данными, архитекторам данных, аналитиками и дата-инженерам.
Спикеры:
Георгий Цыганков,
руководитель направления BI
Андрей Суренский,
архитектор по работе с партнёрами Yandex Cloud
Венера Никитина, бизнес-аналитик логистической компании Рулог
Зарегистрироваться можно по ссылке
О командах SQL в двух словах
DDL (Data Definition Language): Занимается структурой или схемой базы данных.
CREATE: используется для создания таких объектов, как таблицы, представления, индексы и т. д.
ALTER: используется для изменения существующих объектов базы данных. Например, она может добавлять, удалять или изменять столбцы в существующей таблице.
DROP: используется для удаления объектов базы данных. Например, DROP TABLE удаляет существующую таблицу.
TRUNCATE: используется для удаления всех записей из таблицы, включая все места, отведенные для записей.
DML (Data Manipulation Language): Занимается манипулированием данными и управлением ими в базе данных.
INSERT: добавляет новые строки/записи в таблицу.
UPDATE: изменение существующих строк/записей в таблице.
DELETE: удаление строк/записей из таблицы.
MERGE: используется для вставки, обновления или удаления записей из таблицы на основе определенных условий.
DQL (Data Query Language): Используется для получения данных из базы данных.
SELECT: Извлекает данные из одной или нескольких таблиц. Эту команду можно комбинировать с различными предложениями (например, WHERE, GROUP BY, HAVING) для фильтрации, группировки и сортировки полученных данных.
DCL (Data Control Language): Имеет дело с разрешениями и правами, которые могут быть предоставлены или отменены.
GRANT: Предоставляет определенные привилегии пользователям или ролям.
REVOKE: отменяет определенные привилегии у пользователей или ролей.
TCL (Transaction Control Language): Используется для управления транзакциями в базе данных, обеспечивая целостность данных.
COMMIT: Сохраняет все транзакции в базе данных с момента последней команды COMMIT или ROLLBACK.
ROLLBACK: восстанавливает базу данных до состояния последней фиксации. При этом отменяются все изменения, сделанные с момента последнего COMMIT.
SAVEPOINT: устанавливает точку в транзакции, к которой впоследствии можно вернуться.
SET TRANSACTION: настройка свойств транзакции.
#SQL
👉 @database_info
90+ вопросов и ответов для собеседования по SQL (ENG)
Почти все крупные представители технологической индустрии, такие как Uber, Netflix, Airbnb и т.д., используют SQL. В этом блоге перечислены все лучшие вопросы для собеседования по SQL.
https://intellipaat.com/blog/interview-question/sql-interview-questions/
#SQL
👉 @database_info
Как работают джойны SQL?
На приведенной ниже схеме подробно показано, как работают 4 типа объединений SQL.
🔹INNER JOIN возвращает совпадающие строки в обеих таблицах
🔹LEFT JOIN возвращает все записи из левой таблицы и соответствующие записи из правой
🔹RIGHT JOIN возвращает все записи из правой таблицы и соответствующие записи из левой
🔹FULL OUTER JOIN возвращает все записи, в которых есть совпадения, в левой или правой таблице
#db
👉 @database_info
StereoDB
Сверхбыстрая и легкая база данных с памятью в процессе, написанная на F#, которая поддерживает: транзакции, вторичные индексы, персистентность и размер данных больше, чем RAM. Основное применение этой базы данных - создание Stateful Services (API или ETL Worker), которые хранят все данные в памяти и могут обеспечить миллионы RPS с одного узла.
Поддерживаемые функции:
C# and F# API
Basic SQL support
Transactions (read-only, read-write)
Secondary Indexes
Value Index (hash-based index)
Range Scan Index
Data size larger than RAM
Data persistence
Distributed mode
Server and client discovery
Range-based sharding
https://github.com/StereoDB/StereoDB#stereodb
#db
👉 @database_info
⚠️ Обсждаем основные проблемы миграции с MS SQL Server на PostgreSQL на открытом практическом уроке от OTUS
Поговорим почему многие проекты по миграции никогда не заканчиваются
на открытом уроке «Основные проблемы миграции» в рамках практического курса «Миграция с MS SQL Server на PostgreSQL» от OTUS
🔹Разберем какие бывают проблемы при миграции и как их решать
🔹Расскажем как не надо делать миграцию
👉 Регистрация
https://otus.pw/5VhN/?erid=LjN8KTuqy
Шардирование базы данных на пальцах
Популярные приложения рано или поздно должны масштабироваться для ускорения доступа к данным и увеличения трафика. Чтобы распределить данные на несколько серверов и обеспечить им безопасность и целостность, нужна база данных с соответствующей архитектурой — шардированная база данных.
Шардирование (шардинг) базы данных — это деление данных на разные фрагменты с целью повышения производительности и надежности. Иногда это понятие путают с репликацией и партицированием, но на самом деле это разные направления масштабирования, которые могут быть реализованы в пределах одной базы данных.
Существует два вида шардирования:
▪Вертикальное (по столбцам): каждый шард содержит часть столбцов массива и все связанные с ними строки данных.
▪Горизонтальное (по каким-либо критериям строки): каждый шард содержит одинаковые столбцы, но разные строки данных.
https://architecturenotes.co/database-sharding-explained/
#db
👉 @database_info
Шпаргалка по оконным функциям в SQL
#db
👉 @database_info
Как заменить null на 0 в SQL
Чтобы заменить значение NULL на 0 в SQL, можно использовать функцию COALESCE. Эта функция принимает несколько аргументов и возвращает первый не NULL аргумент.
Если все аргументы NULL, функция вернет NULL. Вот пример использования COALESCE для замены значений NULL на 0:SELECT COALESCE(column_name, 0) FROM table_name;
В этом запросе column_name - имя столбца, значения которого нужно заменить, а table_name - имя таблицы, в которой находится столбец. Функция COALESCE заменит все значения NULL в столбце на 0. Если значение столбца не NULL, то функция вернет его без изменений.
Также можно использовать оператор IS NULL для проверки на NULL и замены его на 0. Вот пример:SELECT CASE WHEN column_name IS NULL THEN 0 ELSE column_name END FROM table_name;
Этот запрос также заменит значения NULL на 0. Если значение столбца не NULL, то запрос вернет его без изменений.
#db
👉 @database_info
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
⚠️ Присоединяйтесь обзору автоматизированных средств миграции с MS SQL Server на PostgreSQL 26 марта в 20:00!
На вебинаре мы детально изучим средства автоматизированной миграции с MS SQL Server на PostgreSQL.
Вы получите ответ на ключевые вопросы:
1. Какие средства доступны для миграции?
2. Что можно успешно осуществить с помощью автоматизации?
3. Почему автоматизированная миграция может не подойти для крупных проектов и как с этим справиться?
📌Вебинар предназначен для разработчиков и тимлидов, планирующих процесс миграции базы данных
Не упустите шанс узнать о возможностях и ограничениях автоматизированных средств миграции!
Регистрация:
https://otus.pw/iaUG/?erid=LjN8K6ovy
Когда одного Postgres'a мало: сравнение производительности PostgreSQL и распределенных СУБД
Важно: данный пост написан разработчиком YDB и основан на совместном исследовании с Евгением Ефимкиным, экспертом в области PostgreSQL, не работающим в YDB.
Общеизвестно, что PostgreSQL - крайне эффективная СУБД с богатой функциональностью. Энергичное сообщество PostgreSQL значительно повлияло на то, какие возможности современные СУБД должны предоставлять разработчикам и пользователям. При этом не секрет, что PostgreSQL масштабируется только вертикально и её производительность ограничена возможностями одного сервера.
Написано много хороших постов, в которых сравнивают архитектуру монолитных и распределенных СУБД. Например, рекомендуем этот. К сожалению, обычно авторы ограничиваются теоретическим сравнением и не приводят конкретные цифры. Данный пост же наоборот основан на эмпирическом исследовании с использованием бенчмарка TPC-C, который является промышленным стандартом для оценки производительности транзакционных СУБД (On-Line Transaction Processing, OLTP).
Наш подход крайне прост. Есть три сервера, в каждом из которых 128 ядер CPU, 512 GiB RAM и четыре NVMe-диска. Настраиваем СУБД так, чтобы переживать выход из строя одного из серверов. Размер датасета должен быть не менее 1 ТиБ. Запускаем бенчмарк TPC-C на 12 часов (мы покажем, что даже это не так уж и много, чтобы тщательно проверить работу СУБД).
https://habr.com/ru/companies/ydb/articles/801587/
original https://blog.ydb.tech/when-postgres-is-not-enough-performance-evaluation-of-postgresql-vs-distributed-dbmss-23bf39db2d31
#db
👉 @database_info
Как лучше всего изучать язык SQL?
В 1986 году язык SQL (Structured Query Language) стал стандартом. В течение последующих 40 лет он стал доминирующим языком для систем управления реляционными базами данных. Чтение последнего стандарта (ANSI SQL 2016) может занять много времени. Как я могу его выучить?
В состав языка SQL входят 5 компонентов:- DDL
: data definition language, such as CREATE, ALTER, DROP- DQL
: data query language, such as SELECT- DML
: data manipulation language, such as INSERT, UPDATE, DELETE- DCL
: data control language, such as GRANT, REVOKE- TCL
: transaction control language, such as COMMIT, ROLLBACK
Для бэкенд-инженера может потребоваться знание большинства из них. Аналитику данных может потребоваться хорошее понимание DQL. Выберите те темы, которые наиболее актуальны для вас.
#db
👉 @database_info
Последние дни, чтобы зайти в поток курса «PHP-разработчик» от Слёрм.
Старт потока 13 марта. (присоединиться к обучению можно до 20.03)
📌 Дарим промокод 02_PHP_2024 на скидку 15%
PHP остаётся одним из основных языков программирования для бэкенд-разработки веб-проектов.
✔️В PYPL Index 2023 и TIOBE Index PHP занимает 10-11-е строчки самых популярных ЯП в мире.
⚡️Более 80% сайтов в инете юзают PHP!
«PHP-разработчик: от основ до middle» – это комплексный курс, идем от базовых тем и вгрызаемся в самую сложную мякотку программирования. Таких же курсов на российском рынке больше нет: серьезно, мы проверяли.
Обучение подойдёт Junior PHP-разработчикам и начинающим программистам, которые пишут на других языках. (особенно на Python🙃)
Чему мы учим наших студентов?
🔘 Писать безопасные приложения, используя базовые концепции и синтаксис языка.
🔘 Работать с библиотеками и фреймворками.
🔘 Деплоить и запускать приложения в облаке и на сервере.
🔘 Работать с базами данных.
🔘 Разрабатывать функциональность для веб-сайтов.
Ты напишешь проект, который не стыдно положить в портфолио, систематизируешь знания и навыки, и увеличишь шансы получить оффер на позицию Middle PHP-разработчик.
🔜 Оформить обучение
Оплата полностью, в рассрочку или от компании.
Реклама ООО «Слёрм» ИНН 3652901451
Задача SQL
Дана пустая таблица publisher
Дана пустая таблица publisher с колонками id и name. На id стоит автоинкремент, а Синтаксис name имеет тип varchar(40). Какие из следующих запросов корректно отработают:
1) INSERT INTO publisher (name) VALUES ('OREILLY');
2) INSERT INTO publisher (name) VALUES ('О Reilly');
3) INSERT INTO publisher (name) VALUES ('O'Reilly');
4) INSERT INTO publisher (name) VALUES ('O-Reilly');
Ответ:
1, 2, 4
#db
👉 @database_info
Документация YDB
YDB — это распределённая отказоустойчивая Distributed SQL СУБД. YDB обеспечивает высокую доступность, горизонтальную масштабируемость, а также строгую консистентность и поддержку ACID-транзакций. Для запросов используется диалект SQL (YQL).
https://ydb.tech/docs/ru/
#SQL
👉 @database_info
Как развиваться разработчику и администратору баз данных?
👉 Наращивать объем знаний и навыков.
Приглашаем на открытый урок «PostgreSQL High-Availability при помощи Patroni» в рамках курса «PostgreSQL для администраторов баз данных и разработчиков» от OTUS
🔹В ходе вебинара рассмотрим создание отказоустойчивого кластера PostgreSQL с использованием такого инструмента как Patroni
Patroni - это Python-приложение для создания высокодоступных PostgreSQL кластеров на основе потоковой репликации
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Читать полностью…
20 марта ИТ руководители ADV Group, Сталепромышленная компания и M1Cloud поделятся практическим опытом построения индивидуальных решений облачной ИТ-инфраструктуры.
На вебинаре спикеры поделятся опытом кастомизации облака под особые требования ИТ и бизнеса в сфере:
- производительности вычислительных ресурсов
- сетевой связанности
- информационной безопасности
- отказоустойчивых DR-решений
- мониторинга и др.
Приглашаем на вебинар всех, кто отвечает за ИТ-инфраструктуру и рассматривает индивидуальные облачные решения.
Участие бесплатное.
Посмотреть программу и зарегистрироваться
Реклама. ООО "СТЕК ГРУПП". ИНН 7729739360.
Открытый практикум Linux by Rebrain: LVM - вторая часть
Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!
👉Регистрация
Время проведения:
13 Марта (Среда) в 20:00 по МСК
Программа практикума:
🔹Перемещение сегментов
🔹Создание Mirror LV
🔹Cachepool
Кто ведёт?
Андрей Буранов – Системный администратор в департаменте VK Play. 10+ лет опыта работы с ОС Linux. 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2VtzqvXvYTA
SQL в качестве API
Верно, вы уже успели подумать: «это же безумие, предоставлять API, который принимает SQL». Да, это ужасная идея. Особенно, если API обращён к Интернету. Делать так небезопасно, вы напрашиваетесь на атаки в виде SQL-инъекций. Поддержка такого интерфейса превратится в кошмар, а сама реализация бэкенда будет замкнута на конкретную технологию (это будет какая-нибудь база данных ANSI SQL).
Но справедливо ли такое суждение? Время его пересмотреть!
https://habr.com/ru/companies/timeweb/articles/798937/
original https://valentin.willscher.de/posts/sql-api/
#db
👉 @database_info
Sqlite-web
Веб-браузер баз данных SQLite, написанный на Python$ pip install sqlite-web
Особенности
Работает с существующими базами данных SQLite или может быть использована для создания новых баз данных.
Добавляйте и удаляйте:
Таблицы
Столбцы (с поддержкой старых версий Sqlite)
Индексы
Экспорт данных в формате JSON или CSV.
Импорт файлов JSON или CSV.
Просмотр данных в таблице.
Вставка, обновление или удаление строк.
https://github.com/coleifer/sqlite-web
#db
👉 @database_info
Открытый практикум Linux by Rebrain: LVM - первая часть
Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!
👉Регистрация
Время проведения:
6 Марта (Среда) в 20:00 по МСК
Программа практикума:
🔹От логических разделов к логическим томам
🔹PV, VG, LV
🔹Практика работы с LVM - создание LV, манипуляции со свободным пространством
Кто ведёт?
Андрей Буранов – Системный администратор в департаменте VK Play. 10+ лет опыта работы с ОС Linux. 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2VtzqvgsVUc