Как стать автором
Обновить
58.02

SQL *

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

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

Оптимизация бэкенда приложения с примерами на Symfony. Часть 1

Время на прочтение 7 мин
Количество просмотров 1.5K
Разработка веб-сайтов *PHP *Symfony *Клиентская оптимизация *SQL *
Из песочницы

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

В текущей статье, рассмотрим темы - n+1, пагинация и индексы. Приятного чтения!

Описание приложения

Рассматриваемый проект - это веб-журнал посещений различных мест людьми с возможностью выгрузки и загрузки журнала в формате XML. Пользователь может загрузить журнал посещений в формате XML через форму на странице /upload, и на основе информации из файла будет заполнена база данных. Вся информация о посещениях будет отображаться на главной странице /index. Экспорт из системы осуществляется через команду, которая преобразует информацию из системы в формат XML и выгружает ее в файл (data.xml).

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 3

Новости

SQL-инъекции для самых маленьких. Часть 3

Время на прочтение 5 мин
Количество просмотров 4.5K
Информационная безопасность *SQL *Тестирование веб-сервисов *CTF *
Перевод

И это заключительная часть цикла статей про SQL-инъекции. В ней мы с вами узнаем, как можно собирать информацию о БД путем применения инъекций и затронем тему слепых SQL-инъекций.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 16

История учебы Васи и конечный автомат на SQL

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 1.7K
Ненормальное программирование *PostgreSQL *Java *SQL *

После выступления на PgConf2023 у меня на выходных появилось время на реализацию идеи, как реализовать логику конечного автомата на SQL в PostgreSQL. Идея применима к любой СУБД, поддерживающей агрегатные функции, определяемые пользователем. И самое грустное, что в одной из самых популярных аналитических баз данных ClickHouse, эту задачу не нашел как вообще можно решить без Python на чистом SQL, хоть автосгенерированном.

Скоро сказка сказывается, да не скоро дело делается... Жил был Вася. Описали летописцы его житие с учебой в виде таблицы. А устои в обществе где он жил, были описаны с помощью конечного автомата. И конечный автомат мудрости - finite-state machine (FSM) был задан в виде таблицы переходов между состояниями, описанными в виде логических выражений на SQL...

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 3

SQL Server 2022: что можно сделать с VLF?

Время на прочтение 4 мин
Количество просмотров 1.2K
Блог компании OTUS SQL *
Перевод

Виртуальные файлы журналов (Virtual Log Files – VLF) — это внутреннее разбиение реальных физических файлов, которое создает Database Engine SQL Server для работы с журналом транзакций. У VLF нет четко определенного размера, и их количество на один физический файл не является фиксированным. VLF создаются компонентом Database Engine во время создания или расширения файлов журналов. Размер VLF рассчитывается динамически на основе размеров существующего журнала и нового файла приращения. За VLF, однако, числится дурная слава, которая заключается в том, что слишком большое количество VLF может вызвать ряд проблем, среди которых можно выделить существенное снижение скорости запуска базы данных, операции резервного копирования и восстановления журналов. Чем больше VLF было сгененрировано, тем дольше процесс восстановления базы данных, что может привести к превышению времени ожидания, ошибкам, связанным с памятью, и целому ряду других проблемам.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 0

Истории

SQL инъекции для самых маленьких Часть 2. UNION запросы

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 6.5K
Информационная безопасность *SQL *Терминология IT CTF *
Перевод

Это вторая по счету статься из цикла про SQL инъекции. В данном статье мы с вами рассмотрим особенности SQL инъекций при использовании команды UNION.

Читать далее
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 7

Дублирование данных для создания ограничений (контролей) на уровне БД

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.1K
PostgreSQL *SQL *Администрирование баз данных *
Кейс
Использование ограничений на стороне базы данных, таких как внешние ключи, проверки значений, требования уникальности, иногда вызывают споры среди разработчиков. Аргумменты «за» и «против» обеих сторон хорошо известны.

Рассмотрим пример, когда ограничения не просто применяются, а реализуют дополнительную логику с помощью дублирования некоторых данных.
Подробнее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 6

Об интересных задачах по SQL

Время на прочтение 7 мин
Количество просмотров 12K
SQL *SQLite *
Из песочницы

Всем доброго дня!

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 10

SQL Server 2022: измерение влияния Extended Events на производительность

Время на прочтение 4 мин
Количество просмотров 649
Блог компании OTUS SQL *
Перевод

Вы когда-нибудь задавались вопросом, насколько Extended Events влияют на производительность вашей рабочей нагрузки? Я много писал о Extended Events и был активным сторонником их использования в качестве альтернативы SQL Trace даже дольше, чем я работаю на SQLskills.com. Но хоть Extended Events и дают нам множество преимуществ при сборе данных с минимальными накладными расходами, все же бывают случаи, когда нам не обойтись без дополнительных накладных расходов на наблюдение даже при использовании Extended Events.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 1

Ультимативная дорожная карта для изучения SQL и баз данных в 2023 году + источники для знаний

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 13K
SQL *Data Mining *Big Data *Учебный процесс в IT Data Engineering *
Роадмэп

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

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 12

