Механизм реализации транзакций - основная часть реляционных баз данных. Он упрощает разработку приложений, в которых гарантируется целостность данных. Стандарт SQL регламентирует, часть свойств по поддержке транзакций, но многие детали не стандартизованы. Как следствие, реализация поддержки транзакций в разных базах данных может существенно различаться. В настоящее время, многие пытаются перейти с Oracle на PostgreSQL. Для миграции приложений важно понимать различия в реализации работы транзакций, иначе можно столкнуться с неприятными сюрпризами, которые могут поставить под угрозу производительность и целостность данных. Поэтому Лоренс Альбе решил, что полезно сравнить реализацию работы транзакций в Oracle и PostgreSQL и свести различия в одной статье.

Oracle *
Система управления базами данных
Новости
Работа над ошибками

Достаточно большой период времени занимался технической поддержкой СУБД Oracle. Накопилось некоторое количество историй и заметок на полях по этому поводу, не могу не поделиться ими с вами. В общем — садимся по удобнее, берем попкорн, чашку горячего чая или кофе.. Дело было так.
Загадка внезапно умирающего процесса Oracle: как мини-дамп помог найти причину

Привет, Хабр! Меня зовут Павел, я ведущий архитектор в «Инфосистемы Джет», и это мой дебют на этой площадке.
Работа с Oracle Data Integrator (ODI): прямой доступ к метаданным

Работая с Oracle Data Integrator (ODI), мы ценим его графический интерфейс за автоматизацию рутины и удобство разработки. Однако, когда проект масштабируется до десятков пакетов и сотен сущностей, GUI перестает быть оптимальным инструментом для отслеживания потоков данных, глубокого анализа и аудита зависимостей.
В таких случаях ключом к эффективности становится прямое взаимодействие с метаданными ODI через SQL‑запросы к его репозиториям. Эта статья посвящена именно этому — практической работе со структурой репозиториев ODI и детальному разбору SQL‑запроса для построения потоков данных.
Сервер, который не хотел жить

Привет, Хабр!
На связи сервисная команда «Инфосистемы Джет». Сегодня хотим рассказать про один из технических кейсов. На его решение должна была уйти пара часов. Вместо этого он съел четыре дня нашей жизни. Спустя почти десяток лет он регулярно вспоминается в обсуждениях за обедом как один из непростых в диагностике. На днях обсуждали его — почему бы теперь не рассказать о нем вам? :) Приступим.
Соединяем AI и реляционную базу данных

На статью данный текст точно не тянет, скорее это маленькая заметка. Как известно свои дети и свои идеи они всегда самые лучшие. Я давно работаю с реляционными базами и очень люблю язык SQL за его формализм, скорее всего из-за этой моей профдеформации и родилась эта мысль. На работе ко мне иногда обращались сделать выгрузку в CSV файл из базы для обучения моделей или анализа данных, и я подумал, а зачем выгружать данные, а потом иногда загружать обратно результат в базу. Почему не сделать так что бы результат запроса сразу отправлялся на обработку в AI и затем выдавался ответ на запрос. Нам всего лишь нужна SQL функция которая берет результат запроса, заворочает его в вызов к модели, а потом выдает результат. Понятно, что серебряной пули нет и данный подход не везде будет работать, например, такой подход не подразумевает асинхронность, а значит если нужна высокая производительность, то данный подход не очень подходит, с другой стороны сейчас запросы к AI не дёшевы и если вы пошлете 100 запросов в секунду, не дождавшись ответа на предыдущие то скорее всего получите ошибку. Я думаю в будущем это будет стандартная функции в базах данных.
Теперь рассмотрим простейшую реализацию данной функции. Под рукой был PostgreSQL, но можно реализовать это и для ORACLEили других баз. Для этого нам понадобится расширение. В качестве AI будем использовать Groq. Первое что нам надо это получить API ключ. Сама функция очень простая.
Пример реализации слоя приложения persistence layer без использования ORM фреймворка
Слой приложения persistence layer является в определённом смысле уникальным в смысле узкой направленности его функционала по сравнению с другими слоями приложения. Если рассматривать его только для работы с реляционными базами данных, то реализацию функционала слоя можно разбить на два основных варианта - с использованием ORM фреймворка и без использования ORM фреймворка. Каждый из этих вариантов можно реализовать достаточно универсальным образом.
В этой статье рассмотрен пример реализации слоя persistence layer без использования ORM фреймворка. Предлагаемое решение является простым и в тоже время достаточно универсальным для использования в языках программирования, поддерживающих объектную модель.
Только хардкор, только мануал: репликация данных

