Обновить
128K+

SQL *

Формальный непроцедурный язык программирования

85,62
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

PostgreSQL Antipatterns: убираем медленные и ненужные сортировки

Время на прочтение5 мин
Охват и читатели22K
«Просто так» результат SQL-запроса возвращает записи в том порядке, который наиболее удобен серверу СУБД. Но человек гораздо лучше воспринимает хоть как-то упорядоченные данные — это помогает быстро сравнивать соответствие различных датасетов.

Поэтому со временем у разработчика может выработаться рефлекс «Дай-ка я на всякий случай это вот отсортирую!» Конечно, иногда подобная сортировка бывает оправдана прикладными задачами, но обычно такой случай выглядит как в старом анекдоте:
Программист ставит себе на тумбочку перед сном два стакана. Один с водой — на случай, если захочет ночью пить. А второй пустой — на случай, если не захочет.
Давайте разбираться — когда сортировка в запросе точно не нужна и несет с собой потерю производительности, когда от нее можно относительно дешево избавиться, а когда сделать из нескольких — одну.

Читать дальше →

Базы данных: большой обзор типов и подходов. Доклад Яндекса

Время на прочтение28 мин
Охват и читатели91K
Это конспект лекции Татьяны Денисовой tdenisova — бэкенд-разработчика в Яндекс.Учебнике. Вы узнаете, какие бывают базы данных, какие их особенности важно помнить, как в работе с данными учитывать характеристики системы и планы масштабирования, в какую из тем нужно углубиться для решения конкретной задачи. А также как при возникновении багов определить, является ли работа с БД источником проблемы (и если да, то в какую сторону копать).



— О чем именно мы будем говорить? Не о примитивных селектах и джойнах — о них, я думаю, большинство из вас уже знает.
Читать дальше →

Импорт/экспорт баз данных. Что нужно в подобных приложениях? Опрос

Время на прочтение1 мин
Охват и читатели6.8K


Приложений для конвертации данных в БД очень много и у каждого есть какая-то особенность. Так как сам пишу универсальное приложение ImportExportDataSql для импорта/экспорта данных (пока только Microsoft SQL Server и под Windows), то хочу собрать статистику о том, какими функциями вы пользуетесь в подобных приложениях и за что Вам нравится то или иное приложение?

Надеюсь, что у Вас найдется пару минут, чтобы принять участие в опросе.
Читать дальше →

Шифрование в MySQL: хранилище ключей

Время на прочтение6 мин
Охват и читатели7.9K
В преддверии старта нового набора на курс «Базы данных» подготовили для вас перевод полезной статьи.





Прозрачное шифрование данных (Transparent Data Encryption, TDE) появилось в Percona Server for MySQL и MySQL довольно давно. Но задумывались ли вы когда-нибудь о том, как оно работает под капотом и какое влияние TDE может оказывать на ваш сервер? В этой серии статей мы рассмотрим, как TDE работает внутри. Начнем с хранения ключей, так как оно требуется для работы любого шифрования. Затем подробно рассмотрим как работает шифрование в Percona Server for MySQL/MySQL и какие дополнительные возможности есть в Percona Server for MySQL.
Читать дальше →

Мониторинг места в хранилищах

Время на прочтение8 мин
Охват и читатели5.4K

Всем привет Хабровчане!!

Одной из проблем хранилищ данных, которая часто возникает в процессе работы - это постоянное увеличение их размеров. А добавление все новых и новых источников данных только ускоряет заполнение места на дисках.

Да, конечно же настройка чистки самых больших таблицы и периода историцируемости позволяет сократить неконтролируемое увеличение места. Но если речь идет о хранилищах, которые бодро наполняются и добавляются всё новые "большие" таблицы, и количество их увеличивается то вопрос места в DWH всегда становится ребром....

Читать далее

PostgreSQL Antipatterns: «Бесконечность — не предел!», или Немного о рекурсии

Время на прочтение4 мин
Охват и читатели9.6K
Рекурсия — очень мощный и удобный механизм, если над связанными данными делаются одни и те же действия «вглубь». Но неконтролируемая рекурсия — зло, которое может приводить или к бесконечному выполнению процесса, или (что случается чаще) к «выжиранию» всей доступной памяти.


СУБД в этом отношении работают по тем же принципам — "сказали копать, я и копаю". Ваш запрос может не только затормозить соседние процессы, постоянно занимая ресурсы процессора, но и «уронить» всю базу целиком, «съев» всю доступную память. Поэтому защита от бесконечной рекурсии — обязанность самого разработчика.

В PostgreSQL возможность использовать рекурсивные запросы через WITH RECURSIVE появилась еще в незапамятные времена версии 8.4, но до сих пор можно регулярно встретить потенциально-уязвимые «беззащитные» запросы. Как избавить себя от проблем подобного рода?
Читать дальше →

