Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.2K subscribers
568 photos
468 videos
19 files
547 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
PostgreSQL Antipatterns: устраняем вложенные интервалы

Недавно попался на глаза примерно вот такой запрос, которым хотели отобрать в таблице (очевидно, для последующего удаления) все id записей интервалов, которые полностью перекрыты каким-то другим интервалом того же owner'а:

https://habr.com/ru/companies/tensor/articles/847128/

#db

👉 @database_info
👍5
Media is too big
VIEW IN TELEGRAM
SQL. Решаем ТЕСТОВЫЕ ЗАДАНИЯ из AMAZON и FACEBOOK (подробный разбор)

00:00 - Где искать задачи с собеседований IT-компаний?
00:53 - Решаем задачу из Amazon
09:36 - Решаем задачу из Facebook
20:44 - Задача со звездочкой из моей работы. Пишите ваши решения в комментарии!

источник

#db

👉 @database_info
👍3
⚡️ Совет по работе с базами данных

Расширение традиционной схемы базы данных с помощью NoSQL-подобных JSON-столбцов может сделать схему более понятной.

Но вы также должны убедиться, что эти JSON-документы соответствуют ожидаемой схеме!

#db

👉 @database_info
👍3
🚀 Новая функция для улучшенного драйвера PostgreSQL

При сортировке строк вам надоели эти надоедливые значения NULL, которые появляются первыми?

В PostgreSQL есть функция, позволяющая задать, должны ли значения NULL быть перед или после всего остального. И теперь это поддерживается в Laravel!

#db

👉 @database_info
👍4
🫣 Больше всего кибер-атак приходится на вечер понедельника

У этого заголовка две цели. Во-первых, это реальный факт — количество атак за квартал увеличилось на 12%

А во-вторых, привлечь ваше внимание к кибербезопасности. Теме, о которой так мало говорят в прикладном и доступном формате

💡В своем блоге Денис Макрушин рассказывает об исследовании угроз и разработке security-инноваций. Как предотвратить кражу данных и обезопасить свой труд

В канале уже есть посты про уязвимости и угрозы, которые несут реальную опасность для людей

Рекомендуем подписаться, если вы хоть как-то связаны с IT и технологиями

👉 [подписаться]
🔥1
PostgreSQL 'VALUES -> ANY' transformation: должна ли СУБД делать работу за пользователя?

Недавно, на хабре вышла статья про один нюанс в оптимизаторе PostgreSQL [1]. Будучи предельно технической и скучной по-определению, она триггернула интересную дискуссию в комментах и дала мне, как разработчику систем баз данных, возможность взглянуть на систему с точки зрения разработчика приложений. Это оказалось продуктивным для обеих сторон и привело к патчу и треду в сообществе. Данный пост - про ещё одну точку оптимизации - использование конструкции VALUES в выражениях SQL.

Здесь я также мимоходом хочу затронуть весьма глобальный вопрос: а должна ли open-source СУБД исправлять огрехи пользователя? Я имею в виду оптимизировать запрос ещё до начала поиска оптимального плана, устраняя само-соединения, подзапросы, упрощая выражения - всё то, чего можно добиться изменением приложения. Вопрос не праздный, поскольку в той же дискуссии [1] было указано, что стоимость планирования запроса в Oracle быстро растет при усложении текста запроса, что скорее всего вызвано, в том числе, большой номенклатурой правил оптимизации.

https://habr.com/ru/articles/847940/

#db

👉 @database_info
👍2
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://news.1rj.ru/str/sysadmin_girl Девочка Сисадмин
https://news.1rj.ru/str/srv_admin_linux Админские угодья
https://news.1rj.ru/str/linux_srv Типичный Сисадмин

https://news.1rj.ru/str/devops_star DevOps Star (Звезда Девопса)
https://news.1rj.ru/str/i_linux Системный администратор
https://news.1rj.ru/str/linuxchmod Linux
https://news.1rj.ru/str/sys_adminos Системный Администратор
https://news.1rj.ru/str/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://news.1rj.ru/str/sysadminof Книги для админов, полезные материалы
https://news.1rj.ru/str/i_odmin Все для системного администратора
https://news.1rj.ru/str/i_odmin_book Библиотека Системного Администратора
https://news.1rj.ru/str/i_odmin_chat Чат системных администраторов
https://news.1rj.ru/str/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://news.1rj.ru/str/sysadminoff Новости Линукс Linux