Привет, Хабр!
Каждая компания стремится к тому, чтобы данные были не только доступны в нужный момент, но и надежно защищены (спасибо, КЭП!). Более того, необходимость обеспечения безопасности ЗОКИИ и требований по импортозамещению ставит новые задачи в области интеграции систем и миграции данных. Один из способов разобраться с этими вызовами — репликация данных. Она помогает компаниям справляться с растущими нагрузками, обеспечивает защиту данных и облегчает миграцию между различными платформами. Однако ее успешное внедрение требует тщательной подготовки, внимательного выбора стратегии и регулярного мониторинга. Хватит слов – за дело! В этой статье мы покажем сразу несколько технических решений.
Аналитические запросы теста TPC-H в PostgreSQL

В статье рассматривается использование теста TPC-H с PostgreSQL и проблемы, связанные с запросами Q17-Q20 теста.
Введение
Вместе с PostgreSQL поставляется утилит pg_bench с "TPC-B like" тестом. Кроме этого теста были созданы тесты TPC-R для отчётов, TPC-D для OLAP, TPC-W для заказов в веб-магазине, которые не получили распространения. На основе TPC-D был создан более удачный тест TPC-H для хранилищ данных и аналитических запросов ("OLAP нагрузка"). В тесте используется 8 таблиц и 17 ограничений целостности. В TPC-H выделены номинации по размерам обрабатываемых данных от "до 100Гб" до 30-100Тб. Тест TPC-H предназначен для хранилищ данных, включает в себя 22 запроса, которые называют Q1 ... Q22.
Запросы теста TPC-H не меняют данные в таблицах, а значит, для повторных тестирований не нужно пересоздавать или вакуумировать таблицы. В тестах TPC-B, TPC-C, TPC-E запросы довольно простые. В реальных приложениях запросы более сложные, чем в этих тестах. Поэтому для тестирования того, как СУБД выполняет запросы, которые могут встретиться в реальных приложениях, можно использовать все или отдельные запросы из теста TPC-H. Для быстрого аудита производительности различных СУБД используют вариант с 1Гб данных. В этом варианте запросы выполняются быстро, не нужно много памяти под экземпляр СУБД и много места на диске. Можно найти программы или скрипты для большинства СУБД, например, для PostgreSQL, Oracle Database, MySQL. После теста TPC-H появился тест TPC-DS с 99 запросами, но он менее популярен.
Интеграционные решения на примере продукта «Цифровая карта магазина»

Всем привет!
Меня зовут Алексей, я старший аналитик команды «Цифровая карта магазина». Сегодня я хочу рассказать про различные варианты интеграции с внешними системами, какие подходы и технологии мы использовали при их реализации и что из этого вышло.
О продукте «Цифровая карта магазина»
Наш продукт – это цифровой двойник розничного магазина, предназначенный для визуализации и управления расстановкой торгового оборудования, презентационными поверхностями на торговом оборудовании, размещения различных товарных объектов на презентационных поверхностях.
Тестирование БД в легаси-проекте: повышение качества кода и стабильности системы в «Цифровой карте магазина»

В этой статье я хотел бы поделиться с вами моим опытом написания юнит-тестов для базы данных (БД) в рамках легаси-проекта. Я выбрал формат ретроспективы, чтобы показать, как все начиналось, к чему мы пришли и какой путь был пройден в разработке юнит-тестов для проекта «Цифровая карта магазина». Возможно, статья будет полезна начинающим разработчикам баз данных или тем, кто хочет начать писать юнит-тесты для Oracle, но не знает, с чего начать.
Внедряем 1С по-взрослому в химпроме: 10 заповедей успешного перехода на 1С:ERP

Привет, Хабр! Сегодня расскажем вам историю о том, как за 7 месяцев перевести крупное химическое предприятие с Oracle на 1С и не сойти с ума. Вы не ослышались — за 7 месяцев мы внедрили комплекс решений 1С:Корпорация в ПАО «КуйбышевАзот», автоматизировав 9 подсистем и 284 бизнес-процесса.
Многие сейчас подумали: «Наверняка там куча костылей и недоделок». Спешим заверить — это реальный кейс, и система работает в штатном режиме в условиях промышленной эксплуатации без дублирования информации в исторической системе. Более того, мы сделали это без остановки непрерывного производства и критичных бизнес-процессов.
Где я учился, чтобы перейти в it сферу и преуспеть

