Pull to refresh

Мелочи, облегчающие жизнь

PostgreSQL *
Postgresql, без сомнения, великолепная СУБД. Она обладает обширнейшими возможностями, отличной документации, и при всем при этом является бесплатной. Однако, всегда найдется что-то, чего пользователю не будет хватать. И в postgresql это легко исправляется, ведь он позволяет создавать функции на языках на любой вкус, будь то Plpgsql, Perl или даже Java.

Приведу пример. Мне всегда не хватало функции, получающей DDL выбранной таблицы. В oracle, например, вы можете воспользоваться для этого средствами пакета dbms_metadata. А вот в postgresql аналога почему-то нет. То есть можно конечно использовать pgdump, но это уже немного не то, мне хотелось бы иметь функцию бд. И так далее, думаю у каждого найдется несколько таких небольших «хотелок».

В любой моей базе я создаю в схеме «public» определенный набор вот таких облегчающих мне жизнь функций. В этом топике я хочу поделиться ими. Приглашаю всех также поделиться в комментариях своими наработками.
Читать дальше →
Total votes 42: ↑37 and ↓5 +32
Views 17K
Comments 23

Наболевшее об исходном коде объектов БД

Oracle *
Sandbox
Представьте такую ситуацию: команда разработчиков работает над программой. При этом исходный код приложения нигде не хранится. Каждый программист с помощью специального декомпилятора выгружает нужный код из бинарника, работает с ним, а потом вновь собирает и отдает на дальнейшую разаработку коллегам.
Как вы думаете, это нормальная ситуация? Думаю, что нет.
Но почему-то такой подход довольно часто применяется при разработке приложений БД.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 4.6K
Comments 29

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть первая

SQL *Microsoft SQL Server *
Sandbox
Tutorial

О чем данный учебник


Данный учебник представляет собой что-то типа «штампа моей памяти» по языку SQL (DDL, DML), т.е. это информация, которая накопилась по ходу профессиональной деятельности и постоянно хранится в моей голове. Это для меня достаточный минимум, который применяется при работе с базами данных наиболее часто. Если встает необходимость применять более полные конструкции SQL, то я обычно обращаюсь за помощью в библиотеку MSDN расположенную в интернет. На мой взгляд, удержать все в голове очень сложно, да и нет особой необходимости в этом. Но знать основные конструкции очень полезно, т.к. они применимы практически в таком же виде во многих реляционных базах данных, таких как Oracle, MySQL, Firebird. Отличия в основном состоят в типах данных, которые могут отличаться в деталях. Основных конструкций языка SQL не так много, и при постоянной практике они быстро запоминаются. Например, для создания объектов (таблиц, ограничений, индексов и т.п.) достаточно иметь под рукой текстовый редактор среды (IDE) для работы с базой данных, и нет надобности изучать визуальный инструментарий заточенный для работы с конкретным типом баз данных (MS SQL, Oracle, MySQL, Firebird, …). Это удобно и тем, что весь текст находится перед глазами, и не нужно бегать по многочисленным вкладкам для того чтобы создать, например, индекс или ограничение. При постоянной работе с базой данных, создать, изменить, а особенно пересоздать объект при помощи скриптов получается в разы быстрее, чем если это делать в визуальном режиме. Так же в скриптовом режиме (соответственно, при должной аккуратности), проще задавать и контролировать правила наименования объектов (мое субъективное мнение). К тому же скрипты удобно использовать в случае, когда изменения, делаемые в одной базе данных (например, тестовой), необходимо перенести в таком же виде в другую базу (продуктивную).
Читать дальше →
Total votes 25: ↑20 and ↓5 +15
Views 597K
Comments 18

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть вторая

SQL *Microsoft SQL Server *
Tutorial

Вступление и DDL – Data Definition Language (язык описания данных)


Часть первая — habrahabr.ru/post/255361

DML – Data Manipulation Language (язык манипулирования данными)


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

Рассказывать про DML я буду по своей последовательности выработанной на личном опыте. По ходу, так же постараюсь рассказать про «скользкие» места, на которые стоит акцентировать внимание, эти «скользкие» места, схожи во многих диалектах языка SQL.

Т.к. учебник посвящается широкому кругу читателей (не только программистам), то и объяснение, порой будет соответствующее, т.е. долгое и нудное. Это мое видение материала, которое в основном получено на практике в результате профессиональной деятельности.

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

Т.к. DML в диалекте БД MS SQL очень сильно связан с синтаксисом конструкции SELECT, то я начну рассказывать о DML именно с нее. На мой взгляд конструкция SELECT является самой главной конструкцией языка DML, т.к. за счет нее или ее частей осуществляется выборка необходимых данных из БД.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 242K
Comments 10

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть третья

