Обновить
42.8

SQL *

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

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

Визуализация инструментов обработки данных с Github

Время на прочтение3 мин
Количество просмотров7.6K
В своей работе вы используете MySQL, Postgres или Mongo, а может даже Apache Spark? Хотите знать с чего начинались эти проекты и куда они движутся сейчас? В этой статье я представлю соответствующую визуализацию



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

Интерфейс работы с таблицей: быстро/неудобно — медленно/удобно

Время на прочтение8 мин
Количество просмотров15K
Есть вопросы, которые, казалось бы, не могут быть не решены. Слишком часто мы с ними встречаемся в повседневной жизни. Но посмотришь внимательно — и оказывается, нет, не решены. Все делают по-разному. И не всегда хорошо. Одним из таких вопросов является взаимодействие пользовательского интерфейса работы с таблицей и системы управления базами данных (СУБД).



Требования понятны. Данные должны отображаться быстро, создавать минимальную нагрузку на СУБД и работа с ними должна быть удобна пользователю. Решения вроде тоже все есть. Но все равно даже в очень успешных проектах применены технологии, которые заставляют предположить, что разработчики решили еще раз придумать “самое лучшее” решение.

Хотелось бы рассмотреть современные подходы к решению этой задачи и подумать, есть ли наилучший вариант. И, если нет, когда что лучше использовать.
Читать дальше →

24 Hours of PASS 2016

Время на прочтение6 мин
Количество просмотров6.7K
Март выдался на удивление богатым на события. Не успел выйти SQL Server 2016 RC0, как уже доступен для загрузки RC1. Нововведений в последнем не сильно много, поэтому интересного обзора увы не получится.

Тем не менее, чтобы с пользой скоротать время, в ожидании релиза SQL Server 2016, предлагаю ознакомиться с докладами 24 Hours of PASS, которая прошла 16-17 марта.

Для тех, кто слышит про 24 Hours of PASS впервые… это ежегодная онлайн-конференция, посвященная SQL Server и длящаяся 24 часа. Докладчики из разных частей света сменяют друг друга и рассказывают много интересного про SQL Server. Существует несколько версий 24HOP. Русскоязычная версия данного мероприятия уже не первый год проводится усилиями Андрея Коршикова.

Чтобы не томить в ожидании, список видео-докладов, которые доступны под катом:

  • SQL Server Transaction log. Внутреннее устройство и решение проблем (Андрей Завадский)
  • XML, XQuery и трюки с производительностью (Сергей Сыроватченко)
  • Azure ML. Определение наиболее эффективного классификационного алгоритма для выбранного источника данных (Константин Хомяков)
  • SQL Server In-Memory OLTP: Нестандартные сценарии использования (Дмитрий Короткевич)
  • SQL Server Extended Properties как простейший способ документирования баз данных (Вячеслав Миругин)
  • SQL Server 2016 Reporting Services. Быстрый старт (Андрей Коршиков)
  • Поддержка больших БД на MS SQL Server (Кирилл Панов)
  • SQL Server 2016. Temporal Tables (Алексей Князев)
  • 1+1=10. Использование битовых масок в базах данных (Елена Смоляк)
  • SSAS Tabular 2016 (Евгений Полоничко)
  • Внутри оптимизатора запросов: Query Store (в 2-х частях) (Дмитрий Пилюгин)
  • PowerBI: Визуализация данных в реальном времени (Сергей Лунякин)
  • Анализ производительности Windows приложений на примере SQL Server с использованием стандартного функционала операционной системы (Михаил Комаров)
Подробнее

Строим надёжный процессинг данных — лямбда архитектура внутри Google BigQuery

Время на прочтение5 мин
Количество просмотров23K
В этой статье хочу поделиться способом, который позволил нам прекратить хаос с процессингом данных. Раньше я считал этот хаос и последующий ре-процессинг неизбежным, а теперь мы забыли что это такое. Привожу пример реализации на BiqQuery, но трюк довольно универсальный.

У нас вполне стандартный процесс работы с данными. Исходные данные в максимально сыром виде регулярно подгружаются в единое хранилище, в нашем случае в BigQuery. Из одних источников (наш собственный продакшн) данные приходят каждый час, из других (обычно сторонние источники) данные идут ежедневно.

В последствии данные обрабатываются до состояния пригодного к употреблению разнообразными пользователями. Это могут быть внутренние дашборды; отчёты партнёрам; результаты, которые идут в продакшн и влияют на поведение продукта. Эти операции могут быть довольно сложными и включать несколько источников данных. Но по большей части мы с этим справляется внутри BigQuery с помощью SQL+UDF. Результаты сохраняются в отдельные таблицы там же.
Читать дальше →

Объясняя необъяснимое. Часть 3

Время на прочтение16 мин
Количество просмотров55K
В рамках подготовки к конференции PG Day’16 мы продолжаем знакомить вас с интересными аспектами PostgreSQL. И сегодня предлагаем вам перевод третьей статьи из серии об explain.

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