1C разработка 📌
https://news.1rj.ru/str/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://news.1rj.ru/str/cpp_lib Библиотека C/C++ разработчика
https://news.1rj.ru/str/cpp_knigi Книги для программистов C/C++
https://news.1rj.ru/str/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://news.1rj.ru/str/pythonofff Python академия. Учи Python быстро и легко🐍
https://news.1rj.ru/str/BookPython Библиотека Python разработчика
https://news.1rj.ru/str/python_real Python подборки на русском и английском
https://news.1rj.ru/str/python_360 Книги по Python Rus

Java разработка 📌
https://news.1rj.ru/str/BookJava Библиотека Java разработчика
https://news.1rj.ru/str/java_360 Книги по Java Rus
https://news.1rj.ru/str/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://news.1rj.ru/str/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://news.1rj.ru/str/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://news.1rj.ru/str/developer_mobila Мобильная разработка
https://news.1rj.ru/str/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://news.1rj.ru/str/frontend_1 Подборки для frontend разработчиков
https://news.1rj.ru/str/frontend_sovet Frontend советы, примеры и практика!
https://news.1rj.ru/str/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://news.1rj.ru/str/game_devv Все о разработке игр

Библиотеки 📌
https://news.1rj.ru/str/book_for_dev Книги для программистов Rus
https://news.1rj.ru/str/programmist_of Книги по программированию
https://news.1rj.ru/str/proglb Библиотека программиста
https://news.1rj.ru/str/bfbook Книги для программистов
https://news.1rj.ru/str/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://news.1rj.ru/str/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://news.1rj.ru/str/bookflow Лекции, видеоуроки, доклады с IT конференций
https://news.1rj.ru/str/coddy_academy Полезные советы по программированию
https://news.1rj.ru/str/rust_lib Полезный контент по программированию на Rust
https://news.1rj.ru/str/golang_lib Библиотека Go (Golang) разработчика
https://news.1rj.ru/str/itmozg Программисты, дизайнеры, новости из мира IT
https://news.1rj.ru/str/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://news.1rj.ru/str/nodejs_lib Подборки по Node js и все что с ним связано
https://news.1rj.ru/str/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров

Английский 📌
https://news.1rj.ru/str/UchuEnglish Английский с нуля

Математика 📌
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://news.1rj.ru/str/Excel_lifehack

https://news.1rj.ru/str/tikon_1 Новости высоких технологий, науки и техники💡
https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
👍2
7 эффективных стратегий для масштабирования базы данных

🔵 Индексация: Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
🔵Материализованные представления: Предварительно вычисляйте результаты сложных запросов и сохраняйте их для быстрого доступа.
🔵 Денормализация: Упрощайте сложные соединения для повышения скорости выполнения запросов.
🔵 Вертикальное масштабирование: Увеличивайте ресурсы сервера (процессоры, оперативную память, хранилище) для улучшения производительности.
🔵 Кэширование: Храните часто запрашиваемые данные в быстром хранилище, чтобы снизить нагрузку на базу данных.
🔵 Репликация: Создавайте копии основной базы данных на разных серверах для увеличения объема операций чтения.
🔵 Шардинг: Разделяйте таблицы на более мелкие части и распределяйте их по серверам для улучшения работы с записью и чтением.

#db

👉 @database_info
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
PostgreSQL Antipatterns: «вращаем» JSON

Принимать сложные параметры запроса в виде JSON - полезно, хранить его в базе - удобно, но работа с ним в рамках SQL-запроса зачастую вызывает затруднения.

Сегодня столкнулся с очередным нетипичным вариантом использования - "перекладыванием" значений из JSON-строк в столбцы примерно такого вида:


SELECT
json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'ru') ->> 'ru' ru
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'en') ->> 'en' en
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'de') ->> 'de' de
, json_object_agg(js ->> 'language', coalesce(js ->> 'value', ''))
FILTER(WHERE js ->> 'language' = 'fr') ->> 'fr' fr
FROM
(
VALUES
('{"language" : "ru", "value" : "Бухгалтерия"}'::json)
, ('{"language" : "en", "value" : "Accounting"}')
, ('{"language" : "de", "value" : "Buchhaltung"}')
, ('{"language" : "fr", "value" : "Comptabilité"}')
) T(js);


https://habr.com/ru/companies/tensor/articles/850522/

#db

👉 @database_info
👍4
Базы данных 101: Консистентность данных для начинающих

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

https://dev.to/scylladb/database-101-why-so-interesting-1344

#db

👉 @database_info
👍31😁1
Media is too big
VIEW IN TELEGRAM
SQL injection - почему, зачем и как защититься от SQL инъекции