10 приёмов работы с Oracle

Время на прочтение26 мин
Охват и читатели76K
В Сбере есть несколько практик Oracle, которые могут оказаться вам полезны. Думаю, часть вам знакома, но мы используем для загрузки не только ETL-средства, но и хранимые процедуры Oracle. На Oracle PL/SQL реализованы наиболее сложные алгоритмы загрузки данных в хранилища, где требуется «прочувствовать каждый байт».

  • Автоматическое журналирование компиляций
  • Как быть, если хочется сделать вьюшку с параметрами
  • Использование динамической статистики в запросах
  • Как сохранить план запроса при вставке данных через database link
  • Запуск процедур в параллельных сессиях
  • Протягивание остатков
  • Объединение нескольких историй в одну
  • Нормалайзер
  • Визуализация в формате SVG
  • Приложение поиска по метаданным Oracle
Читать дальше →

Переезжаем на ClickHouse: 3 года спустя

Время на прочтение19 мин
Охват и читатели26K
Три года назад Виктор Тарнавский и Алексей Миловидов из Яндекса на сцене HighLoad++ рассказывали, какой ClickHouse хороший, и как он не тормозит. А на соседней сцене был Александр Зайцев с докладом о переезде на ClickHouse с другой аналитической СУБД и с выводом, что ClickHouse, конечно, хороший, но не очень удобный. Когда в 2016 году компания LifeStreet, в которой тогда работал Александр, переводила мультипетабайтовую аналитическую систему на ClickHouse, это была увлекательная «дорога из желтого кирпича», полная неведомых опасностей — ClickHouse тогда напоминал минное поле.

Три года спустя ClickHouse стал гораздо лучше — за это время Александр основал компанию Altinity, которая не только помогает переезжать на ClickHouse десяткам проектов, но и совершенствует сам продукт вместе с коллегами из Яндекса. Сейчас ClickHouse все еще не беззаботная прогулка, но уже и не минное поле.

Александр занимается распределенными системами с 2003 года, разрабатывал крупные проекты на MySQL, Oracle и Vertica. На прошедшей HighLoad++ 2019 Александр, один из пионеров использования ClickHouse, рассказал, что сейчас из себя представляет эта СУБД. Мы узнаем про основные особенности ClickHouse: чем он отличается от других систем и в каких случаях его эффективнее использовать. На примерах рассмотрим свежие и проверенные проектами практики по построению систем на ClickHouse.


PostgreSQL 13: happy pagination WITH TIES

Время на прочтение2 мин
Охват и читатели14K
На прошедшей неделе вышло сразу две статьи (от Hubert 'depesz' Lubaczewski и автора самого патча Alvaro Herrera), посвященные реализованной в грядущей версии PostgreSQL 13 поддержке опции WITH TIES из стандарта SQL:2008:
OFFSET start { ROW | ROWS }
FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES }
Что это, и как оно избавляет от проблем с реализацией пейджинга, о которых я рассказывал в статье «PostgreSQL Antipatterns: навигация по реестру»?


Читать дальше →

Морской бой в PostgreSQL

Время на прочтение5 мин
Охват и читатели13K

Программисты ведут ожесточенные споры о вреде и пользе хранимых процедур в базах данных. Сегодня мы отвлечемся от них и снова сделаем невероятное в невозможных условиях.

Сегодня разработчики по возможности стараются не выстраивать бизнес-логику в базах данных. Тем не менее, находятся энтузиасты, которые бросают себе вызов и создают, например, матчер биржи, а иногда целые компании переводят серверную часть на хранимые процедуры БД. Авторы таких проектов утверждают, что на базах данных можно сделать все, что угодно, если захотеть.
Читать дальше →

Машинное обучение в среде SQL Server

Время на прочтение3 мин
Охват и читатели6.2K


Инструментарий ML внутри SQL Server

В этой статье описаны шаги по созданию процедуры, которая использует набор данных mtcars, входящий в состав R, на основе которой создается простая обобщенная линейная модель (ОЛМ), способная прогнозировать вероятность оснащения автомобиля механической коробкой передач. Вторая процедура предназначена для оценки — она вызывает модель, созданную в первой процедуре, для вывода набора прогнозов на основе новых данных.
Читать дальше →

Производительность вычисляемых столбцов в SQL Server

Время на прочтение9 мин
Охват и читатели16K
Перевод статьи подготовлен специально для студентов курса «MS SQL Server Developer».





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

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

Вычисляемый столбец — это виртуальный столбец, значение которого вычисляется на основе значений в других столбцах таблицы. По умолчанию вычисленное значение физически не сохраняется, а вместо этого SQL Server вычисляет его при каждом запросе столбца. Это увеличивает нагрузку на процессор, но уменьшает объем данных, которые необходимо сохранять при изменении таблицы.
Читать дальше →