SQL *Microsoft SQL Server *
Tutorial

Предыдущие части




О чем будет рассказано в этой части


В этой части мы познакомимся:
  1. с выражением CASE, которое позволяет включить условные выражения в запрос;
  2. с агрегатными функциями, которые позволяют получить разного рода итоги (агрегированные значения) рассчитанные на основании детальных данных, полученных оператором «SELECT … WHERE …»;
  3. с предложением GROUP BY, которое в скупе с агрегатными функциями позволяет получить итоги по детальным данным в разрезе групп;
  4. с предложением HAVING, которое позволяет произвести фильтрацию по сгруппированным данным.

Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 240K
Comments 3

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть четвертая

SQL *Microsoft SQL Server *
Tutorial

Предыдущие части




В данной части мы рассмотрим


Многотабличные запросы:
  • Операции горизонтального соединения таблиц – JOIN
  • Связь таблиц при помощи WHERE-условия
  • Операции вертикального объединения результатов запросов – UNION

Работу с подзапросами:
  • Подзапросы в блоках FROM, SELECT
  • Подзапрос в конструкции APPLY
  • Использование предложения WITH
  • Подзапросы в блоке WHERE:
    • Групповое сравнение — ALL, ANY
    • Условие EXISTS
    • Условие IN

Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Views 212K
Comments 6

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть пятая

SQL *Microsoft SQL Server *
Tutorial

Предыдущие части




В данной части мы рассмотрим


Здесь мы в общих чертах рассмотрим работу с операторами модификации данных:
  • INSERT – вставка новых данных
  • UPDATE – обновление данных
  • DELETE – удаление данных
  • SELECT … INTO … – сохранить результат запроса в новой таблице
  • MERGE – слияние данных
  • Использование конструкции OUTPUT
  • TRUNCATE TABLE – DDL-операция для быстрой очистки таблицы

В самом конце вас ждут «Приложение 1 – бонус по оператору SELECT» и «Приложение 2 – OVER и аналитические функции», в которых будут показаны некоторые расширенные конструкции:
  • PIVOT
  • UNPIVOT
  • GROUP BY ROLLUP
  • GROUP BY GROUPING SETS
  • использование приложения OVER


Операции модификации данных очень сильно связаны с конструкциями оператора SELECT, т.к. по сути выборка модифицируемых данных идет при помощи них. Поэтому для понимания данного материала, важное место имеет уверенное владение конструкциями оператора SELECT.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Views 136K
Comments 11

Используем TSQL для игры в «Балду»

Abnormal programming *SQL *Microsoft SQL Server *
Tutorial
Недавно я вспомнил об замечательной интеллектуальной игре «Балда», с которой я познакомился еще в школьные годы.

На днях я задался вопросом – насколько сложно будет реализовать алгоритм этой игры для компьютерного соперника?

Так как мне больше всего нравится работать с реляционными данными и моим любимым языком является SQL, то я решил совместить приятное с полезным и попробовать написать этот алгоритм используя только TSQL. Это моя первая попытка написать ИИ используя только возможности SQL.

Архив с файлами можно скачать по следующей ссылке – скрипты.
Все слова в словаре в верхнем регистре, а также в нем буквы «Е» и «Ё» считаются за одну (как «Е»).

В результате была создана следующая схема:

Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Views 9.1K
Comments 4

Используем TSQL для игры в «Судоку»

Abnormal programming *SQL *Microsoft SQL Server *
Tutorial
После того как при помощи TSQL была успешна решена «Балда» (статья) я решил попробовать решить на нем «Судоку» (спасибо за идею shavluk).

Решение судоку получилось на удивление достаточно простым.

Базовая схема имеет следующий вид:

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 9.1K
Comments 7

Изменение исходников ( DDL ) на лету

Oracle *System Analysis and Design *SQL *Delirium coding
Tutorial
При сопровождении ERP систем иногда возникает необходимость массового изменения кода процедур, функций, триггеров или пакетов. Например для замены вызова одной процедуры на вызов другой.
Если надо поменять пару процедур, то можно сделать это в ручную, но когда надо изменить несколько сотен объектов, то приходиться задуматься об автоматизации процесса. В статье описан пример автоматизации для СУБД ORACLE 11g.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Views 13K
Comments 14

Возможности PostgreSQL для тех, кто перешел с MySQL

PG Day'17 Russia corporate blog Website development *MySQL *PostgreSQL *SQL *

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


Мы рады сообщить, что подготовка к PG Day'17 Russia идет полным ходом! Мы опубликовали полное расписание предстоящего мероприятия. Приглашаем всех желающих прийти и похоливарить с Антоном лично



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


Почему вообще возникла идея такого доклада? Дело в том, что PostgreSQL сейчас явно хайповая технология, и многие переходят на эту СУБД. Иногда — по объективным причинам, иногда — просто потому что это модно.