NULL в SQL: Что это такое и почему его знание необходимо каждому разработчику

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 8.1K
Анализ и проектирование систем *SQL *Администрирование баз данных *Big Data *Data Engineering *
Туториал

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

История появления NULL в SQL довольно интересна и длинна. В начале 1970-х годов Д. Камерер (D. Chamberlin) и Р. Бойд (R. Boyce) предложили использовать реляционную модель для полной замены иерархических и сетевых моделей данных, которые были актуальны в то время. Полная замена предполагала возможность хранения значений NULL в таблицах структуры базы данных.

Первоначально, NULL был создан как интегральный элемент реляционной модели данных. Это означало, что NULL мог быть использован в качестве значения для любого типа данных (целого числа, строки и т.д.) или даже целой строки (например, таких значений как "неизвестно" или "нет данных").

Когда была разработана SQL, NULL был реализован как специальное значение или маркер, который указывает на отсутствие значения в столбце. Таким образом, в SQL NULL означает отсутствие значения или неопределенное значение.

Однако, NULL создал некоторые проблемы при работе с данными в SQL. Например, если вы выполняете операцию на столбце, содержащем NULL значение, результат операции также будет NULL. Это означает, что использование NULL может приводить к нежелательным результатам, таким как непредсказуемое поведение.

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

Читать далее
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 5

Как изучать SQL в 2023 году

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 40K
SQL *
Из песочницы

В 2023 году SQL (Structured Query Language) остается одним из самых популярных языков программирования, используемых в области баз данных и аналитики данных. Изучение SQL может быть полезным как для тех, кто только начинает свой путь в IT, так и для опытных профессионалов, которые хотят расширить свои знания и навыки. В этой статье мы рассмотрим несколько советов и ресурсов, которые помогут вам изучать SQL в 2023 году, и оставаться в курсе последних тенденций и изменений в этой области.

Согласно данным сайта Indeed.com, в 2023 году требования к кандидатам в вакансиях, связанных с базами данных и анализом данных, включают знание SQL в качестве обязательного навыка. Некоторые из таких популярных вакансий включают в себя SQL Developer, Data Analyst, Database Administrator, Business Intelligence Analyst и другие. Согласно данным сайта Glassdoor, зарплата специалистов, владеющих навыками работы с SQL, может составлять от $50 000 до $100 000 в год в зависимости от региона и уровня опыта. В связи с этим, изучение SQL может быть полезным для тех, кто хочет улучшить свои шансы на рынке труда и получать высокую заработную плату в IT-сфере.

Читать далее
Всего голосов 42: ↑37 и ↓5 +32
Комментарии 57

SQL-инъекции для самых маленьких

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 16K
Информационная безопасность *Тестирование IT-систем *SQL *Тестирование веб-сервисов *CTF *

Мы переходим к технической части статей про тестирование на проникновение. И начнем как всегда с внешнего пути – с эксплуатации веб уязвимостей. И начнем мы с SQL – инъекций.

SQL-инъекция (SQLi) - это уязвимость веб-безопасности, которая позволяет злоумышленнику вмешиваться в запросы, которые приложение делает к своей базе данных. Как правило, это позволяет просматривать данные, которые он обычно не может получить. Это могут быть других пользователей, или любые другие данные, доступ к которым имеет само приложение. Во многих случаях злоумышленник может изменять или удалять эти данные, вызывая постоянные изменения в содержимом или поведении приложения.

Читать далее
Всего голосов 20: ↑16 и ↓4 +12
Комментарии 11

Дефрагментация таблиц в высоко нагруженных базах данных (MSSQL)

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.2K
Высокая производительность *SQL *Серверная оптимизация *Microsoft SQL Server *
Кейс

Хорошо, если у вас небольшие (сотни гигабайт) базы, а ночью или в выходные вы можете себе позволить иметь 'maintenance window' и дефрагментировать таблицы. А если нет? В любом случае дефрагментация многих терабайт может занять дни, так что существование maintenance window становится непринципиальным.

Case study: многие терабайты данных, деятельность связанная с процессингом карт (24/7, maintenance window нет в принципе), MSSQL. Разумеется, Enterprise Edition, разумеется AlwaysOn.

Миф: у нас SSD, поэтому дефрагментация нам не нужна. Еще как нужна! Часто в высоко нагруженных системах не делают дефрагментацию, потому что это сложно. В итоге процент фрагментации выходит на уровень почти 100%, и таблицы занимают в два раза больше страниц, чем нужно. В два раза больше места - это в два раза хуже Buffer Cache Hits Ratio. Это в два раза больше размер full backups. Это в два раза дольше full table scans. Это выше CPU (потому что страницы перемещаются с помощью процессора, а не сами по себе).

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 32

Генерация данных — творчество или рутина?

Время на прочтение 15 мин
Количество просмотров 1.4K
Тестирование IT-систем *PostgreSQL *SQL *Администрирование баз данных *DevOps *
Обзор

