Я хочу абстрагировать большое хранилище базы данных (реляционное, OLTP) от прикладного уровня, чтобы приложение рассматривало базу данных как службу. Естественный способ сделать это - вызвать sprocs, но традиционно они следуют парадигмам CRUD, и в соответствии с моей абстракцией, я хочу абстрагировать все знания о структурах данных в базе данных и сосредоточиться на бизнес-процессах.
Так что вместо бизнес-процесса «Сохранить счет» это будет ...
- Старт транзакции
- Создать заголовок счета
- Для позиций счетов-фактур
- Создание позиций счетов-фактур
- Подтвердить транзакцию
... вместо этого я хочу передать в базу данных структурированные данные, представляющие счет-фактуру.
Я могу передать XML-документ, содержащий счет, но это то, чего я хочу избежать на стороне базы данных:
- Синтаксический анализ XML
- Проверка XML
- Извлечение параметров и привязка к объектам Oracle PL / SQL
Конечно, во всех случаях, независимо от решения, это должно быть сделано. Однако я не хочу платить штраф за документ XML (налог на угловую скобку).
Отсюда возникает вопрос - каков наиболее эффективный способ отправки и получения и структурирования данных в хранимых процедурах Oracle?
Я хотел бы услышать от тех, кто хочет отстаивать JSON, ATOM или другие форматы.
Также рассмотрите нативный или двоичный механизмы для достижения этой цели. А как насчет создания и отправки в таблицах Oracle (наборы данных памяти)? Кто-нибудь делал это раньше? Что, где ваш опыт?