powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Мониторинг изменений в базах данных
25 сообщений из 153, страница 3 из 7
Мониторинг изменений в базах данных
    #39919895
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
PetroNotC Sharp,
"...репликацию, ddl, dml..."
Термины не знакомы. Насколько я понимаю триггеры как раз таки относятся к dml.

Получается я могу сделать так
CREATE TRIGGER IF NOT EXISTS "" AFTER INSERT ON "" BEGIN INSERT INTO (new_...
как-то так.

То есть у меня появляется вторая таблица с изменениями

В Постгресе есть так называемые триггеры событий.

В отличие от обычных триггеров, которые подключаются к конкретной таблице и работают только с командами DML, триггеры событий определяются на уровне базы данных и работают с командами DDL.

https://postgrespro.ru/docs/postgrespro/12/event-triggers
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919896
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,
нет времени. вчера было собеседование. на большинство вопросов по java core я ответил и как по мне, все прошло неплохо. Не знаю, конечно, какое мнение у той стороны, ответ будет недели через 1.5 и они будут учитывать задание. первую задачу с кэшем я уже отправил. может быть успею что-то состряпать по второй, чтобы было хоть что-то. думаю, это может сыграть роль. маленький плюсик. если кто-то вообще ничего не сделает, а у меня хоть какие-то наработки будут

сделаю так, создам две таблицы. основную и с изменениями. никак постгре, возьму sqlite инмемори да и все. это же просто сферический конь в вакууме. jdbctemplate "самодельный".
и пропишу триггеры для основных операций изменений таблицы.
ну и как-то надо завернуть это все в метод, получения изменений.
думаю как-то так
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919899
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
сделаю так, создам две таблицы. основную и с изменениями. никак постгре, возьму sqlite инмемори да и все. это же просто сферический конь в вакууме. jdbctemplate "самодельный".
и пропишу триггеры для основных операций изменений таблицы.
ну и как-то надо завернуть это все в метод, получения изменений.
думаю как-то так
еще раз подробнее.
Вместо постгри другую бд?
Изменения только одной таблы?
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919905
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
это может сыграть роль. маленький плюсик. если кто-то вообще ничего не сделает, а у меня хоть какие-то наработки будут

Уточнить задание тоже может быть плюсом.

Кому на работе нужен джун, который что-то там делает, а потом приносит фигню какую-то на SQLite, когда у нас Postgres? :)
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919906
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
еще раз подробнее.
Вместо постгри другую бд?
Изменения только одной таблы?


Да. опять же нет времени разбираться прямо сейчас с постгри, я ней никогда не работал. возьму sQLITE
Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete.

затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено? "Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора". Вот только как быть со временем или идентификатором?
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919907
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
Формально ТЗ будет выполнено?

Нет, не будет.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919908
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, я вижу ваши советы на счет уточнения. Я понимаю. Большое спасибо за них.
Просто дело в том, что задание выдали аж перед новым годом и я несколько подзабил на них, потому что со всех сторон слышал, что это слишком сложные задания на джуна, а тут на собеседовании спросили, мол, прислал ли хотя бы одну из двух. и я решил активизироваться. А сейчас уже как-то даже неудобно спрашивать спустя месяц. Поэтому попробую сделать какую-то простую реализацию. Учебную, так сказать
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919910
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
Вот только как быть со временем или идентификатором?

Если делать на DDL триггерах, то в момент его срабатывания пишите куда-то время этого самого срабатывания.
А потом мониторинг должен показывать, что за последние 30 минут ничего не происходило.
А за неделю произошло вот это.

Вот только в SQLite нет DDL триггеров.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919912
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
skyANA, я вижу ваши советы на счет уточнения. Я понимаю. Большое спасибо за них.
Просто дело в том, что задание выдали аж перед новым годом и я несколько подзабил на них... А сейчас уже как-то даже неудобно спрашивать спустя месяц.

Смотря ведь как спрашивать.
Можно спросить так, что показать свою заинтересованность работать именно у них и адекватность в подходе к решению задачи.

А то ведь может получиться так, что спустя месяц прислал фигню какую-то, разве не мог за это время спросить, что надо?
На фиг нам такой не нужен.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919916
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete.

затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено?
это ТЗ для джуна. В начале треда не для джуна ТЗ. Сами решайте.
1. Один триггер для всех операций
2. Он пишет в таблу время, тип_операции_буква, прошлое значени_строка.
3. Коллекция не нужна. Просто вывод раз в 5 сек этой таблы в файл/лог
Всё
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919917
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR,
Насчет двух сервисов.
- решить данное ТЗ одним сервисом по REST без спринга с Java EE JAX-RS.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919926
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что если я в таблицу с "изменениями" в строку внесу дополнительную ячейку datetime и потом при запросе метода Collection getИзмененияБД (date) буду получать выборку по времени?
А, ну вот как PetroNotC Sharp и говорил, время добавить
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919932
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
GrossmasteR
Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete.

затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено?
это ТЗ для джуна. В начале треда не для джуна ТЗ. Сами решайте.
1. Один триггер для всех операций
2. Он пишет в таблу время, тип_операции_буква, прошлое значени_строка.
3. Коллекция не нужна. Просто вывод раз в 5 сек этой таблы в файл/лог
Всё