В этом видио хотелось бы поговорить про очень опасную на мой взгляд хакерскую атаку SQL Injection. Это одна из старейших атак и она все ещё актуальна. Сегодня мы рассмотрим примеры использования SQL Injection на примере небольшого C# приложения. В других языках программирования и фреймворках все работает идентично.

источник

#sql

👉 @database_info
👍3
База данных 101: SSL/TLS для начинающих

Ещё раз делюсь с вами знаниями из моей повседневной работы в качестве Developer Advocate в ScyllaDB, и на этот раз я собираюсь рассказать вам о безопасных и зашифрованных соединениях! Это тема, которая может вызвать беспокойство у новичков, но я постараюсь сделать её проще для вас.

Если вы только начинаете работать с базами данных в общем или конкретно с базами данных, вам стоит начать с прочтения моей первой статьи "Базы данных 101: Консистентность данных для начинающих".

https://dev.to/scylladb/database-101-ssltls-for-beginners-4lmn

#db

👉 @database_info
👍4
Media is too big
VIEW IN TELEGRAM
SQL Injection - теория и примеры

В прошлом видео я поспешил рассказать и показать SQL Injection на практике, а в этом видео я хочу сделать шаг назад и поговорить чуть больше о теории и больше рассмотреть небольших примеров.

источник

#sql

👉 @database_info
👍5
Как найти дубли в sql

Для того чтобы найти дубликаты в базе данных SQL, можно использовать операторы SELECT и GROUP BY совместно с оператором HAVING. Например, следующий запрос позволяет найти все строки, у которых значение определенного столбца повторяется более одного раза:


SELECT столбец, COUNT(*) AS количество
FROM таблица
GROUP BY столбец
HAVING COUNT(*) > 1;

Этот запрос выведет все уникальные значения столбца "столбец", а также количество раз, которое каждое значение повторяется в таблице. Результатом будут только те строки, где значение столбца повторяется более одного раза, что указывает на наличие дубликатов.

Также можно использовать операторы JOIN или подзапросы для более сложных запросов на поиск дубликатов. Важно помнить, что перед выполнением подобных операций на поиск дубликатов необходимо создать резервную копию базы данных или таблицы, чтобы избежать потери данных.

#sql

👉 @database_info
👍3
Совет по работе с базой данных💡

Дубликаты строк легко создаются по ошибке и почти так же легко удаляются: вы можете в *одном* SQL-запросе определить их, а также указать, какой из них оставить!

Вот самый быстрый способ 👆

#sql

👉 @database_info
👍3
Писать чистый SQL проще с pgx и sqlc в Go


Что такое pgx и sqlc?

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

sqlc: это инструмент для генерации кода, который преобразует ваши SQL-запросы в файлах .sql в Go-код с типобезопасностью как для параметров запроса, так и для результатов. Пример можно посмотреть здесь: sqlc playground. sqlc также поддерживает pgx "из коробки", что делает эту комбинацию отличным решением для работы с базами данных.

https://remvn.dev/posts/writing-raw-sql-easier-with-pgx-and-sqlc-in-go/

#sql

👉 @database_info
👍2
База данных баз данных

Откройте для себя и узнайте о 900 системах управления базами данных

https://dbdb.io/

#db

👉 @database_info
👍2🤯2
Шпаргалка по выбору базы данных

#db

👉 @database_info
👍6👎2
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://news.1rj.ru/str/sysadmin_girl Девочка Сисадмин
https://news.1rj.ru/str/srv_admin_linux Админские угодья
https://news.1rj.ru/str/linux_srv Типичный Сисадмин

https://news.1rj.ru/str/devops_star DevOps Star (Звезда Девопса)
https://news.1rj.ru/str/i_linux Системный администратор
https://news.1rj.ru/str/linuxchmod Linux
https://news.1rj.ru/str/sys_adminos Системный Администратор
https://news.1rj.ru/str/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://news.1rj.ru/str/sysadminof Книги для админов, полезные материалы
https://news.1rj.ru/str/i_odmin Все для системного администратора
https://news.1rj.ru/str/i_odmin_book Библиотека Системного Администратора
https://news.1rj.ru/str/i_odmin_chat Чат системных администраторов
https://news.1rj.ru/str/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://news.1rj.ru/str/sysadminoff Новости Линукс Linux

1C разработка 📌
https://news.1rj.ru/str/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://news.1rj.ru/str/cpp_lib Библиотека C/C++ разработчика
https://news.1rj.ru/str/cpp_knigi Книги для программистов C/C++
https://news.1rj.ru/str/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://news.1rj.ru/str/pythonofff Python академия. Учи Python быстро и легко🐍
https://news.1rj.ru/str/BookPython Библиотека Python разработчика
https://news.1rj.ru/str/python_real Python подборки на русском и английском
https://news.1rj.ru/str/python_360 Книги по Python Rus