Долгие годы люди стремились к всё более реалистичному изображению окружающих их вещей. Много лет прошло от симпатичных наскальных мамонтов до шедевров эпохи Ренессанса и Просвещения. Однако где-то в 19-м веке (примерно, когда стала появляться первая фототехника, ага), что-то пошло не так, и живопись сменила своё направление от реализма к абстракции. Дальше больше; и все "скатилось" до клякс, пятен и потёков, размазанных по холсту или любой другой поверхности стоимостью в миллионы долларов... И при этом зачастую совершенно было непонятно, кто автор "шедевра": 3-х летний ребенок, маститый художник, нейросеть или кот, опрокинувший банку варенья.

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

В этом посте мы рассмотрим основные моменты генерации данных с нуля (на основе схемы БД), а так же на основе уже существующих данных. Рассмотрим способы, методы, особенности и инструменты. А каждый шаг будем иллюстрировать примерами живых и настоящих SQL-запросов (в основном PostgreSQL-flavour, но постараемся и не только). И в итоге убедимся, что SQL позволяет нам не только эффективно работать с уже существующими данными (на минуточку, уже почти на протяжении 50 лет), но с помощью него их можно еще и довольно эффектно придумывать.

А начнем мы конечно же с ChatGPT
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 0

«Серый кардинал»: зачем программистам SQL и для каких задач он используется

Время на прочтение 7 мин
Количество просмотров 5K
Блог компании Яндекс Практикум Программирование *SQL *Исследования и прогнозы в IT *

Исследование команды анализа данных Яндекс Практикума, которое описывает актуальный скилсет в области языка структурированных запросов для разработчиков. 

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

Читать далее
Всего голосов 9: ↑5 и ↓4 +1
Комментарии 4

Не удаляйте временные таблицы, умоляю

Уровень сложности Средний
Время на прочтение 2 мин
Количество просмотров 9.3K
SQL *Microsoft SQL Server *

Об опасном распространяющемся антипаттерне программирования на T-SQL.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 9

Безопасная разработка в Java

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 5.2K
Блог компании OTUS Информационная безопасность *Java *SQL *

Язык программирования Java является одним из самых распространенных языков программирования. На нем написано множество сложных приложений как под Linux, так и под Windows. Однако, как и у любого другого языка программирования, у Java есть свои уязвимости.

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

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 7

Sore query language, или 5 ошибок при первом изучении SQL

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 3.7K
PostgreSQL *SQL *

Эта статья о том, как аналитик изучает основы SQL, какие допускает ошибки и как старается их исправить. В статье будет то, что помогает погрузиться в SQL впервые: схемы и примеры кода, понятия и определения, проблемы и решения. Статья рассчитана на аналитиков-новичков.

Предыстория: аналитик создает отчёты в BI для директора компании «ABC». Аналитик не умеет программировать и подключается к данным по инструкции. Директор требует срочно добавить в отчёт данные из 3 источников: SAP – объем выручки от продаж; HRLink – затраты на персонал; Битрикс – время обработки заявок. 

Аналитик ставит задачу data инженеру на добавление новых данных в BI. Data инженер – единственный специалист по работе с данными в офисе из 400 человек. Он критически оценивает сроки выполнения задачи и объявляет: «Минимум – 2 недели». Такой срок директора не устраивает. Инженер предлагает аналитику альтернативное решение...

И вот какое...
Всего голосов 8: ↑5 и ↓3 +2
Комментарии 8

Как выбрать для своего конвейера данных максимально эффективную архитектуру

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 3.2K
Блог компании билайн Высокая производительность *SQL *Администрирование баз данных *Хранение данных *
Туториал

Привет! Меня зовут Михаил Благов, я руководитель департамента «Чаптер инженеров данных и разработчиков» в beeline tech. В этом посте я хочу поделиться способом, с помощью которого можно выбрать подходящую архитектуру для конвейера данных в зависимости от требований к нему. В частности, обсудим паттерн CDC (change data capture, aka «захват изменений»), основная идея которого — быстрая репликация какого-то источника в аналитическое хранилище. 

Под катом мы:

- познакомимся с вариантами архитектуры конвейеров данных: из каких компонентов и как его можно собирать,

- рассмотрим и сравним четыре разные архитектуры конвейеров.

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

Начнем с матчасти

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 3

SQL HowTo: крупицы золота в реестре

Уровень сложности Сложный
Время на прочтение 7 мин
Количество просмотров 5.5K
Блог компании Тензор Высокая производительность *PostgreSQL *SQL *Алгоритмы *
Туториал

В большинстве учетных систем, типа нашего СБИС, рано или поздно возникает проблема быстрого отображения реестра, в который по просьбам бизнес‑пользователей накручено несколько комбинируемых фильтров с очень редкой выборкой, ну никак не ложащихся в вашу красивую структуру базы данных и индексов базовой таблицы реестра — что‑нибудь типа "список продаж покупателям, чей день рождения выпадает на 29 февраля".

Универсального способа сделать «хорошо» тут нет, но я расскажу про модель запроса, которая позволит вам дать пользователю быстрый отклик, но при этом весьма эффективно с точки зрения PostgreSQL.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 9

Вклад авторов