powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите правильное решение
12 сообщений из 12, страница 1 из 1
Подскажите правильное решение
    #39567752
mrsergej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, в общем задача следующая: есть представление, которое отдаётся через рестфул сервис. Вьюшка не маленькая порядка
1,7 млн. записей, причём изменения могут быть как в исходных таблицах, так и в коде самого представления. Так вот хотелось бы
отдавать только изменения, которые произошли в представлении. Пробовал сделать матвью решреш фаст он коммит, при этом на
таблицу, которую оракл создаёт для матвью повесил триггер, который логирует изменения, мой замысел был такой - изменения в
исходных таблицах по коммиту я увижу через триггер, а изменения в коде представления после dbms_mview.refresh. Только вот
разочаровался я, т.к. dbms_mview.refresh с методом фаст, не показывал изменения в самом коде представления, а с методом комплит
получилось, что сначала все записи из таблицы удаляются, а потом инсертятся. Я честно говоря ожидал, что будет мерж, который
проапдейтит только изменения. А как вы думаете лучше такую задачу реализовать?
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39567763
OGG в помощь
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39567767
mrsergej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я на сколько знаю голден гейт видит изменения в таблицах, а мне нужно видеть изменения, вызванные в коде представления, при этом исходные данные в таблицах меняться не будут
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39567771
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mistergej Так вот хотелось бы
отдавать только изменения, которые произошли в представлении

это как?
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39567773
Все он видит. DDL тоже.
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568032
mrsergej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВАmistergej Так вот хотелось бы
отдавать только изменения, которые произошли в представлении

это как?

Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568047
вьюшка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mrsergej
Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть

Записи - не изменились. Изменилось то, как ты их видишь...

Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту...


Задачку поточнее определить надо.
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568060
mrsergej
Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видетьвариантов, чтобы увидеть результат конкатенации, два: или монитор пошире или шрифт поуже.
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568066
mrsergej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вьюшкаmrsergejЭто если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть

Записи - не изменились. Изменилось то, как ты их видишь...

Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту...


Задачку поточнее определить надо.

В данном случае это именно то, что надо. Я пример, привёл только для того, чтобы была понятна суть, по факту в представлении у
некоторых полей кейсом меняются условия выбора значения и таких записей будет не очень мало от общего числа, но мне нужно будет
оповестить о том, что эти записи изменились.
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568074
вьюшка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mrsergejвьюшкапропущено...


Записи - не изменились. Изменилось то, как ты их видишь...

Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту...


Задачку поточнее определить надо.

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

У тебя видно два потока изменений
1. поменялись данные
2. поменялись условия выборки/представления данных

эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки).

при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно...

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

Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C)
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568082
mrsergej
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вьюшкаmrsergejпропущено...


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

У тебя видно два потока изменений
1. поменялись данные
2. поменялись условия выборки/представления данных

эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки).

при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно...

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

Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C)

Да, это именно моя ситуация. Я тоже уже пришёл к выводу, что надо делать таблицу и самому писать мерж, просто думал получится
это всё более красиво через матвью сделать.
...
Рейтинг: 0 / 0
Подскажите правильное решение
    #39568121
вьюшка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mrsergejвьюшкапропущено...


У тебя видно два потока изменений
1. поменялись данные
2. поменялись условия выборки/представления данных

эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки).

при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно...

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

Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C)

Да, это именно моя ситуация. Я тоже уже пришёл к выводу, что надо делать таблицу и самому писать мерж, просто думал получится
это всё более красиво через матвью сделать.

Тогда перечитать про второй вариант. Любой написанный мерж будет ущербным.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите правильное решение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]