Обновить
7.85

Oracle *

Система управления базами данных

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

Дружим ORDER BY с индексами

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


Привет, Хабр!


Я потихоньку перевожу статьи Маркуса Винанда из блога use the index luke.


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

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

Почему нужна инструментальная поддержка пагинации на ключах

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

Всем привет! Я бэкэнд-разработчик, пишу микросервисы на Java + Spring. Работаю в одной из команд разработки внутренних продуктов в компании Тинькофф.



У нас в команде часто встает вопрос оптимизации запросов в СУБД. Всегда хочется еще чуть-чуть быстрее, но не всегда можно обойтись продуманно выстроенными индексами — приходится искать какие-то обходные пути. Во время одного из таких скитаний по сети в поисках разумных оптимизаций при работе с БД я нашел бесконечно полезный блог Маркуса Винанда, автора книги SQL Performance Explained. Это тот самый редкий вид блогов, в котором можно читать все статьи подряд.


Хочу перевести для вас небольшую статью Маркуса. Ее можно назвать в какой-то степени манифестом, который стремится привлечь внимание к старой, но до сих пор актуальной проблеме производительности операции offset по стандарту SQL.

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

Помощник по работе с базами данных GreenPig

Время на прочтение15 мин
Количество просмотров2.5K
  1. Вступление
  2. Подключение библиотеки
  3. Класс Where
  4. Класс Join
  5. Класс Query

      ╔═══╗╔═══╗╔═══╗╔═══╗╔╗─╔╗────╔═══╗╔══╗╔═══╗
      ║╔══╝║╔═╗║║╔══╝║╔══╝║╚═╝║────║╔═╗║╚╗╔╝║╔══╝
      ║║╔═╗║╚═╝║║╚══╗║╚══╗║╔╗─║────║╚═╝║─║║─║║╔═╗
      ║║╚╗║║╔╗╔╝║╔══╝║╔══╝║║╚╗║────║╔══╝─║║─║║╚╗║
      ║╚═╝║║║║║─║╚══╗║╚══╗║║─║║────║║───╔╝╚╗║╚═╝║
      ╚═══╝╚╝╚╝─╚═══╝╚═══╝╚╝─╚╝────╚╝───╚══╝╚═══╝

                            5HHHG
                 HH       HHHHHHH
               9HHHA    HHHHHHHH5
              HHHHHHHHHHHHHHHHHH  9HHHHH5
            5HHHHHHHHHHHHHHHHHHHHHHHHHHH
           HHHHHHHHHHHHHHHHHHHHHHHHHHHH
         ;HHHHHHHHHHHHHHHHHHHHHHHHHHA
          H2   HHHHHHHHHHHHHHHHHHHHHH
               HHHHHHHHHHHHHHHHHHHHHHH9
                HHHHHHHHHHHHHHHHHHHHHHH
                AHHHHHHHHHHHHHHHHHHHHHH
                 HHHHHHHHHHHHHHHHHHHHH9  iHS
                  HHHHHHHHHHHHHHHHHHHHHHhh
                   HHHHHHHHHHHHHHHHHH
                  AA HHHHHHHHHHHHHH3
                 &H  Hi         HS Hr
                 &  H&          H&  Hi
Читать дальше →

Как собрать образ Oracle DB для Testcontainers

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

Код должен тестироваться на той СУБД, с которой он будет работать. Testcontainers — это такая библиотека, которая позволяет использовать в юнит тестах практически любую СУБД с той же лёгкостью, что embedded базы данных типа HSQLDB или H2. Был бы только Docker образ



Именно сборке удобного для использования с Testcontainers докер образа посвящена эта статья. У меня при попытке его сделать возникли проблемы, и тут я делюсь своим решением.
Собирать буду образ для Oracle 11, потому он небольшого размера и мне версии 11 хватает. С другими версиями подход примерно тот же.