Сегодня мы перейдем к более сложным операциям.


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

SQL Server 2016 RC0

Время на прочтение9 мин
Количество просмотров53K


На глаза попалась уже вторая новость на Хабре о том, что скоро Microsoft «подружит» SQL Server и Linux. Но ни слова не сказано про SQL Server 2016 Release Candidate, который стал доступен для загрузки буквально на днях.

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

Не пропустите подробности о новом SQL Server 2016 и поддержке Linux, смотрите онлайн мероприятие 10 марта в 18:00 (MCK)

Время на прочтение1 мин
Количество просмотров4.2K
Подключайтесь к прямой трансляции из Нью-Йорка «Презентация платформы управления данными на базе SQL Server 2016»



Добавьте мероприятие в календарь.

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

Когда: 10 марта 2016
Начало трансляции: 18:00 (МСК)
Немного подробностей

Microsoft портирует SQL Server на Linux

Время на прочтение2 мин
Количество просмотров4.3K
SQL Server, флагманский продукт компании Microsoft в области реляционных СУБД, теперь доступен для Linux в виде ранней приватной превью версии. Выпуск финальной версии намечен на середину 2017 г.
Читать дальше →

Microsoft анонсировала Linux версию SQL Server

Время на прочтение1 мин
Количество просмотров51K
image
Компания Microsoft анонсировала поддержку операционных систем семейства Linux в следующей версии SQL Server.

Это очередной шаг по выходу на рынок Linux систем после заключения партнерского соглашения с RedHat.

Также, анонс прокомментировал Марк Шаттлворт, основатель компании Canonical:
“Мы рады работать с Microsoft, когда они приносят SQL Server на Linux. Заказчики уже используют сервисы Azure Data Lake на Ubuntu, а теперь разработчики будут иметь возможность строить новые приложения со всеми возможностями промышленного SQL Server'а.”

На сайте SQL Server также уже появилась информация относительно новых возможностей СУБД.

Релиз версии ожидается в середине 2017 года.

История про хитрожо… индуса, encrypted procedures, DAC и «режим Бога»

Время на прочтение7 мин
Количество просмотров43K
На той неделе пришлось разбираться в логике работы одного бесплатного тула. Почти детективная история вышла с ее автором, который впоследствии оказался индусом канадского происхождения проживающим в Южной Америке.

Конечно же, практическая ценность была не в биографии автора, а в запросах, которые отправлялись приложением на сервер.

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

SELECT
    LogTruncations = (
        SELECT TOP 1 SUM(cntr_value)
        FROM ##tbl_cnt
        WHERE counter_name = 'Log Truncations'
    ),
    LogShrinks = (
        SELECT TOP 1 SUM(cntr_value)
        FROM ##tbl_cnt
        WHERE counter_name = 'Log Shrinks'
    ),
    LogGrowths = (
        SELECT TOP 1 SUM(cntr_value)
        FROM ##tbl_cnt
        WHERE counter_name = 'Log Growths'
    ),
    ...

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

SELECT
    LogTruncations = SUM(CASE WHEN counter_name = 'Log Truncations' THEN cntr_value END),
    LogShrinks = SUM(CASE WHEN counter_name = 'Log Shrinks' THEN cntr_value END),
    LogGrowths = SUM(CASE WHEN counter_name = 'Log Growths' THEN cntr_value END),
    ...
FROM ##tbl_cnt

На этом можно было бы и закончить… Но практически под конец я увидел, что приложение вызывает пользовательские хранимые процедуры из tempdb. Поймал себя на мысли: «Когда приложение успело их создать… и главное зачем?»
Подробнее

Таблица как параметр в Postgresql

Время на прочтение4 мин
Количество просмотров25K
Часто видно жалобы на то, что параметры "не работают". Как же они не работают?

А вот так:

select * from $1 where ...;

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

Сделай сам: SQL JOIN на Java

Время на прочтение7 мин
Количество просмотров85K
Я часто собеседую разработчиков и часто задаю им простой, как кувалда, вопрос — как внутри работает JOIN в SQL? В ответ я обычно слышу бессвязное мычание про волшебные деревья и индексы, которые быстрее. Когда-то мне казалось, что каждый программист специалист должен знать то, с чем работает. Впоследствии жизнь объяснила мне, что это не так. Но мне все еще не понятно, как можно годами теребить базёнку, даже не догадываясь, а что там у нее «под капотом»?

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

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

Объясняя необъяснимое. Часть 2

Время на прочтение8 мин
Количество просмотров86K
Регистрация на конференцию PG Day’16 в разгаре, а мы продолжаем публиковать перевод статей Hubert Lubaczewski об explain и его основных компонентах.

В прошлый раз я писал о том, что показывает вывод explain. Теперь я хочу больше поговорить о разных типах «узлов» / операций, которые вы можете встретить в планах explain.

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

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

Версионирование базы данных на лету