Java разработка 📌
https://news.1rj.ru/str/BookJava Библиотека Java разработчика
https://news.1rj.ru/str/java_360 Книги по Java Rus
https://news.1rj.ru/str/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://news.1rj.ru/str/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://news.1rj.ru/str/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://news.1rj.ru/str/developer_mobila Мобильная разработка
https://news.1rj.ru/str/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://news.1rj.ru/str/frontend_1 Подборки для frontend разработчиков
https://news.1rj.ru/str/frontend_sovet Frontend советы, примеры и практика!
https://news.1rj.ru/str/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://news.1rj.ru/str/game_devv Все о разработке игр

Библиотеки 📌
https://news.1rj.ru/str/book_for_dev Книги для программистов Rus
https://news.1rj.ru/str/programmist_of Книги по программированию
https://news.1rj.ru/str/proglb Библиотека программиста
https://news.1rj.ru/str/bfbook Книги для программистов
https://news.1rj.ru/str/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://news.1rj.ru/str/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://news.1rj.ru/str/bookflow Лекции, видеоуроки, доклады с IT конференций
https://news.1rj.ru/str/coddy_academy Полезные советы по программированию
https://news.1rj.ru/str/rust_lib Полезный контент по программированию на Rust
https://news.1rj.ru/str/golang_lib Библиотека Go (Golang) разработчика
https://news.1rj.ru/str/itmozg Программисты, дизайнеры, новости из мира IT
https://news.1rj.ru/str/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://news.1rj.ru/str/nodejs_lib Подборки по Node js и все что с ним связано
https://news.1rj.ru/str/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров

Английский 📌
https://news.1rj.ru/str/UchuEnglish Английский с нуля

Математика 📌
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://news.1rj.ru/str/Excel_lifehack

https://news.1rj.ru/str/tikon_1 Новости высоких технологий, науки и техники💡
https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
Как настроить master-slave репликацию в mysql (кратко)?

Необходимы 2 сервера: master и slave.

1. На обеих сервера устанавливаем сервер MySQL одинаковой версии.
2. Включаем сервер базы данных на обеих серверах.
3. Настраиваем master - в /etc/my.cnf устанавливаем слеюущие значения:


# выбираем ID сервера, произвольное число, лучше начинать с 1
server-id = 1
# путь к бинарному логу
log_bin = /var/log/mysql/mysql-bin.log
# название Вашей базы данных, которая будет реплицироваться
binlog_do_db = newdatabase


Перезапускаем сервер базы данных.

4. Подключаемся к master серверу, создаем пользователя и назначаем ему права для выполнения репликации.


mysql -u root -p <пароль root сервера БД>
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;


5. На master сервере делаем дамп базы данных c блокировкой таблиц.


mysqldump -u root -p --lock-all-tables newdatabase > newdatabase.sql


6. Переносим дамп базы на slave сервер, создаем базу данных с таким же именем и импортируем базу.


CREATE DATABASE newdatabase;
mysql -u root -p newdatabase < newdatabase.sql


7. Настраиваем slave в /etc/my.cnf:


# ID Слейва, удобно выбирать следующим числом после Мастера
server-id = 2
# Путь к relay логу
relay-log = /var/log/mysql/mysql-relay-bin.log
# Путь к bin логу на Мастере
log_bin = /var/log/mysql/mysql-bin.log
# База данных для репликации
binlog_do_db = newdatabase


Перезапускаем сервер базы данных.

8. Запускаем репликацию на slave сервере.


CHANGE MASTER TO MASTER_HOST='10.10.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password',
MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
##Указанные значения мы берем из настроек Мастера
После этого запускаем репликацию на Слейве:
START SLAVE;


9. Проверяем статус репликации:


SHOW SLAVE STATUSG


#db

👉 @database_info
👍5
Визуализация связей таблиц в SQL Server

Выявить связи между таблицами в SQL Server можно обратившись к системным представлениям. Представленный ниже запрос вернёт информацию о всех внешних ключах:


SELECT
fk.name AS ForeignKey,
tp.name AS ParentTable,
cp.name AS ParentColumn,
tr.name AS ReferencedTable,
cr.name AS ReferencedColumn
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.tables AS tp ON fk.parent_object_id = tp.object_id
INNER JOIN
sys.tables AS tr ON fk.referenced_object_id = tr.object_id
INNER JOIN
sys.foreign_key_columns AS fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.columns AS cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
INNER JOIN
sys.columns AS cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id


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

#db

👉 @database_info
👍7🥰1