Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.2K subscribers
567 photos
468 videos
19 files
546 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
Шардирование базы данных на пальцах

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

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

Существует два вида шардирования:

Вертикальное (по столбцам): каждый шард содержит часть столбцов массива и все связанные с ними строки данных.
Горизонтальное (по каким-либо критериям строки): каждый шард содержит одинаковые столбцы, но разные строки данных.

https://architecturenotes.co/database-sharding-explained/

#db

👉 @database_info
👍8
Sqlite-web

Веб-браузер баз данных SQLite, написанный на Python

$ pip install sqlite-web

Особенности

Работает с существующими базами данных SQLite или может быть использована для создания новых баз данных.
Добавляйте и удаляйте:
Таблицы
Столбцы (с поддержкой старых версий Sqlite)
Индексы
Экспорт данных в формате JSON или CSV.
Импорт файлов JSON или CSV.
Просмотр данных в таблице.
Вставка, обновление или удаление строк.

https://github.com/coleifer/sqlite-web

#db

👉 @database_info
🔥4👍3
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
👍6
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
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Как работают джойны SQL?

На приведенной ниже схеме подробно показано, как работают 4 типа объединений SQL.

🔹INNER JOIN возвращает совпадающие строки в обеих таблицах
🔹LEFT JOIN возвращает все записи из левой таблицы и соответствующие записи из правой
🔹RIGHT JOIN возвращает все записи из правой таблицы и соответствующие записи из левой
🔹FULL OUTER JOIN возвращает все записи, в которых есть совпадения, в левой или правой таблице

#db

👉 @database_info
👍8
90+ вопросов и ответов для собеседования по SQL (ENG)

Почти все крупные представители технологической индустрии, такие как Uber, Netflix, Airbnb и т.д., используют SQL. В этом блоге перечислены все лучшие вопросы для собеседования по SQL.

https://intellipaat.com/blog/interview-question/sql-interview-questions/

#SQL

👉 @database_info
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
О командах 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
👍15
Документация YDB

YDB — это распределённая отказоустойчивая Distributed SQL СУБД. YDB обеспечивает высокую доступность, горизонтальную масштабируемость, а также строгую консистентность и поддержку ACID-транзакций. Для запросов используется диалект SQL (YQL).

https://ydb.tech/docs/ru/

#SQL

👉 @database_info
👍3
Задача 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
👍9
Вопрос по 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
👍7
Самоучитель PostgreSQL - полный курс для начинающих

Узнайте, как использовать PostgreSQL в этом полном курсе. PostgreSQL - это объектно-реляционная система управления базами данных общего назначения. Это самая передовая система баз данных с открытым исходным кодом, широко используемая для создания внутренних систем.

https://www.youtube.com/watch?v=qw--VYLpxG4

#Postgres

👉 @database_info
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Как лучше всего изучать язык 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
👍5
Когда одного 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
👍4👎1
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
👍4
Почему 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
👍4👎2
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.

В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.

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

Ознакомиться с книгой
🤔2👍1🥴1