|
|
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
Всем привет, в общем задача следующая: есть представление, которое отдаётся через рестфул сервис. Вьюшка не маленькая порядка 1,7 млн. записей, причём изменения могут быть как в исходных таблицах, так и в коде самого представления. Так вот хотелось бы отдавать только изменения, которые произошли в представлении. Пробовал сделать матвью решреш фаст он коммит, при этом на таблицу, которую оракл создаёт для матвью повесил триггер, который логирует изменения, мой замысел был такой - изменения в исходных таблицах по коммиту я увижу через триггер, а изменения в коде представления после dbms_mview.refresh. Только вот разочаровался я, т.к. dbms_mview.refresh с методом фаст, не показывал изменения в самом коде представления, а с методом комплит получилось, что сначала все записи из таблицы удаляются, а потом инсертятся. Я честно говоря ожидал, что будет мерж, который проапдейтит только изменения. А как вы думаете лучше такую задачу реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 15:56 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
OGG в помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 16:09 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
Я на сколько знаю голден гейт видит изменения в таблицах, а мне нужно видеть изменения, вызванные в коде представления, при этом исходные данные в таблицах меняться не будут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 16:11 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
mistergej Так вот хотелось бы отдавать только изменения, которые произошли в представлении это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 16:13 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
Все он видит. DDL тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 16:13 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
DВАmistergej Так вот хотелось бы отдавать только изменения, которые произошли в представлении это как? Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2017, 23:28 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
mrsergej Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть Записи - не изменились. Изменилось то, как ты их видишь... Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту... Задачку поточнее определить надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 03:23 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
mrsergej Это если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видетьвариантов, чтобы увидеть результат конкатенации, два: или монитор пошире или шрифт поуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 06:45 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
вьюшкаmrsergejЭто если, например, я к полю с наименованием что-нибудь приконкатенирую, то такие записи (изменённые) хотелось бы видеть Записи - не изменились. Изменилось то, как ты их видишь... Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту... Задачку поточнее определить надо. В данном случае это именно то, что надо. Я пример, привёл только для того, чтобы была понятна суть, по факту в представлении у некоторых полей кейсом меняются условия выбора значения и таких записей будет не очень мало от общего числа, но мне нужно будет оповестить о том, что эти записи изменились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 07:50 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
mrsergejвьюшкапропущено... Записи - не изменились. Изменилось то, как ты их видишь... Если у тебя в таблице 1 миллиард строк и ты во вьюшке вместо col1 поставил col1 ||'_123' - ты же не хочешь весь миллиард заново отослать клиенту... Задачку поточнее определить надо. В данном случае это именно то, что надо. Я пример, привёл только для того, чтобы была понятна суть, по факту в представлении у некоторых полей кейсом меняются условия выбора значения и таких записей будет не очень мало от общего числа, но мне нужно будет оповестить о том, что эти записи изменились. У тебя видно два потока изменений 1. поменялись данные 2. поменялись условия выборки/представления данных эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки). при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно... Похоже, что нужно монстрячить несколько таблиц и делать аккуратный merge. Аккуратный в смысле бизнес логики... Либо команда, которая отвечает за загрузку данных будет все тупо лить в таблицу, а команда которая пишет отчеты будет извращаться и выбирать последнюю активную запись( если ПК не меняется во всех случаях) и ненавидеть первую команду. Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 08:13 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
вьюшкаmrsergejпропущено... В данном случае это именно то, что надо. Я пример, привёл только для того, чтобы была понятна суть, по факту в представлении у некоторых полей кейсом меняются условия выбора значения и таких записей будет не очень мало от общего числа, но мне нужно будет оповестить о том, что эти записи изменились. У тебя видно два потока изменений 1. поменялись данные 2. поменялись условия выборки/представления данных эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки). при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно... Похоже, что нужно монстрячить несколько таблиц и делать аккуратный merge. Аккуратный в смысле бизнес логики... Либо команда, которая отвечает за загрузку данных будет все тупо лить в таблицу, а команда которая пишет отчеты будет извращаться и выбирать последнюю активную запись( если ПК не меняется во всех случаях) и ненавидеть первую команду. Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C) Да, это именно моя ситуация. Я тоже уже пришёл к выводу, что надо делать таблицу и самому писать мерж, просто думал получится это всё более красиво через матвью сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 08:35 |
|
||
|
Подскажите правильное решение
|
|||
|---|---|---|---|
|
#18+
mrsergejвьюшкапропущено... У тебя видно два потока изменений 1. поменялись данные 2. поменялись условия выборки/представления данных эти потоки могут(будут) находится в конфликте. особенно поток 2 (после очередного обновления вьюшки какие-то строки не должны попасть в выборку - а они уже были отправлены при предыдущей версии вьюшки). при этом поток 2 - это фактический тот самый complete refresh. но тебе complete refresh тоже не нужен - а нужна дельта от потоков, которые, в общем случае, идут непрерывно... Похоже, что нужно монстрячить несколько таблиц и делать аккуратный merge. Аккуратный в смысле бизнес логики... Либо команда, которая отвечает за загрузку данных будет все тупо лить в таблицу, а команда которая пишет отчеты будет извращаться и выбирать последнюю активную запись( если ПК не меняется во всех случаях) и ненавидеть первую команду. Второй вариант - сесть вместе с архитектором-аналитиком-бизнесом и попытаться понять - а правильной ли вы дорогой идете, товарищи ? (C) Да, это именно моя ситуация. Я тоже уже пришёл к выводу, что надо делать таблицу и самому писать мерж, просто думал получится это всё более красиво через матвью сделать. Тогда перечитать про второй вариант. Любой написанный мерж будет ущербным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2017, 10:04 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=133&tid=1884751]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 418ms |

| 0 / 0 |
