Базы данных (Data Base) – Telegram
Базы данных (Data Base)
8.2K subscribers
568 photos
468 videos
19 files
547 links
Базы данных (Data Base). По всем вопросам @evgenycarter
Download Telegram
⚡️ Совет по работе с базами данных 💡

Иногда вы хотите сделать столбцы уникальными, но не можете сделать это, потому что, например, в таблице все еще существуют строки, помеченные как удаленные, с тем же значением. Тем не менее, вы можете создать это ограничение, включив только неудаленные строки.

#db

👉 @database_info
👍5🎉3
This media is not supported in your browser
VIEW IN TELEGRAM
Интернет вещей -- "новый черный" в высоких технологиях. Мы начинаем "привыкать к хорошему", и вау-эффект сменяется "а, значит можно так было?!" Технологии с использованием индустриальных IoT-решений приходят и в такие глобальные отрасли экономики, как строительство и транспорт.
О том, что транспортная отрасль сталкивается с рядом вызовов, говорили эксперты и участники рынка на Форуме "Цифровая транспортация 2024" @dtla_ru в технологическом кластере "Ломоносов".
В рамках его мероприятий было запущено движение беспилотных грузовиков по трассе М-11, а РЖД и партнёры представили итоги внедрения Интернета вещей.
ГК "ИНСПАРК" @InsparkGroup разработчик отечественной Inspark.IoT Platform, продемонстрировал, насколько прозрачными и управляемыми могут стать такие важнейшие объекты инфраструктуры, как железнодорожный мост, компрессорная станция, участки пути. Их "цифровые двойники" уже передают массивы данных для онлайн -мониторинга обслуживающим специалистам.
По словам Олега Крупенко, генерального директора ГК "ИНСПАРК", скоро
цифровое проектирование по ТИМ-модели и работа с "цифровыми двойниками" станут "золотым стандартом" при  проектировании и эксплуатации транспортных объектов такого масштаба.

Больше новостей Интернета вещей / IoT-технологий 🔜 @InsparkGroup
👍2🔥2
В поисках улучшения производительности базы данных: Всеобъемлющее руководство с 8 ключевыми стратегиями

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

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

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

https://levelup.gitconnected.com/in-search-of-improving-database-performance-a-comprehensive-guide-with-8-key-strategies-3496f2262cdb


#db

👉 @database_info
👍7🎉2
This media is not supported in your browser
VIEW IN TELEGRAM
Компания Uber создала собственную базу данных с нуля. Она получила название Schemaless DB.
В ее рамках они хотели добиться высокой доступности операций записи.

Uber сделала это возможным благодаря использованию умной и простой техники под названием Buffered Writes.
В двух словах, Buffered Writes означает, что каждый запрос на запись хранится как минимум на двух узлах - Primary Leader и Secondary Leader.

Вот как это работает:

Клиент делает запрос в обработчик запросов.

Обработчик запросов отправляет запросы на запись на Secondary Leader. Данные сохраняются в специальной буферной таблице на Secondary Leader.

Затем он также отправляет запрос на запись на Primary Leader. Только если обе записи прошли успешно, клиент получает подтверждение успешной записи.

Задача Primary Leader заключается в репликации данных.

Но если leader выходит из строя до успешной асинхронной репликации, Secondary Leader служит временной резервной копией данных.

Background Worker следит за Primary Follower, чтобы узнать, когда появится запись после репликации

Как только запись появляется на Primary Follower, Background Worker удаляет запись из Buffer Table.

Здесь следует отметить несколько важных моментов:

- Количество вторичных лидеров настраивается

- Secondary leader выбирается случайным образом

- Буферизованные записи используют идемпотентность. Если существует несколько записей с одинаковыми идентифицирующими полями, то не имеет значения, сколько раз был сделан запрос.

#db

👉 @database_info
👍62👎2
Функция STUFF() в SQL

Функция STUFF() в SQL используется для замены части строки другой строкой, начиная с определенной позиции и на заданную длину.

Синтаксис функции:


STUFF (string_expression, start, length, replace_with_expression)


- `string_expression` — это исходная строка, в которую вносится изменение.
- `start` — позиция, с которой начинается замена.
- `length` — количество символов, которые будут удалены из строки.
- `replace_with_expression` — строка, которая будет вставлена на место удаленных символов.

Пример использования:


SELECT STUFF('Hello World', 7, 5, 'SQL');


В этом примере функция заменяет часть строки "World" начиная с 7-й позиции и длиной в 5 символов на строку "SQL". Результат:


Hello SQL


Таким образом, STUFF() позволяет удобно заменять часть строки другой строкой на основе указанных параметров.

#db

👉 @database_info
👍83
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