А как один? мне же все равно нужны разные запросы на разные типы операций
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TRIGGER IF NOT EXISTS after_insert AFTER INSERT ON house " +
                    "BEGIN" +
                    " INSERT INTO house2 (new_adress, new_metro, new_price, new_address, date, operation)" +
                    "    VALUES (NEW.adress, NEW.metro, NEW.price, NEW.address, datetime('now'), 'insert');" +
                    "END;"
"CREATE TRIGGER IF NOT EXISTS after_update AFTER UPDATE ON house " +
                    "BEGIN" +
                    "    INSERT INTO house2(new_adress, new_metro, new_price, new_address, date, operation)" +
                    "    VALUES (OLD.adress, OLD.metro, OLD.price, OLD.address, datetime('now'), 'update');" + "END;"
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919941
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
устраиваюсь в один из банков

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

Мне сложно рассуждать на эту тему, потому что я не знаю в каком виде это бывает в реальности. Могу предположить, что при INSERT или UPDATE метод должен возвращать true. В задании же указано: "Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора."
Может при каждом INSERT или UPDATE надо передавать что-то еще, чтобы потом понять "с какого-либо времени или идентификатора" какие то триггеры. А может быть было бы не плохо, если бы метод возвращал не просто true false, а конкретные изменения

Есть классические методы основанные на блокировке for update, а также стратегии когда это делать,
можно блокировать сразу при чтении, можно делать попытку блокирования при изменении клиентом
данных прочитанных в клиентский интерфейс, можно делать попытку блокирования при сохранении
клиентом измененных данных. Можешь погуглить про пессимистические и оптимистические блокировки.
Смысл в том, что если запись в БД была изменена, изменять ее уже неправильно, в такой ситуации
необходимо выдать сообщение, что данные были изменены и перечитать их.

Но у тебя речь идет похоже именно о инвалидации "кеша", т.е. твой микросервис считал некий объем данных из БД
которые ты обзываешь горячими, необходимо понимать изменились ли эти данные в БД и соответствует ли
закешированное в сервисе состояние состоянию БД. Так вот делать это можно только для конкретного частного случая,
в общем случае задача нерешаема, собственно поэтому тебе ничего нагуглить и не удалось.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919943
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
А как один? мне же все равно нужны разные запросы на разные типы операций
в триггере есть флаг какая именно операция
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919946
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
getИзмененияБД (date)
да
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919948
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
в общем случае задача нерешаема,
нерешаема. Поэтому он плюнул на начальное ТЗ и написал свой "цветочный магазин").
У него руки чешутся пописать).
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919951
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Есть некий сложный запрос (в тз фигурируют аналитические функции и явно написано, что запросы тяжелые),
сервис загрузил выборку к себе, каким образом понять, что какое то поле из какой то записи этой выборки
было изменено?
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919956
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
By the way,

В Oracle такая функциональность есть. Включая кэширование результатов запросов и их обновление при изменении данных, на стороне сервере и стороне клиента (OCI).

Насколько хорошо работает и как это использовать в мирных целях - не знаю. Не использовал.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39919973
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
PetroNotC Sharp,

Есть некий сложный запрос (в тз фигурируют аналитические функции и явно написано, что запросы тяжелые),
сервис загрузил выборку к себе, каким образом понять, что какое то поле из какой то записи этой выборки
было изменено?
забудь то ТЗ. Там странные люди его писали.
В веб проектах есть кеш хибера, эксплорера, субд.
Этого достаточно. И кешируется каждый раз свои объекты. База запросы, эксплорер страничку, хибер сущност и сессию хибера.
Разговаривать про #абстрактныйкешнепонятночего глупость.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39920148
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39920157
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк,
Дык для всех бд есть готовое - репликация.
Не осилит.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39920168
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrossmasteR
Вариации:
  • (повышенной сложности) Вычисление, реализованное только на SQL на СУБД Postgres.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39920172
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Локшин Марк,
Дык для всех бд есть готовое - репликация.
Не осилит.

И то, что есть в PostgreSQL нет для большинства БД в которых есть штатная репликация. Вы не название ссылки прочитайте, а то, что там внутри. Там на Java писать пару десятков строк кода.
...
Рейтинг: 0 / 0
Мониторинг изменений в базах данных
    #39920174
GrossmasteR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Локшин Марк,
Дык для всех бд есть готовое - репликация.
Не осилит.

Получается во всех система управления базами данных (как минимум, распространенных) такие механизмы уже встроены, да?

из ТЗ: "часто возникает необходимость синхронизации горячих данных.." ну то есть необходимость репликации, так?

в тоже время мне не предлагаю написать "свою репликацию", да? а скорее алгоритм, который определит, есть ли сейчас необходимость или нет, так?
Я пока гуглил, наткнулся на статью: https://habr.com/ru/post/149431/
"Исследование изменений в базе данных посредством контрольных сумм"
По-сути, и такой метод был бы как вариант
...
Рейтинг: 0 / 0
25 сообщений из 153, страница 3 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Мониторинг изменений в базах данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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