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
Верно, вы уже успели подумать: «это же безумие, предоставлять 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
Сверхбыстрая и легкая база данных с памятью в процессе, написанная на 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
На приведенной ниже схеме подробно показано, как работают 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
Почти все крупные представители технологической индустрии, такие как 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
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
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
Дана пустая таблица 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');
Ответ:
#db
👉 @database_info
👍9
Вопрос по SQL с собеседования Airbnb
Найдите среднее количество ванных комнат и спален для каждого типа собственности в городе. Выведите результат вместе с названием города и типом недвижимости.
Ответ
#db
👉 @database_info
Найдите среднее количество ванных комнат и спален для каждого типа собственности в городе. Выведите результат вместе с названием города и типом недвижимости.
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
Узнайте, как использовать PostgreSQL в этом полном курсе. PostgreSQL - это объектно-реляционная система управления базами данных общего назначения. Это самая передовая система баз данных с открытым исходным кодом, широко используемая для создания внутренних систем.
https://www.youtube.com/watch?v=qw--VYLpxG4
#Postgres
👉 @database_info
YouTube
Learn PostgreSQL Tutorial - Full Course for Beginners
Learn how to use PostgreSQL in this full course. PostgreSQL is a general purpose and object-relational database management system. It is the most advanced open source database system widely used to build back-end systems.
❤️ Try interactive Databases courses…
❤️ Try interactive Databases courses…
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Как лучше всего изучать язык SQL?
В 1986 году язык SQL (Structured Query Language) стал стандартом. В течение последующих 40 лет он стал доминирующим языком для систем управления реляционными базами данных. Чтение последнего стандарта (ANSI SQL 2016) может занять много времени. Как я могу его выучить?
В состав языка SQL входят 5 компонентов:
Для бэкенд-инженера может потребоваться знание большинства из них. Аналитику данных может потребоваться хорошее понимание DQL. Выберите те темы, которые наиболее актуальны для вас.
#db
👉 @database_info
В 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
Важно: данный пост написан разработчиком 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.
https://telegra.ph/SQL-zaprosy-kotorye-vy-rano-ili-pozdno-poguglite-03-22
#db
👉 @database_info
Разобрали на примерах самые популярные 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
На диаграмме показано множество вариантов использования 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-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
🤔2👍1🥴1
Media is too big
VIEW IN TELEGRAM
ACID на примере PostgreSQL
В этом видео мы рассмотрим свойства транзакций ACID на примере PostgreSQL
https://imvanich.notion.site/7cee1b18bf6446818d2cd8dd22493269
источник
#db
👉 @database_info
В этом видео мы рассмотрим свойства транзакций ACID на примере PostgreSQL
https://imvanich.notion.site/7cee1b18bf6446818d2cd8dd22493269
источник
#db
👉 @database_info
👍3
Как заменить null на 0 в SQL
Чтобы заменить значение NULL на 0 в SQL, можно использовать функцию COALESCE. Эта функция принимает несколько аргументов и возвращает первый не NULL аргумент.
Если все аргументы NULL, функция вернет NULL. Вот пример использования COALESCE для замены значений NULL на 0:
В этом запросе column_name - имя столбца, значения которого нужно заменить, а table_name - имя таблицы, в которой находится столбец. Функция COALESCE заменит все значения NULL в столбце на 0. Если значение столбца не NULL, то функция вернет его без изменений.
Также можно использовать оператор IS NULL для проверки на NULL и замены его на 0. Вот пример:
Этот запрос также заменит значения NULL на 0. Если значение столбца не NULL, то запрос вернет его без изменений.
#db
👉 @database_info
Чтобы заменить значение 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
👍7