HackTheBox. Прохождение Multimaster. Burp+Sqlmap. AD users from MSSQL. Уязвимость в VSCode. AMSI bypass и CVE ZeroLogon

Время на прочтение7 мин
Охват и читатели11K

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

В данной статье очень много всего. Посмотрим как для удобства совместить Burp Suite и sqlmap, узнаем как получить пользователей домена имея доступ к MSSQL, эксплуатируем уязвимость в Visual Studio Code, блокируем AMSI, выполняем AS-REP Roasting для получения учетных данных и повышаем привилегии из группы Server Operators. А в качестве демонстрации новой уязвимости ZeroLogon, захватим эту же машину другим путем меньше чем за 5 минут.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →

Ближайшие события

С нуля до автоматизации контейнеров за 7 минут

Время на прочтение6 мин
Охват и читатели3.5K

В статье ранее (на португальском) я рассказал, как создать полнофункциональный бэкенд GraphQL, используя только образ Docker и файл конфигурации. Все это можно найти на сайте Azure. А сейчас давайте поговорим о том, как автоматизировать развертывания, созданные для нашего хостинга, и обновления нашей серверной части!


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


Вместо этого мне бы хотелось, чтобы с каждым push в главной ветке генерировалась новая версия файла и обновление отправлялось на сайт Azure. Однако я не хочу использовать для этого другие инструменты. Мне бы хотелось, чтобы весь стек был максимально простым, так как мы пользуемся только GitHub и Azure. Нет ничего проще, чем продолжать пользоваться GitHub для автоматизации, верно?


Вот почему мы будем использовать GitHub Actions


Читать дальше →

Возможности ClickHouse для продвинутых разработчиков. Алексей Миловидов (2018г)

Время на прочтение23 мин
Охват и читатели22K


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

Сравнение схем двух баз данных

Время на прочтение3 мин
Охват и читатели12K

При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).

Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate.

Одним из таких решений, сочетающих бесплатность и удобство использования, является Compalex.

Читать далее

Введение в графовые базы данных SQL Server 2017

Время на прочтение8 мин
Охват и читатели27K
В преддверии старта курса «MS SQL Server Developer» подготовили для вас еще один полезный перевод.




Графовые базы данных — это важная технология для специалистов по базам данных. Я стараюсь следить за инновациями и новыми технологиями в этой области и, после работы с реляционными и NoSQL базами данных, я вижу, что роль графовых баз данных становится все больше. В работе со сложными иерархическими данными малоэффективны не только традиционные базы данных, но и NoSQL. Часто, с увеличением количества уровней связей и размера базы, наблюдается снижение производительности. А с усложнением взаимосвязей увеличивается и количество JOIN.
Читать дальше →

Забиваем телескопом гвозди или нестандартные способы использования ClickHouse. Александр Зайцев (2018г)

Время на прочтение18 мин
Охват и читатели6.8K


ClickHouse — open-source DBMS от Яндекса — традиционно используется для аналитики различного рода логов или потоков событий от онлайн-систем. Однако, гибкость ClickHouse позволяет применять его для более широкого класса задач.

SQL HowTo: курсорный пейджинг с неподходящей сортировкой

Время на прочтение3 мин
Охват и читатели8.1K
Этот пост родился как расширенный ответ на умозрительную задачу, обозначенную в статье «Хроники пэйджинга».

Пусть у нас есть реестр документов, с которым работают операторы или бухгалтеры в СБИС, вроде такого:



Традиционно, при подобном отображении используется или прямая (новые снизу) или обратная (новые сверху) сортировка по дате и порядковому идентификатору, назначаемому при создании документа — ORDER BY dt, id или ORDER BY dt DESC, id DESC.

Типичные возникающие при этом проблемы я уже рассматривал в статье «PostgreSQL Antipatterns: навигация по реестру». Но что если пользователю зачем-то захотелось «нетипичного» — например, отсортировать одно поле «так», а другое «этак»ORDER BY dt, id DESC? Но второй индекс мы создавать не хотим — ведь это замедление вставки и лишний объем в базе.

Можно ли решить эту задачу, эффективно используя только индекс (dt, id)?
Читать дальше →

Хроники пэйджинга

Время на прочтение17 мин
Охват и читатели10K

Вот и меня посетило желание что-нибудь написать для читателей Хабра. Чем же ещё заняться в отпуске?


Казалось бы, про пейджинг уже написано всё, что только можно было. И этот текст тоже на уникальность и открытия не претендует. Но, по крайней мере, лично мне не попадалось таких текстов, чтобы тема пейджинга в реляционных базах была раскрыта не отдельными аспектами, а последовательно и подробно. Поэтому я всё-таки попробую и буду надеяться, что хотя бы одна-две детали в этом тексте покажутся читателю интересными.

Читать дальше →