Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.2K subscribers
568 photos
468 videos
19 files
547 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
Базы данных 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
PostgreSQL: возврат 0, если avg(price) пусто (NULL)

Заменить NULL на 0 в PostgreSQL поможет функция COALESCE(ваша_колонка, 0):


SELECT COALESCE(ваша_колонка, 0) FROM ваша_таблица;

Следовательно, если значение в ваша_колонка равно NULL, будет возвращён 0.

#db

👉 @database_info
👍5
Быстрый выбор случайной строки из большой таблицы MySQL

Для эффективного извлечения случайной записи из большой таблицы в MySQL стоит избегать команды ORDER BY RAND(). Вместо этого используйте уникальный идентификатор id. Сначала определите максимальное значение id, генерируйте случайное число в пределах этого диапазона и затем получите строку с соответствующим id:


-- Отказываемся от полного сканирования таблицы, затратного по времени!
SELECT * FROM your_table
WHERE id >=
(SELECT FLOOR(1 + RAND() *
(SELECT MAX(id) FROM your_table)))
LIMIT 1;

-- Вместо 'your_table' укажите корректное имя вашей таблицы (если она не носит название 'your_table').


Применение этого подхода будет позволять быстро получать случайное значение без лишней нагрузки на сервер. Экономьте свое время!

#db

👉 @database_info
👍5👏2
Быстрое добавление тысяч записей в SQLite через Django

Для высокопроизводительного массового внесения записей в базу данных SQLite через Django используйте функцию bulk_create(). Она позволяет осуществить вставку множества записей за один запрос.


from myapp.models import MyModel

# Подготовим данные для массового внесения
bulk_records = [MyModel(field1='value1', etc.) for _ in range(thousands)]

# А вот и массовое внесение в действии!
MyModel.objects.bulk_create(bulk_records)


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

#db

👉 @database_info
👍2😁1
Топ-10 самых популярных баз данных с открытым исходным кодом

1 - MySQL
2 - PostgreSQL
3 - MariaDB
4 - Apache Cassandra
5 - Neo4j
6 - SQLite
7 - CockroachDB
8 - Redis
9 - MongoDB
10 - Couchbase

#db

👉 @database_info
👍8🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Хотите узнать секрет оптимизации SQL-запросов?

Очень важно понимать порядок выполнения.
В SQL-запросе операторы выполняются в следующем порядке:

1. FROM / JOIN
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. DISTINCT
7. ORDER BY
8. LIMIT / OFFSET

#db

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

https://news.1rj.ru/str/piterspb Канал о Санкт-Петербурге 🌇❤️💙


Системное администрирование 📌
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
👍1
Битовая операция NOT в SQL Server: как переключить бит

Оператор XOR (^) позволяет инвертировать биты в SQL Server. Используя BitColumn = BitColumn ^ 1, вы сможете поменять 0 на 1 и наоборот.


UPDATE ВашаТаблица SET BitColumn = BitColumn ^ 1 WHERE ВашеУсловие;

Этот запрос инвертирует значения в столбце BitColumn для строк, которые соответствуют условию ВашеУсловие.


Введение в битовые операции
Битовые операции — это эффективный инструмент для управления отдельными битами. Они выполняются с помощью операторов AND, OR, XOR и NOT.


Инструментарий для инвертирования бита
Инвертируем все с помощью NOT
Для инверсии всех битов в значении используйте оператор ~:


-- Наблюдаем за инверсией всех битов!
UPDATE ваша_таблица SET ваш_столбец = ~ваш_столбец WHERE ваше_условие;


Инвертирование с помощью вычитания
Элегантный способ инвертирования бит со значениями 0 или 1:


-- Из 0 делаем 1, из 1 — 0. Элегантно, не правда ли?
UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;


Метод инвертирования нескольких битов
Для инвертирования определённых бит при наличии нескольких используйте XOR с битовой маской:


-- Теперь нацеливаемся на определённый бит
UPDATE ваша_таблица SET ваш_столбец = ваш_столбец ^ битовая_маска WHERE ваше_условие;

Битовая_маска — это число, которое в двоичной системе имеет 1 там, где находится нужный бит, и 0 — во всех остальных позициях.

Визуализация
Представьте процесс инвертирования бит как переключение выключателя света:

Исходное состояние Переключить Результирующее состояние
Выкл (0) 🔄 Вкл (1)
Вкл (1) 🔄 Выкл (0)
В SQL это будет выглядеть следующим образом:


UPDATE ваша_таблица SET ваш_столбец = 1 – ваш_столбец WHERE ваше_условие;

До инвертирования: ваш_столбец имеет значение 😐(0) или 😃(1). После инвертирования: теперь значение ваш_столбец противоположное — 😃(1) или 😐(0).

Тонкости работы
Когда вы инвертируете биты, учитывайте следующее:

✔️Тип данных: Удостоверьтесь, что операция выполняется над данными типа bit.
✔️Производительность: Ограничьте обновление условием WHERE, чтобы выполнить процесс эффективно.
✔️Точность инвертирования: Для работы с несколькими битами выберите правильную битовую маску.
✔️Безопасность: Используйте транзакции TRANSACTION для обеспечения надежности операций при работе с несколькими битами или строками.


#db

👉 @database_info
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Краткое руководство по шардингу баз данных

#db

👉 @database_info
👍42
Секреты успешной миграции: как перенести базу данных с выделенного сервера в облако

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

Сегодня мы на практическом примере рассмотрим все нюансы миграции PostgreSQL из выделенного сервера в Managed Service.

https://habr.com/ru/companies/selectel/articles/857590/

#db

👉 @database_info
👍5