Данная статья является продолжением этой статьи: Инструкция: как перейти в сферу it, но с перечнем курсов, которые я закончил (это тоже часто спрашивают). Можете считать это рекламой пройденных мною курсов, а можете и не считать.
Ближайшие события
Использование полиморфных табличных функций в Oracle

Привет! Меня зовут Зураб Диаконашвили, я разработчик в компании SM Lab. Сегодня поговорим об использовании полиморфных табличных функций в Oracle и рассмотрим их работу на примерах.
При работе с Oracle используются SQL-запросы – они помогают управлять базами данных, представленными в виде таблиц. Мы получили задачу на динамическое добавление полей в стационарный набор полей сущности. Для этого мы решили попробовать PTF-функцию (пользовательскую табличную функцию, которая вызывается в предложении FROM) и сравнить результат её работы с обычным SQL PIVOT и JavaScript.
Полиморфные табличные функции (PTF) являются частью стандарта SQL: 2016. В Oracle они представлены в версии 18c.
Что необходимо знать при работе с PTF:
Демистификация транзакций и исключений с помощью Spring

На основе статьи Arpendu Kumar Garai "Demystifying Transactions and Exceptions with Spring", от 31 января 2023 года.
Spring Framework обеспечивает обширную поддержку транзакций. Но прежде чем мы углубимся в концепции управления транзакциями, давайте разберемся с основной концепцией транзакции.
Транзакция базы данных (СУБД) — это серия из одной или нескольких операций, выполняемых как единая атомарная единица работы. Это означает, что либо все операции в транзакции завершаются успешно, либо ни одна из них не применяется к базе данных. Транзакция может состоять из одной команды, группы команд или любых других действий с базой данных. Любая СУБД, поддерживающая транзакции, должна гарантировать качество ACID для сохранения целостности данных.
ACID (от англ. atomicity, consistency, isolation, durability) — набор требований к транзакционной системе, обеспечивающий наиболее надёжную и предсказуемую её работу.
Основные требования:
Как я запустил 99* контейнеров с Oracle Database 21c Express Edition внутри Podman на отечественной ОС

В статье рассматривается пошаговое создание образов «с нуля» для контейнерного движка Podman. Внутрь контейнера «упакована» база данных Oracle Database 21c Express Edition. И всё это отечественной операционной системе РЕД ОС.
*2 контейнера
Миграция СУБД Oracle с RISC на Linux-x86 с помощью кроссплатформенных переносимых табличных пространств — Часть 4

Введение
В первой части статьи была рассмотрена основная проблема при миграции СУБД Oracle с RISC-платформ на Linux x86 - различие в форматах хранения (Endian) и необходимость конвертации блоков в файлах данных при миграции. Также кратко была описана технология миграции с помощью транспортируемых табличных пространств, включая вариант с инкрементальными резервными копиями, который позволяет снизить время простоя (downtime) при миграции.
В второй части статьи был описан алгорим миграции с помощью технология Full Transportable Export/Import (FTEX) с использованием скриптов M5, поставляемых компанией Oracle.
В третьей части статьи были описаны проблемы возникающие при миграции крупных промышленных баз и приведены возможные варианты их решения.
Введение в PL/SQL

Для меня PL/SQL есть логичное продолжение изучения SQL, но по нему много и статей, и курсов, причем даже на русском языке. С другой стороны, PL/SQL раскрывается достаточно редко, особенно среди бесплатных ресурсов, так что… Начинаем :)
По мотивам одного сбоя в БД Oracle

Всем привет! Я Тимур, инженер в команде Databases Т-Банка. Занимаюсь решением проблем и настройкой производительности СУБД Oracle и PostgreSQL Oracle — это СУБД для наших критичных нагруженных legacy систем, системы построенные на новой архитектуре используют PostgreSQL.
Расскажу о случае конкуренции на одной критичной БД. В какой-то момент перестали проходить транзакции из-за конкуренции за ITL-слоты на вставке в таблицу. Проблема, конечно, была решена, но хочу порассуждать о том, как можно расследовать такие инциденты хорошо известными способами. А еще рассмотрим, как можно подсмотреть за некоторыми аспектами внутреннего устройства СУБД.
Где циклу while нет альтернативы

Уверен многие тру-программисты и без меня знают их, но я решил собрать во едино все реализации циклов через while, которыми я активно пользуюсь, как автоматизатор, тестировщик и разработчик ETL.