Но сплошь и рядом складывается такая ситуация, когда какой-нибудь условный программист Вася вчера писал на MySQL, а сегодня вдруг начал писать на Посгресе. Как он будет писать? Да в целом также, как и раньше, используя лишь самый минимальный набор возможностей новой базы. Практика показывает, что проходят годы, прежде чем СУБД начинает использоваться более менее полноценно.

Читать дальше →
Total votes 59: ↑58 and ↓1 +57
Views 44K
Comments 139

«Истина в последней инстанции» или зачем нужен Database First Design

Programming *Java *SQL *ООP *
Translation

В этой весьма запоздалой статье я объясню почему, по моему мнению, в большинстве случаев при разработке модели данных приложения необходимо придерживаться подхода "database first". Вместо "Java[любой другой язык] first" подхода, который выведет вас на длинную дорожку, полную боли и страданий, как только проект начнет расти.


image
"Слишком занят, чтобы стать лучше" Licensed CC by Alan O’Rourke / Audience Stack. Оригинальное изображение

Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 11K
Comments 109

Топ-65 вопросов по SQL с собеседований, к которым вы должны подготовиться в 2019 году. Часть I

OTUS corporate blog SQL *Microsoft SQL Server *Interview
Translation


Перевод статьи подготовлен для студентов курса «MS SQL Server разработчик»




Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.

Читать дальше →
Total votes 62: ↑33 and ↓29 +4
Views 248K
Comments 87

EF Core + Oracle: как сделать миграции идемпотентными

CUSTIS corporate blog Oracle *.NET *SQL *C# *


Обычно фреймворк EF Core используют в сочетании с MS SQL — другим продуктом Microsoft. Однако это не догма. Например, мы в CUSTIS пишем бизнес-логику на C#, а для управления базами данных используем Oracle. В EF Core есть замечательный механизм миграций, но в нашем случае они не идемпотентны. Дело в том, что Oracle и ряд других БД, например MySQL, не поддерживают транзакционный DDL. Значит, если миграция упадет где-то посередине, ее не получится ни накатить, ни откатить. Как же реализовать идемпотентные миграции на EF Core без MS SQL?
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views 2.9K
Comments 2

Репликация Oracle с Quest Shareplex вместо Oracle GoldenGate в Oracle, PostgreSQL, Kafka и другие приёмники

Gals Software corporate blog Oracle *PostgreSQL *SQL *Database Administration *
Любопытное наблюдение: когда говоришь о репликации Oracle, тебе сразу говорят «да знаем мы про этот GoldenGate!». Конечно, знаете, ведь это решение предлагает непосредственный вендор объекта репликации. При этом за кадром остаются не менее интересные решения. Вендор Quest нам говорит, что в России о Shareplex больше известно в компаниях с иностранным участием, чем в исконно русских. Всё потому, что коллеги из за рубежа рассказали своим российским коллегам о том, что есть такой Shareplex и он очень даже хорош для репликации, а где-то даже превосходит решение от Oracle.



Начиная с Oracle 19c, RAC можно использовать только в версии Enterprise Edition (EE). Если вы решили обновиться до 19c, а у вас одна из предыдущих версий СУБД Oracle Standard Edition работает в режиме RAC, остается несколько вариантов:

  • Переход с SE на EE;
  • Переезд в облако;
  • Конвертация Oracle RAC в Standalone;
  • Использование SE с HA;
  • Репликация.

Возможно, кто-то уже решил для себя эту дилемму. Интересно услышать о принятом вами решении в комментариях. С версии 19c в Oracle также пропадает поддержка Oracle Streams — еще одного инструмента для репликации.

Другой кейс использования репликации — это т.н. ZeroImpact интеграция Oracle с внешними системами посредством чтения Redo/Archive логов. Например, в одном из банков был кейс репликации Oracle в Kafka для того, чтобы оперативно предлагать банковские продукты клиентам, оставившим свои данные на сайте.

Shareplex также поддерживает репликацию в PostgreSQL, что в итоге приводит к снижению стоимости владения СУБД. Кстати, это один из популярных кейсов использования инструмента для репликации.

В этой статье я познакомлю вас с возможностями Shareplex, расскажу о его преимуществах и предложу пилотный проект. Погнали!
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 1.7K
Comments 3

PostGIS 3.2 — обновленный и улучшенный

OTUS corporate blog PostgreSQL *
Translation

PostGIS 3.2 зарелизили в самый последний момент прошлого месяца, чтобы он успел увидеть свет в 2021 году. Эта новая версия PostGIS также поддерживает GEOS последней версии 3.10, благодаря чему мы получили несколько новых фич.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Views 2.6K
Comments 0