Время на прочтение6 мин
Количество просмотров28K
Здравствуйте, меня зовут Евгений, и я веб разработчик. Несколько лет назад мне перепала функция DBA (Database Administrator), я получил по этому поводу несколько сертификатов и решал соответствующие задачи. Я давно хотел описать задачу версионирования базы данных, но мне казалось, что для этого должны быть какие-то беспроигрышные варианты, которые хорошо знают умелые дяди, а я просто чего-то недопонимаю. Вчерашнее собеседование и последующий поиск по тематическим ресурсам показал, что это не так, и задача действительно сложна, актуальна и не решается однозначно. Разберём её по пунктам.

Что мы версионируем


Мы используем контроль версий только для DDL (Data Definition Language) запросов. Сами данные нас не интересуют. Почему? Рассмотрим два крайних случая.

  1. Данных мало (скажем, менее 50 мегабайт). В этом случае, мы можем просто периодически делать полный дамп базы и смело складывать его в репозиторий.
  2. Данных много (больше гигабайта). В этом случае версионирование нам мало поможет, всё равно разобраться в этом будет довольно проблематично. Целесообразно в данном случае использовать стандартную схему с бекапами и архив логом, которая позволяет нам получить целостную версию базы на любой момент во времени.

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

Использование функций в PostgreSQL как параметризированных представлений

Время на прочтение6 мин
Количество просмотров47K

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

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

Список технических и IT конференций 2016. Часть #3

Время на прочтение3 мин
Количество просмотров7.8K
image

Сегодня закончим цикл статей про IT конференции. Посмотрим на события за Сентябрь-Декабрь 2016 + на все присланные вами дополнения.

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

Чиним MySQL-дамп (меньше чем за 30 строк)

Время на прочтение2 мин
Количество просмотров4.8K
Давным-давно (кажется, в прошлую среду) попался ко мне в руки дамп базы данных MySQL, который следовало немедленно развернуть на моей машине. Зачем это было нужно и откуда взялся дамп, рассказывать не буду, вряд ли это кому-то интересно. Важно то, что дамп был от MySQL 4.1.22 и снят он был при помощи одного широко известного инструмента (версии 5.23).
Разворачиваться у меня он решительно отказался... 
 
Читать дальше →

Что скрывает в себе DEFAULT TRACE?

Время на прочтение11 мин
Количество просмотров16K


Часто вспоминается первая работа… Средненький офис, моник 943N и обогреватель Pentium D под ногами. Как возникал из ниоткуда Борис (нет… не Борис «Бритва») с линейкой в руках и настойчиво просил не делать «больно» серверу.

Именно в те далекие времена я впервые познакомился с профайлером. Пользовательские трейсы оказались очень кстати при отладке приложений и поиске медленных запросов. Потом для себя я открыл DMV и XEvents… и профайлером стал пользоваться реже. Причина такого поступка проста – трейсы очень ресурсоемкие.

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

Объясняя необъяснимое

Время на прочтение11 мин
Количество просмотров68K
Друзья, мы с радостью продолжаем публикацию интересных материалов, посвященных самым разнообразным аспектам работы с PostgreSQL. Сегодняшний перевод открывает целую серию статей за авторством Hubert Lubaczewski, которые наверняка заинтересуют широкий круг читателей.



Одна из первых вещей, которую слышит новоиспеченный администратор баз данных – «используй EXPLAIN». И при первой же попытке он сталкивается c непостижимым:

                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=146.63..148.65 rows=808 width=138) (actual time=55.009..55.012 rows=71 loops=1)
   Sort Key: n.nspname, p.proname, (pg_get_function_arguments(p.oid))
   Sort Method: quicksort  Memory: 43kB
   ->  Hash Join  (cost=1.14..107.61 rows=808 width=138) (actual time=42.495..54.854 rows=71 loops=1)
         Hash Cond: (p.pronamespace = n.oid)
         ->  Seq Scan on pg_proc p  (cost=0.00..89.30 rows=808 width=78) (actual time=0.052..53.465 rows=2402 loops=1)
               Filter: pg_function_is_visible(oid)
         ->  Hash  (cost=1.09..1.09 rows=4 width=68) (actual time=0.011..0.011 rows=4 loops=1)
               Buckets: 1024  Batches: 1  Memory Usage: 1kB
               ->  Seq Scan on pg_namespace n  (cost=0.00..1.09 rows=4 width=68) (actual time=0.005..0.007 rows=4 loops=1)
                     Filter: ((nspname <> 'pg_catalog'::name) AND (nspname <> 'information_schema'::name))

Что бы это могло значить?
Читать дальше →

Приручение строптивого

Время на прочтение10 мин
Количество просмотров22K


Любите ли вы разрабатывать базы данных? Нет, не новомодные NoSQL, а старые добрые реляционные, где вы можете описывать отношения и хранимые процедуры для доступа к данным и логики. Может быть, вы разрабатываете базы данных для PostgreSQL? Если да, то отлично — этот пост определенно для вас.
Все ли инструменты разработки для PostgreSQL вам известны?

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