Для того, чтобы было понятно, как использовать образ, тут также будет код на Java, который демонстрирует применение образа для тестирования Spring Boot приложений. Способ подключения к testcontainers я привёл, наверное, не самый лучший. Но во-первых он демонстрирует как использовать настройки, заданные при создании образа. Во-вторых он простой. И в-третьих он почти не завязан на Spring, его можно воткнуть даже в джава код, в котором нет ничего, кроме public static void main.


Предполагается, что читатель обладает поверхностным знакомством с Docker и Testcontaners, а также хорошо знает Java. Для сборки нужно использовать linux, если собираете под Windows, нужно будет применить msys2 или что-то в этом духе.


Демонстрационный код залит на гитхаб вот сюда https://github.com/poxu/testcontainers-spring-demo Поправленные скрипты для сборки образа можно посмотреть в моём форке Оракловских инструкций https://github.com/poxu/docker-images/tree/master/OracleDatabase/SingleInstance

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

Золотые ворота: как реплицировать терабайт в час, или Опыт использования CDC на GoldenGate в ВТБ

Время на прочтение6 мин
Количество просмотров18K
Анализировать данные в реальном времени можно разными способами. В ВТБ мы используем технологию Change Data Capture (CDC), реализованную в инструменте Golden Gate Oracle: для нас очень важна скорость, при этом хотелось бы уменьшить объем передаваемых данных и снизить нагрузку на источник. И хотя основная сфера применения этого инструмента — репликации из Oracle и MS SQL, за несколько лет работы с CDC у нас накопилось несколько интересных кейсов, наподобие миграции данных между платформами или разными типами СУБД. Под катом мы поделимся нашим опытом работы с Golden Gate.


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

DataGrip 2019.3: MongoDB, дебаггер, модный прогресс-бар, много новых инспекций

Время на прочтение4 мин
Количество просмотров11K
Привет! Как водится, три раза в году мы рассказываем о том, над чем работали. Это статья о том, что нового в DataGrip 2019.3, а значит и во всех IDE от JetBrains с поддержкой баз данных.


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

Интерфейсы для мониторинга производительности популярных БД в Foglight for Databases

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


В прошлых статьях мы рассказывали о мониторинге различных БД в Quest Foglight for Databases и о подходе к быстрой локализации проблем производительности SQL Server. В этой мы покажем какие ещё дашборды можно использовать на основе собираемых метрик. А метрик этих достаточно. Под катом скриншоты интерфейса и описания к ним.
Читать дальше →

На чем разрабатывать Oracle разработчику в 2019-м году (и после)

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

Некоторое время назад я в очередной раз сменил место работы. Новый работодатель был настолько любезен, что разрешил мне выбрать любую IDE, которая понравится, и оплатить лицензию (но в разумных пределах). Также (в кои-то веки) у меня были права администратора на рабочем компьютере, так что я мог ставить что угодно и пробовать сколько угодно. Я попробовал: Oracle SQL Developer, TOAD, Alt SQL Developer и (ВНЕЗАПНО!) IntelliJ IDEA (PL/SQL Developer не пробовал, но много работал раньше). Если вы регулярно пишете PL/SQL код, или хотя бы время от времени делаете запросы к Oracle Database, думаю, вам будет интересно почитать, к каким выводам я пришел.

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

Создание REST API с Node.js и базой данных Oracle. Часть 5

Время на прочтение6 мин
Количество просмотров5.2K
Часть 5. Создание REST API: разбиение на страницы, сортировка и фильтрация вручную

В предыдущей статье вы завершили построение базовой функциональности API CRUD.

И теперь, когда на маршруте сотрудников выдается запрос HTTP GET, возвращаются все строки таблицы. Это может не иметь большого значения только с 107 строками в таблице HR.EMPLOYEES, но представьте, что произойдет, если таблица будет содержать тысячи или миллионы строк. Такие клиенты, как мобильные и веб-приложения, обычно отображают только часть строк, доступных в базе данных, а затем выбирают больше строк, когда это необходимо — возможно, когда пользователь прокручивает вниз или нажимает кнопку «Далее» на каком-либо элементе управления разбиением на страницы в пользовательском интерфейсе.

Для этого API REST должны поддерживать средства разбиения на страницы возвращаемых результатов. После того, как разбиение на страницы поддерживается, становится необходима возможности сортировки, поскольку данные обычно должны быть отсортированы до применения нумерации страниц. Кроме того, средство фильтрации данных очень важно для производительности. Зачем отправлять данные из базы данных, через промежуточный уровень и полностью на клиент, если это не нужно?
Читать дальше →

Создание REST API с Node.js и базой данных Oracle. Часть 4

Время на прочтение7 мин
Количество просмотров5.4K
Часть 4. Создание API REST: обработка запросов POST, PUT и DELETE

В предыдущей статье вы добавили логику в API для запросов GET, которые извлекали данные из базы данных. В этом посте вы завершите построение базовой функциональности API CRUD, добавив логику для обработки запросов POST, PUT и DELETE
Читать дальше →

Создание REST API с Node.js и базой данных Oracle. Часть 3

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

Часть 3. Создание REST API: обработка запросов GET


В предыдущей статье вы установили соединение с базой данных.

В этой же добавите логику маршрутизации, контроллера и базы данных для обработки HTTP-запроса GET на конечную точку API «employees».

Добавление логики маршрутизации


Express поставляется с классом Router, который упрощает маршрутизацию HTTP-запросов к соответствующей логике контроллера. Пути маршрутов определяют конечные точки URL API и могут содержать параметры маршрута, которые фиксируют значения в URL.

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

Создание REST API с Node.js и базой данных Oracle. Часть 2

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

Часть 2.Создание REST API: основы базы данных


В первой статье вы создали веб-сервер, тут вы создадите модуль, который отвечает за запуск и завершение работы пула соединений с базой данных используя node-oracledb. А также добавите функцию, которая упрощает выполнение простых операторов, автоматически получая и освобождая соединения из пула.
Читать дальше →

Создание REST API с Node.js и базой данных Oracle

Время на прочтение5 мин
Количество просмотров19K
Привет, Хабр! представляю вашему вниманию перевод статьи «Creating a REST API: Web Server Basics».

Часть 1. Создание REST API: основы веб-сервера


Веб-сервер является одним из наиболее важных компонентов REST API. В этом посте вы начнете свой проект API REST, создав несколько начальных каталогов и файлов. Затем вы создадите модуль веб-сервера и подключите его так, чтобы веб-сервер запускался и правильно выключался.

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

cd ~
mkdir hr_app
cd hr_app/
touch index.js
mkdir config
touch config/web-server.js
mkdir controllers
mkdir db_apis
mkdir services
touch services/web-server.js

Файл index.js можно рассматривать как «основной» файл в приложении. Он будет точкой входа в приложение. Мы будем добавлять код в этот файл и файлы web-server.js в каталогах config и services.

Вставьте следующий код в файл Home > hr_app > config>web-server.js

module.exports = {
  port: process.env.HTTP_PORT || 3000
};

В Node.js объект процесса имеет свойство env, которое содержит пользовательскую среду. Я использую это, чтобы установить значение порта в значение переменной среды HTTP_PORT. Если эта переменная среды не определена, значением по умолчанию будет 3000.
Читать дальше →

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

Oracle Database 19c: принципиальные отличия от предыдущих версий

Время на прочтение1 мин
Количество просмотров15K
Слушатели курсов Oracle нашего Учебного центра часто спрашивают о принципиальных отличиях версии Oracle 19c от предыдущих версий (12 и 18). Мы собрали наиболее распространенные вопросы и задали их Олегу Слабоспицкому, эксперту по программным продуктам Oracle и одновременно преподавателю Учебного центра РДТЕХ:

Edition-Based Redefinition. Часть 2

Время на прочтение5 мин
Количество просмотров1.7K
Привет! Как и обещала в предыдущем посте про Edition-Based Redefinition — вот вторая часть.



Итак, с чем мы работаем? Наш основной production сервер — это Oracle 12С, Enterprise Edition. И, что важно отметить, на нем работает несколько десятков приложений одновременно. Почему мы заостряем на этом внимание? Технология относительно новая, она не совсем хорошо обкатана. И было бы нелогичным переводить на нее сразу какие-то критичные системы. Поэтому для себя решили, что будем потихоньку идти от менее критичных систем к более критичным. Соответственно, следующая проблема, которую нам необходимо было понять: как работать c технологией EBR и как организовать интеграцию в той ситуации, когда у нас одна схема версионирована, а другая — нет. В 12 версии Oracle, как оказалось, можно создавать неверсионные объекты, неверсионированные пакеты, неверсионированные представления в версионированной схеме для организации той самой интеграции.
Читать дальше →

DB & DWH MeetUp #5 в Райффайзенбанке

Время на прочтение1 мин
Количество просмотров2.4K
Сообщество Database & Data warehouse приглашает на свой митап, который состоится 26 сентября в офисе Райффайзенбанка в Нагатино



Edition-Based Redefinition: можно ли в production?

Время на прочтение8 мин
Количество просмотров4.1K
Привет! Меня зовут Антонина, я Oracle-разработчик IT-подразделения «Sportmaster Lab». Работаю тут всего два года, но благодаря дружной команде, сплоченному коллективу, системе наставничества, корпоративному обучению, накопилась та самая критическая масса, когда хочется не просто потреблять знания, но и поделиться своим опытом.



Итак, Edition-Based Redefinition. Почему у нас вообще возникла такая необходимость в изучении данной технологии, причем здесь термин «высокая доступность» и как Edition-Based Redefinition поможет нам как Oracle-разработчикам экономить время?

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

Oracle VM Server for SPARC для чайников (How-to)

Время на прочтение6 мин
Количество просмотров9.2K
Небольшой How-to для начинающих работать с ОС Solaris и платформой виртуализации Oracle VM Server for SPARC, ранее известной как Sun Logical Domains.

image

Logical Domains — технология виртуализации и разделения физических ресурсов для линейки UNIX-серверов, основанных на архитектуре SPARC V9, представленная в мае 2007 корпорацией Sun Microsystems.

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

Примеры приведены для ОС Solaris 10, в Solaris 11 стоит учитывать особенности настройки сети.
Читать дальше →

О том как я подготовился и сдал сертификацию Oracle Database SQL (1Z0-071)

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

Зачем написана статья?


image

Когда я готовился к OCA и OCP по Java 8, то нашел много статей на Хабре, благодаря которым выбрал оптимальный путь и сэкономил много времени.


Однако по подготовке именно к OCA Oracle Database SQL (1Z0-071) материалов на Хабре нет и в интернете тоже очень мало. Поэтому я решил написать подробную статью, которая поможет заинтересованным потратить меньше времени и успешно сдать довольно объемный экзамен.

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

Немного финансовой математики: расчёт инфляции и процентов

Время на прочтение18 мин
Количество просмотров13K
Недавно мне пришлось проверить расчёты, которые выполняют коммунальщики моего города. Возник спорный вопрос, разрешить который можно только лишь проведя корректные расчёты. Забегая вперёд, скажу, что коммунальщики считают неправильно. Поэтому здесь мы рассмотрим, как правильно начислять инфляционные затраты и 3% годовых на долг по обязательствам, согласно ГК Украины.

Первая часть описывает расчёт инфляционных затрат, это специфично для Украины.
Вторая (большая) часть будет посвящена вопросу расчёта 3% годовых. Она также применима и к РФ, РБ и РК, но в этих странах ставка не является фиксированной, а зависит от ставки рефинансирования ЦБ. Остальные страны не смотрел.

Вторая часть очень близка к расчётам процентов по обычным кредитным сделкам (кредиты, ссуды, займы и пр.).

image alt

Сначала теория, в конце немного кода.

Всё это под катом.
Читать дальше →

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