|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Уважаемые форумчане, здравствуйте! Нужен ваш совет. Алгоритм определения изменений схемы данных. Введение: В крупной системе, реализующей минросервисную архитектуру часто возникает необходимость синхронизации горячих данных между различными компонентами (исполняемыми модулями). Как правило единой точкой правды для всех компонентов является СУБД, а именно какая либо схема или набор объектов СУБД. Но частые обращения к этим объектам, в особенности запросы содержащие агрегатные или аналитические функции, негативно влияют на производительность СУБД в целом. Поэтому для разных ситуаций разрабатывают различные тактики определения разности состояний тех или иных объектов СУБД для синхронизации с приложением. Что нужно сделать: Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора. Вариации:
Код должен быть покрыт нагрузочными тестами, приведены оценки планов запроса. Написано относительно сложно, суть, как я понимаю, необходимо написать на java какую-нибудь простую реализацию: класс, который будет отслеживать изменения данных. Я гуглил-гуглил и так и этак. Кто-то предлагает на основе анализа журнала транзакций, использовать механизм триггеров. Вроде бы в MS Sql Server и в postgresql есть какие-то встроенные инструменты для этого, кто то предлагал делать это посредством контрольных сумм, в то же время чего-то простого доступного мне найти не удалось. Может быть есть возможность подсказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 21:11 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Что будет считаться изменением в СУБД, изменение одного значения в одной из сотен миллионов записей в одной из нескольких тысяч таблиц будет считаться изменением? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 21:20 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
а что есть изменения? схемы или данных которые туда льют? если первое то хз но наверное что то есть если второе - у некоторых бд есть стриминг интерфейс - куда шлются все изменения в реальном или околореальном времени. всё что надо - это просто захендлить этот стрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 21:41 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
ну или топорный вариант - написать свой ждбс драйвер, или ой вэй у нас же ооп - отнаследоваться от реального ждбс драйвера и перекрыть те методы что пишут, чтоб они сами стримили данные куда надо когда их просят что-то записать. мне кажется, что речь об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 21:45 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR В крупной системе, реализующей минросервисную архитектуру часто возникает необходимость синхронизации горячих данных между различными компонентами (исполняемыми модулями). Как правило единой точкой правды для всех компонентов является СУБД, а именно какая либо схема или набор объектов СУБД. Давайте сделаем микросевисы, а потом поверх них обернем монолит) Сложно комментировать и что-то подсказывать при такой каше в голове, эт не упрек, а скорее камень в сторону модных трендов. Какая нафиг единая точка правды в микросервисной архитектуре(Которая и делается для того чтобы разбить монолит на непересекающиеся участки)? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 22:15 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Алгоритм определения изменений схемы данных. Поиск на ключевое слово Репликация. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 22:24 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
забыл ник, +1 ))) единая точка правды)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 22:25 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Что с вашей прошлой темой? Она одинакова с данной. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 22:27 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Введение GrossmasteR Что нужно сделать: Вы забыли самое главное. Вставить между ними абзац Проблема: ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 22:55 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Поиск на ключевое слово Репликация. Куда? Скорее автор топика хочет инвалидацию данных прочитанных из БД микросервисами, чтобы их перечитывать только в случае, если они изменились. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2020, 23:06 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev PetroNotC Sharp Поиск на ключевое слово Репликация. Куда? Скорее автор топика хочет инвалидацию данных прочитанных из БД микросервисами, чтобы их перечитывать только в случае, если они изменились. Предполагаю чего хочет автор даже он сам не знает ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 00:32 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
забыл ник iOracleDev пропущено... Куда? Скорее автор топика хочет инвалидацию данных прочитанных из БД микросервисами, чтобы их перечитывать только в случае, если они изменились. Предполагаю чего хочет автор даже он сам не знает Автор хочет устроиться на работу. Любопытно, где ему выдали такое тестовое задание. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 05:26 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev Скорее автор топика хочет инвалидацию данных прочитанных из БД микросервисами, чтобы их перечитывать только в случае, если они изменились Нет, написано же, что изменение схемы данных: всей целиком, или конкретной таблицы, колонки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 05:38 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Как правило единой точкой правды для всех компонентов является СУБД Это провал, надо пилить монолит взад. На распределённых системах консистентность в конечном счете. Если это ТЗ, то они или нихрена не понимают или это ТЗ типа принеси ведро с жидкой трансмиссией. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 06:01 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Написано относительно сложно, суть, как я понимаю, необходимо написать на java какую-нибудь простую реализацию: класс, который будет отслеживать изменения данных. Не данных, а схемы данных. Типа что где-то в схему добавили поле (колонку), переименовали, изменили тип, разнесли по таблицам... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 06:11 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
crutchmaster Это провал, надо пилить монолит взад. Почему сразу монолит? Написано про какие-то исполняемые модули. Типа есть БД у какого-то сервиса, а ещё есть кэши, поисковые индексы, очереди там всякие. И тут бац, в схеме БД что-то меняется, и в остальных местах надо синхронизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 06:46 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev PetroNotC Sharp Поиск на ключевое слово Репликация. Куда? Скорее автор топика хочет инвалидацию данных прочитанных из БД микросервисами, чтобы их перечитывать только в случае, если они изменились. Есть данные в БД, и надо убедится что.... они правильные? Он уже прошлый топик так же решил, и результат был никому не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 07:28 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR В крупной системе, реализующей минросервисную архитектуру ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 07:34 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA И тут бац, в схеме БД что-то меняется, и в остальных местах надо синхронизировать. Почему в остальных местах должна кого-то волновать чья-то схема в БД? Вот, например, на форуме поменяется схема БД, кого это должно озаботить? И там также. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 07:37 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
crutchmaster skyANA И тут бац, в схеме БД что-то меняется, и в остальных местах надо синхронизировать. Почему в остальных местах должна кого-то волновать чья-то схема в БД? Вот, например, на форуме поменяется схема БД, кого это должно озаботить? И там также. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 08:05 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp , получилась так, что прошлая тема превратилась в тему про кэш и это правильно, как по мне. Надо было с самого начала разделить эти вопросы. На счет этого вопроса, моего уровня знаний недостаточно, чтобы понять его минусы и "абсурд", который обсуждают форумчане. Как сказал уважаемый skyANA "Автор хочет устроиться на работу". Как я нагуглился, несмотря на удобные современные функции, интерфейсы для работы с БД, могут быть ситуации (вмешательство админа БД, взлом SQL-injection, прямые изменения в БД что еще). Получается, что одного журнала событий прикладной системы недостаточно — необходим аудит изменения данных на уровне базы, который будет дополнительным инструментом для обеспечения безопасности и исключения ошибок при эксплуатации системы. Основным критерием для выбора механизма, обеспечивающего мониторинг, является минимальное влияние внедряемого решения на производительность системы. Я так понимаю, выдавшие задание предлагают "порассуждать" (реализовать несложный алгоритм) на эту тему. Вопрос, как это сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 08:50 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, То есть вы сами выдумываете задачи. Раздела ПРОБЛЕМА нет. И вы его боитесь. GrossmasteR Как я нагуглился, несмотря на удобные современные функции, интерфейсы для работы с БД, могут быть ситуации (вмешательство админа БД, взлом SQL-injection, прямые изменения в БД что еще). Получается, что одного журнала событий прикладной системы недостаточно — необходим аудит изменения данных на уровне базы, который будет дополнительным инструментом для обеспечения безопасности и исключения ошибок при эксплуатации системы. Основным критерием для выбора механизма, обеспечивающего мониторинг, является минимальное влияние внедряемого решения на производительность системы. Вот это бред выше. ДОКАЖИТЕ что НЕДОСТАТОЧНО. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:01 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR журнала событий прикладной системы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:03 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Ну и старайтесь сопровождать топик. Почаще отвечайте мемберам. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:04 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Автор хочет устроиться на работу". Так как если на архитектора, то недостатки одни. Если на прогера то другие) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:20 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, на джуна. задачу по кэшу из прошлого топика и эту по БД, мне дали как ТЗ на джуна ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:41 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Смотрите, а вот это не то, что мне нужно? https://jdbc.postgresql.org/documentation/91/listennotify.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:54 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR PetroNotC Sharp, на джуна. задачу по кэшу из прошлого топика и эту по БД, мне дали как ТЗ на джуна ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:55 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Как думаете, почему прошлый топик не смогли протестировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:56 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Смотрите, а вот это не то, что мне нужно? https://jdbc.postgresql.org/documentation/91/listennotify.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 09:57 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
crutchmaster skyANA И тут бац, в схеме БД что-то меняется, и в остальных местах надо синхронизировать. Почему в остальных местах должна кого-то волновать чья-то схема в БД? Вот, например, на форуме поменяется схема БД, кого это должно озаботить? И там также. Потому что это тестовое задание. Прикладной смысл его нулевой, практический - тупо проверить соискателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:20 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA Потому что это тестовое задание. Прикладной смысл его нулевой, практический - тупо проверить соискателя. Угу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:24 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Как я нагуглился, несмотря на удобные современные функции, интерфейсы для работы с БД, могут быть ситуации (вмешательство админа БД, взлом SQL-injection, прямые изменения в БД что еще). Получается, что одного журнала событий прикладной системы недостаточно — необходим аудит изменения данных на уровне базы, который будет дополнительным инструментом для обеспечения безопасности и исключения ошибок при эксплуатации системы. Основным критерием для выбора механизма, обеспечивающего мониторинг, является минимальное влияние внедряемого решения на производительность системы. Я так понимаю, выдавшие задание предлагают "порассуждать" (реализовать несложный алгоритм) на эту тему. Вопрос, как это сделать Вот запустил я его и в каком виде должен получить результат его работы? Хорошо бы вы сначала не постеснялись и выяснили все вопросы у тех, кто вам задание выдал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:26 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Смотрите, а вот это не то, что мне нужно? https://jdbc.postgresql.org/documentation/91/listennotify.html Проясните, в каком виде должны быть представлены результаты этого вашего мониторинга изменений в базах данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:35 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, напомните, вы случаем не в DevArt устраиваетесь? https://www.devart.com/dbforge/postgresql/datacompare/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:45 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
А нет, у них C# :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 10:50 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA, устраиваюсь в один из банков "Проясните, в каком виде должны быть представлены результаты этого вашего мониторинга изменений в базах данных." Мне сложно рассуждать на эту тему, потому что я не знаю в каком виде это бывает в реальности. Могу предположить, что при INSERT или UPDATE метод должен возвращать true. В задании же указано: "Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора." Может при каждом INSERT или UPDATE надо передавать что-то еще, чтобы потом понять "с какого-либо времени или идентификатора" какие то триггеры. А может быть было бы не плохо, если бы метод возвращал не просто true false, а конкретные изменения ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:15 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Если надо сделать универсальный механизм: 1) если на уровне СУБД, то смотри триггеры 2) если на уровне приложения - АОП ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:22 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Могу предположить, что при INSERT или UPDATE метод должен возвращать true private boolean getЛюбыеИзменения() Так? Параметры будут? ... 2. Вы промолчали про репликацию, ddl, dml. Термины знакомы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:24 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
SpringMan Если надо сделать универсальный механизм: 1) если на уровне СУБД, то смотри триггеры 2) если на уровне приложения - АОП Для джуна что именно смотреть должно быть в ТЗ. Согласись. И почему постгри в банке? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:26 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Мне сложно рассуждать на эту тему, потому что я не знаю в каком виде это бывает в реальности. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:27 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Итого, соискатель джун. Вы не начнете писать код, пока не будет вменяемой постановки. И как потом тестировать результат (юз кейс). И гугление не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:29 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR устраиваюсь в один из банков "Проясните, в каком виде должны быть представлены результаты этого вашего мониторинга изменений в базах данных." Мне сложно рассуждать на эту тему, потому что я не знаю в каком виде это бывает в реальности. Так уточните у банка, в чем проблема? Вам дали задание, задайте по нему вопросы, не стесняйтесь. Куда выводить результаты: в консоль, в файл, в голову проверяющему? И в каком виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:30 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
SpringMan АОП ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:31 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Для джуна что именно смотреть должно быть в ТЗ. Согласись. И почему потгри в банке? В банках мне кажется есть все базы) Это ТЗ больше похоже на "Сделай самое умное, что сможешь". В ТЗ только одна проблема - непонятно, кого им надо: или самого_умного или напишу_любой_код_главное_чтобы_работало. Да и к ТЗ тестовым заданиям ИМХО надо проще относиться: главное показать какие умные слова ты знаешь и что можешь писать нормальный код ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:38 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
SpringMan, Согласен. Только тут вообще ничего нет и даже зацепиться не за что без консультаций с ними. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:41 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Критерии оценки: Код должен быть покрыт нагрузочными тестами, приведены оценки планов запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 11:46 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, "...репликацию, ddl, dml..." Термины не знакомы. Насколько я понимаю триггеры как раз таки относятся к dml. Получается я могу сделать так CREATE TRIGGER IF NOT EXISTS "" AFTER INSERT ON "" BEGIN INSERT INTO (new_... как-то так. То есть у меня появляется вторая таблица с изменениями ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 12:19 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Термины не знакомы Может прервемся на пару дней? Это базовые знания. .... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 12:34 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR CREATE TRIGGER ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 12:35 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 12:48 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, нет времени. вчера было собеседование. на большинство вопросов по java core я ответил и как по мне, все прошло неплохо. Не знаю, конечно, какое мнение у той стороны, ответ будет недели через 1.5 и они будут учитывать задание. первую задачу с кэшем я уже отправил. может быть успею что-то состряпать по второй, чтобы было хоть что-то. думаю, это может сыграть роль. маленький плюсик. если кто-то вообще ничего не сделает, а у меня хоть какие-то наработки будут сделаю так, создам две таблицы. основную и с изменениями. никак постгре, возьму sqlite инмемори да и все. это же просто сферический конь в вакууме. jdbctemplate "самодельный". и пропишу триггеры для основных операций изменений таблицы. ну и как-то надо завернуть это все в метод, получения изменений. думаю как-то так ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 12:48 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR сделаю так, создам две таблицы. основную и с изменениями. никак постгре, возьму sqlite инмемори да и все. это же просто сферический конь в вакууме. jdbctemplate "самодельный". и пропишу триггеры для основных операций изменений таблицы. ну и как-то надо завернуть это все в метод, получения изменений. думаю как-то так Вместо постгри другую бд? Изменения только одной таблы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:04 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR это может сыграть роль. маленький плюсик. если кто-то вообще ничего не сделает, а у меня хоть какие-то наработки будут Уточнить задание тоже может быть плюсом. Кому на работе нужен джун, который что-то там делает, а потом приносит фигню какую-то на SQLite, когда у нас Postgres? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:17 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp еще раз подробнее. Вместо постгри другую бд? Изменения только одной таблы? Да. опять же нет времени разбираться прямо сейчас с постгри, я ней никогда не работал. возьму sQLITE Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete. затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено? "Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора". Вот только как быть со временем или идентификатором? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:20 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Формально ТЗ будет выполнено? Нет, не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:22 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA, я вижу ваши советы на счет уточнения. Я понимаю. Большое спасибо за них. Просто дело в том, что задание выдали аж перед новым годом и я несколько подзабил на них, потому что со всех сторон слышал, что это слишком сложные задания на джуна, а тут на собеседовании спросили, мол, прислал ли хотя бы одну из двух. и я решил активизироваться. А сейчас уже как-то даже неудобно спрашивать спустя месяц. Поэтому попробую сделать какую-то простую реализацию. Учебную, так сказать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:23 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Вот только как быть со временем или идентификатором? Если делать на DDL триггерах, то в момент его срабатывания пишите куда-то время этого самого срабатывания. А потом мониторинг должен показывать, что за последние 30 минут ничего не происходило. А за неделю произошло вот это. Вот только в SQLite нет DDL триггеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:27 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR skyANA, я вижу ваши советы на счет уточнения. Я понимаю. Большое спасибо за них. Просто дело в том, что задание выдали аж перед новым годом и я несколько подзабил на них... А сейчас уже как-то даже неудобно спрашивать спустя месяц. Смотря ведь как спрашивать. Можно спросить так, что показать свою заинтересованность работать именно у них и адекватность в подходе к решению задачи. А то ведь может получиться так, что спустя месяц прислал фигню какую-то, разве не мог за это время спросить, что надо? На фиг нам такой не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:30 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete. затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено? 1. Один триггер для всех операций 2. Он пишет в таблу время, тип_операции_буква, прошлое значени_строка. 3. Коллекция не нужна. Просто вывод раз в 5 сек этой таблы в файл/лог Всё ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:44 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Насчет двух сервисов. - решить данное ТЗ одним сервисом по REST без спринга с Java EE JAX-RS. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 13:50 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
а что если я в таблицу с "изменениями" в строку внесу дополнительную ячейку datetime и потом при запросе метода Collection getИзмененияБД (date) буду получать выборку по времени? А, ну вот как PetroNotC Sharp и говорил, время добавить ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:12 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:19 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR устраиваюсь в один из банков "Проясните, в каком виде должны быть представлены результаты этого вашего мониторинга изменений в базах данных." Мне сложно рассуждать на эту тему, потому что я не знаю в каком виде это бывает в реальности. Могу предположить, что при INSERT или UPDATE метод должен возвращать true. В задании же указано: "Спроектировать алгоритм (фунцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора." Может при каждом INSERT или UPDATE надо передавать что-то еще, чтобы потом понять "с какого-либо времени или идентификатора" какие то триггеры. А может быть было бы не плохо, если бы метод возвращал не просто true false, а конкретные изменения Есть классические методы основанные на блокировке for update, а также стратегии когда это делать, можно блокировать сразу при чтении, можно делать попытку блокирования при изменении клиентом данных прочитанных в клиентский интерфейс, можно делать попытку блокирования при сохранении клиентом измененных данных. Можешь погуглить про пессимистические и оптимистические блокировки. Смысл в том, что если запись в БД была изменена, изменять ее уже неправильно, в такой ситуации необходимо выдать сообщение, что данные были изменены и перечитать их. Но у тебя речь идет похоже именно о инвалидации "кеша", т.е. твой микросервис считал некий объем данных из БД которые ты обзываешь горячими, необходимо понимать изменились ли эти данные в БД и соответствует ли закешированное в сервисе состояние состоянию БД. Так вот делать это можно только для конкретного частного случая, в общем случае задача нерешаема, собственно поэтому тебе ничего нагуглить и не удалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:31 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR А как один? мне же все равно нужны разные запросы на разные типы операций ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:33 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR getИзмененияБД (date) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:35 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev в общем случае задача нерешаема, У него руки чешутся пописать). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:38 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Есть некий сложный запрос (в тз фигурируют аналитические функции и явно написано, что запросы тяжелые), сервис загрузил выборку к себе, каким образом понять, что какое то поле из какой то записи этой выборки было изменено? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:44 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
By the way, В Oracle такая функциональность есть. Включая кэширование результатов запросов и их обновление при изменении данных, на стороне сервере и стороне клиента (OCI). Насколько хорошо работает и как это использовать в мирных целях - не знаю. Не использовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 14:49 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev PetroNotC Sharp, Есть некий сложный запрос (в тз фигурируют аналитические функции и явно написано, что запросы тяжелые), сервис загрузил выборку к себе, каким образом понять, что какое то поле из какой то записи этой выборки было изменено? В веб проектах есть кеш хибера, эксплорера, субд. Этого достаточно. И кешируется каждый раз свои объекты. База запросы, эксплорер страничку, хибер сущност и сессию хибера. Разговаривать про #абстрактныйкешнепонятночего глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 15:07 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Для PostgreSQL есть готовое: https://jdbc.postgresql.org/documentation/head/replication.html можно в виде JSON: https://debezium.io/documentation/reference/1.0/postgres-plugins.html ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 18:48 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Локшин Марк, Дык для всех бд есть готовое - репликация. Не осилит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 19:03 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Вариации:
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 19:25 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Локшин Марк, Дык для всех бд есть готовое - репликация. Не осилит. И то, что есть в PostgreSQL нет для большинства БД в которых есть штатная репликация. Вы не название ссылки прочитайте, а то, что там внутри. Там на Java писать пару десятков строк кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 19:29 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Локшин Марк, Дык для всех бд есть готовое - репликация. Не осилит. Получается во всех система управления базами данных (как минимум, распространенных) такие механизмы уже встроены, да? из ТЗ: "часто возникает необходимость синхронизации горячих данных.." ну то есть необходимость репликации, так? в тоже время мне не предлагаю написать "свою репликацию", да? а скорее алгоритм, который определит, есть ли сейчас необходимость или нет, так? Я пока гуглил, наткнулся на статью: https://habr.com/ru/post/149431/ "Исследование изменений в базе данных посредством контрольных сумм" По-сути, и такой метод был бы как вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 19:32 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Да. Встроены. У них же задача - "передать удаленно всё что изменилось")))))) Только не притягивай это к твоему ТЗ. Оно у тебя глупое. Так как у репликации есть четкий юз кейс для теста и проверки. У тебя в ТЗ нет юз кейса, цели и задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 19:54 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR пока гуглил, наткнулся на статью: https://habr.com/ru/post/149431/ А у тебя время, плюс тип операции, плюс имя поля, плюс старое значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 20:04 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
iOracleDev GrossmasteR, Что будет считаться изменением в СУБД, изменение одного значения в одной из сотен миллионов записей в одной из нескольких тысяч таблиц будет считаться изменением? Интересно что считать drop table успешным по факту его подачи или по факту фиксации удаления самой таблички? И что делать на slave системе которая может успешно грохнуть табличку в то время как master ее удалял но не смог. И дальше - продолжают катится транзакции которые в мастер вливаются а в slave уже нет т.к. табличка улетела. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 20:32 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Вот, что у меня получилось: JDBCTemplate, будем говорить, самодельный. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71.
Как по мне, работает. Единственное, я не понял, как мне в IDEA вторую таблицу увидеть ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2020, 23:33 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Интересно что считать drop table успешным по факту его подачи или по факту фиксации удаления самой таблички? И что делать на slave системе которая может успешно грохнуть табличку в то время как master ее удалял но не смог. И дальше - продолжают катится транзакции которые в мастер вливаются а в slave уже нет т.к. табличка улетела. Во первых не создавать и не удалять таблицы налету, а если все же решили сделать подобную архитектуру, обрабатывать возможные нештатные ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 00:42 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Как быть с этим? "Код должен быть покрыт нагрузочными тестами, приведены оценки планов запроса" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 00:55 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Как по мне, работает. Единственное, я не понял, как мне в IDEA вторую таблицу увидеть Это капец. А если у тебя 100 таблиц будет. Сколько тебе кода надо наколбасить. И сколько протестировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 01:24 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Код: java 1. 2.
-Никогда не называй таблицы программисткими терминами - items/trigger. Только бизнес и сущность. - new_id переименовать в id и автосчетчик - date НЕ ТЕКСТ - Операция тип поля char, одна буква - новые значения можно кидать в одно поле текст. Как захочешь. Оно не not null ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:25 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, С памятью хорошо? Я говорил что один триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:27 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Код: java 1.
Почему такое название? Где обработка ошибок БД. Где комментарии у класса и методов? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:36 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Код: java 1.
Это в другой микро))))) сервис или класс перенеси. Почему класс возврата House? А те что удалены как назовем? Delete_House? Подпиши комментарий метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:41 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR как мне в IDEA вторую таблицу увидеть ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:44 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp GrossmasteR Для эксперимента создам простейшую таблицу. house adress price metro что то типа того и пропишу простейшие методы. insert update delete. затем создам второй сервис TriggerService или что то типа того, где будут прописаны триггеры для каждой операции и попробую в какую -нибудь коллекцию получить изменения таблицы при выполнении операций с ней. Формально ТЗ будет выполнено? 1. Один триггер для всех операций 2. Он пишет в таблу время, тип_операции_буква, прошлое значени_строка. 3. Коллекция не нужна. Просто вывод раз в 5 сек этой таблы в файл/лог Всё То что выше сделано пока двойка. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 07:47 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Вот, что у меня получилось Бред какой-то. Вы сами-то задание своё читали? Или оно у вас из головы вылетело? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 08:36 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA GrossmasteR Вот, что у меня получилось Бред какой-то. Вы сами-то задание своё читали? Или оно у вас из головы вылетело? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 08:59 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, исключения обрабатываются в JdbcTemplate. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
ну и интерфейсы, которые передаются в параметры методов, написаны ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 09:52 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp - new_id переименовать в id и автосчетчик По-моему, имеет смысл все же new_id, потому что нам, возможно, для чего-то может быть интересно объект с каким id в изначальной таблице попал в новую ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 09:56 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
skyANA Бред какой-то. Вы сами-то задание своё читали? Или оно у вас из головы вылетело? Задание: "...Спроектировать алгоритм (функцию) определяющую есть ли изменения в СУБД или нет начиная с какого-либо времени или идентификатора..." У меня есть некая таблица, при каждом insert и update в эту таблицу, я сохраняю эти изменения в другую таблицу и могу выгрузить в LIST. То есть не только сам факт "есть ли изменения", а еще и посмотреть, что изменилось. Вызываю, к примеру Код: java 1.
и вижу, что изменилось за вчерашний день. Неужели все так ужасно? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:02 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR PetroNotC Sharp - new_id переименовать в id и автосчетчик По-моему, имеет смысл все же new_id, потому что нам, возможно, для чего-то может быть интересно объект с каким id в изначальной таблице попал в новую Приведите Модель таблиц. Перед программированием ее обязательно делают. В любой форме. Лучше со стрелочками, но можно и без них) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:02 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Вариации:
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:04 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR и могу выгрузить в LIST. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:04 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Дмитрий Мух GrossmasteR Вариации:
Вы не прогер чтобы такие ТЗ давать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:05 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Кстати, а как мне создать метод, который бы уничтожил изначальную таблицу, чтобы я потом мог создать новую с нуля, пожалуйста, подскажите? Что-то типа Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
подойдет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:05 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Вычисление, реализованное только на JAVA без использования системных объектов СУБД. GrossmasteR Вычисление, реализованное только на SQL на СУБД Postgres. Вообщем ничего по заданию не сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:06 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR уничтожил изначальную таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:07 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Предполагаю, что под "вариациями" подразумевается сделать хотя бы один из пунктов, возможно я ошибаюсь)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:09 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Дмитрий Мух, Предполагаю, что под "вариациями" подразумевается сделать хотя бы один из пунктов, возможно я ошибаюсь)) дак ведь не один из пунктов не сделан ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:10 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Вам в шарп ветку. ТС наконец то начал код писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:11 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Дмитрий Мух дак ведь не один из пунктов не сделан ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 10:12 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
У меня где-то был исходник CDC который все изменения всех таблиц БД складывает в EAV-табличку. Могу автору пошарить его. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:00 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton У меня где-то был исходник CDC который все изменения всех таблиц БД складывает в EAV-табличку. Могу автору пошарить его. Автор дату как строку пишет, а мы ему счас легаси сунем. А что это CDC? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:13 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp GrossmasteR, С памятью хорошо? Я говорил что один триггер. Я так понимаю, что должен делать как-то так: Код: sql 1. 2. 3.
В тоже время ведь в SQLite я использую модификаторы OLD для Update (OLD.price, OLD.district...) и NEW для INSERT (NEW.price, NEW.district...). Может быть в SQLite не удастся объединить триггеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:13 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR Может быть в SQLite не удастся объединить триггеры? Модель таблички рисует. Это нам тут невтерпёж)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:16 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я так погуглил... По-моему, вот это об этом, нет? "...At this time, SQLite supports only FOR EACH ROW triggers, not FOR EACH STATEMENT triggers. Hence, explicitly specifying FOR EACH ROW is optional..." Судя по всему не поддерживается объединение. Плюс на счет даты: "...Как известно, в базе данных SQLite нет типа данных для хранения даты или времени. Предполагается хранить дату и время либо в строковом поле, либо в виде числа, т.е. использовать один из трех вариантов: TEXT - Для хранения даты/времени в формате "YYYY-MM-DD HH:MM:SS.SSS" (подробнее см.ниже) REAL - Для записи даты/времени в виде числа - Юлианского дня INTEGER - Чтобы сохранить дату/время как время Unix (число секунд с 1970-01-01 00:00:00 UTC)..." Я с тригеррами разбирался по этому мануалу : https://zametkinapolyah.ru/zametki-o-mysql/tema-13-triggery-v-sql-na-primere-bazy-dannyx-sqlite.html#UPDATE_AFTER_UPDATE_BEFORE_UPDATE Вторую таблицу переименовал в houseLog. Думаю, с этим ТЗ надо закругляться. Я сделал все на что хватало моего уровня. Возможно больший смысл имело бы разобраться с этим: "...код должен быть покрыт нагрузочными тестами, приведены оценки планов запроса..." Не представляю, как это сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:29 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Про триггер и формат даты - ОК. Если ты бд такую взял. А остальные ошибки не исправил дело твоё. Двойка с плюсом. Модель не рисовал тоже дело твоё. Устраивайся джуном. Там научат. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:36 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton У меня где-то был исходник CDC который все изменения всех таблиц БД складывает в EAV-табличку. Могу автору пошарить его. Автор дату как строку пишет, а мы ему счас легаси сунем. А что это CDC? Да сорян. Аббревиатура редкая. Вот тут https://en.wikipedia.org/wiki/Change_data_capture ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:53 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp GrossmasteR Может быть в SQLite не удастся объединить триггеры? Модель таблички рисует. Это нам тут невтерпёж)) А мне вообще плевать на репликацию сердставми чистого PG. Тут уж или покупать коробочное решение или отказаться от амбиций. В качестве лирического отступления я просто предлагаю вспомнить старика Эрика Брювера и поговорить о том какую систему мы строим? Что будет если между master-slave сеть мигнула? Мы замедлим транзакции в мастере? Мы будем их буферизировать? Куда? Как долго? Что будет если сеть отсутствовала сутки? Где хранить изменения по CDC? Как восстанавливать slave после простоя если мы приняли решение что данные по CDC уже неактуальны? Что будет если мы отказываемся от синхронности? Бизнес будет с этим ОК? Такие потери возможны для бизнеса в случае временнОго рассогласования master-slave? Вот пока мы не ответим на эти вопросы - дизайнить нет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 11:59 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton, Крутая ссылка. И даже пример картинки Модели есть. Что очень не любят делат два мембера тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:01 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Тут уж или покупать коробочное решение или отказаться от амбиций. На ТЗ архитектора он не тянет. А ты предлагаешь поговорить?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:03 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton Тут уж или покупать коробочное решение или отказаться от амбиций. На ТЗ архитектора он не тянет. А ты предлагаешь поговорить?)) Топик течет как река. И кто запретит нам тут поговорить о том что наболело? Но если автор будет сильно в обиде - мы уйдем на север в другой топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:05 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Вот пока мы не ответим на эти вопросы - дизайнить нет смысла. Просто оговорить на пальцах возможные решения. Их море. По твоей ссылке море решений. ... Но автор сказал - на джуна и в банк))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:06 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton И кто запретит нам тут поговорить о том что наболело? mayton Топик течет как река. Сам ответил. Видно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:07 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Что будет если между master-slave сеть мигнула? Мы замедлим транзакции в мастере? Мы будем их буферизировать? Куда? Как долго? Что будет если сеть отсутствовала сутки? Если ещё и ставить достижимые задачи, то ведомый имеет право отставать от ведущего. В нормальной ситуации - на минуты, при обрыве связи - на время обрыва. Куда буферизировать - особого выбора нет: держать изменения только в памяти - так себе решение. В том числе и по соображениям надёжности. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:28 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Что будет если между master-slave сеть мигнула? Мы замедлим транзакции в мастере? Мы будем их буферизировать? Куда? Как долго? Что будет если сеть отсутствовала сутки? Где хранить изменения по CDC? Как восстанавливать slave после простоя если мы приняли решение что данные по CDC уже неактуальны? Что будет если мы отказываемся от синхронности? Бизнес будет с этим ОК? Такие потери возможны для бизнеса в случае временнОго рассогласования master-slave? Если что... или война, то есть админка админу для разрешения коллизий в очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:44 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
вчера все нормально работало. сегодня создаю таблицу, добавляю в таблицу объект Код: java 1.
id становится "1" Пытаюсь обновить Код: java 1.
получаю exception в этом методе: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
что изменилось, не пойму ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:52 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Ты не asv79? Очень похожий стиль работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 12:55 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR получаю exception в этом методе: Ты серъезно? Вот мы щас должны включить телепатов и увидеть твой стектрейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 14:26 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Интересно зачем делать объект из класса GrossmasteR Код: java 1.
Чтобы сразу в стеке ниже из объекта обратно делать простые типы Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 14:44 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton, Противники ООП пошутят - ООП головного мозга. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 14:45 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Да тут непричем ООП. Я знавал разных админов и девопсов которые интуитивно подобные проблемы решали просто глядя в логфайл. И приэтом они нихрена не знали Java. Базовый английский. И понимание некоторых кодов ошибок БД - всё решало. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 18:11 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton, Так тут конкретно в данном примере усложнение жизни. Есть метод ЗаписатьВбд( Внутри нужен String. Занафига оборачивать в класс new MyClass() ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 18:35 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Вот это? Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 19:22 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Да это какой-то пробный код или тестовый. Если-б это была SpringData то там были-б другие методы. Типа. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 19:40 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Надо-бы форкнуть какой-то топик относительно репликации CDC через JMX. И я очень хотел отвязаться от БД. К сожалению получение мета-данных о таблицах слишком уж по разному работает. И чаще я плевал и подключал либо v$tables из Oracle или через information_schema.columns в PG. (автор не переживай это не для тебя. Это отдельная идея). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 19:54 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Вот это? Код: java 1.
mayton К сожалению получение мета-данных о таблицах слишком уж по разному работает. Да. Все что там по ссылке я переделал и попробовал раньше на работах. Но я все делал без Java. Средствами субд. Именно по разному работает и специфично. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 19:58 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Но я все делал без Java. Средствами субд. Именно по разному работает и специфично. Я серъезно завис на семантике таких вещей как - инстанс - база - схема (namespace) - пользователь Это как город-улица-дом в географии. Сколько сцука ты не придумывай правил а найдется какая-то СУБД которая либо schema-less. Либо в ней пользователь == схема. Либо в ней нет базы. Либо она выставляет еще кучу какой-то семантики типа dbo.* или PUBLIC-пользователь. Вобщм треш угар и содомия. Я забросил попытки обобщить эти сущности. Просто без них ничего универсального не получалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:03 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Уважаемые форумчане, посмотрите, пожалуйста, почему не работает UPDATE. Я уже всю голову сломал вот что пытаюсь сделать в main Код: java 1. 2. 3. 4. 5. 6. 7.
получаю Код: java 1. 2. 3. 4. 5. 6. 7. 8.
все ссылки по порядку Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: java 1. 2. 3. 4. 5. 6. 7.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:06 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
У тебя внутри буквочки e - была ценная диагностическая информация. Ты ее - убил. И вместо этого пере-вызвал своё исключение класса DataAccessException в котором нет ни кода ошибки ни текста самой причины. Нет также стектрейса. Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:10 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
аа-а, я кажется теперь понял. я же во вторую таблицу записываю изменения. и получается у меня insert уже ушел с id 1 а updatом я опять добавляю во вторую таблицу еще один id 1. то есть мне надо без id их туда добавлять что ли ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:18 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
ну да, если я триггеры не инициализирую, все нормально работает. тьфу ты , всю голову сломал. Вопрос, как мне организовать логику, чтобы добавление во вторую таблицу при срабатывании триггера срабатывало нормально? думаю, надо просто не учитывать id да и все ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:30 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton, И не надо обобщать. Это территория СУБД. А субд это город. Ты правильно сказал. А вопрос - что изменилось в городе глупый сам по себе. Опять же нет обоснования Проблемы....которую решаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:31 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR ну да, если я триггеры не инициализирую, все нормально работает. тьфу ты , всю голову сломал. Вопрос, как мне организовать логику, чтобы добавление во вторую таблицу при срабатывании триггера срабатывало нормально? думаю, надо просто не учитывать id да и все Без нее ни одна задача не решается. Даже цветочные букеты в цветочном магазине. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:33 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, а какая тут модель? CREATE TABLE IF NOT EXISTS houses(id INTEGER PRIMARY KEY, price INTEGER NOT NULL, district TEXT NOT NULL, underground TEXT NOT NULL); CREATE TABLE IF NOT EXISTS houses_log(new_id INTEGER NOT NULL, new_price INTEGER NOT NULL, new_district TEXT NOT NULL, new_underground TEXT NOT NULL, date TEXT NOT NULL, operation TEXT NOT NULL); вот и вся модель. ошибка была в том, что new id в houses_log был PRIMARY KEY. Убрал и теперь вроде бы как все в порядке ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:37 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR вот и вся модель. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:40 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, да не, я это я. Глянул его тему. У asv79 там какие-то продвинутые проблемы уже. А я еще совсем зеленый ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 21:48 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
GrossmasteR, Неа. Это ты. - он дату в строках, ты тоже - он не отвечает на вопросы мемберов в топике, ты тоже - он гонит код и плевать на _методологию создания ПО_, ты тоже. GrossmasteR Убрал и теперь вроде бы как все в порядке Его коронная фраза. После этого идет следующий топик или ТЗ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 22:02 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
PetroNotC Sharp GrossmasteR вот и вся модель. мне не до форумов ,покрываю тестами наш адаптерсервис покрывать тестами чужой код,когда сложно понять что хотели сделать авторы и куда и что запрятали -очень весело мне дебагер уже снится ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 19:47 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp пропущено... asv79, перелогинься) мне не до форумов ,покрываю тестами наш адаптерсервис покрывать тестами чужой код,когда сложно понять что хотели сделать авторы и куда и что запрятали -очень весело мне дебагер уже снится Кстати подумай на досуге как составить цифровой потрет sql-участника. Я думаю если анализировать некоторые особые слова - то можно достаточно точно указать - что дескыть да. Это Cтас акк поменял ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:02 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
У нас на одной из прошлых работ, похожим образом заказчики определяли авторов отчетов по ошибках (что бы знать, к кому персонально за оперативным исправлением обращаться). Если запятые - то это Лена Если буквы в словах - то это Юра (возможно перепутал местами, но суть думаю ясна) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:10 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Кстати подумай на досуге как составить цифровой потрет sql-участника. Запиливай тему с коду Парсер сайта (если надо), я могу написать Вопрос, кто готов ИИ (нейронную сеть) разработать ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:12 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
В качестве первого приблежения (без ИИ) - база данных слов ==> словарный запас (частота использования слов), типовые ошибки в написании. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:13 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Скорее типовые (любимые) словосочетания. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:14 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton Кстати подумай на досуге как составить цифровой потрет sql-участника. Запиливай тему с коду Парсер сайта (если надо), я могу написать Вопрос, кто готов ИИ (нейронную сеть) разработать Я помню что Базист писал парсер сайта. И парсил ПТ чтоб доказать преимущества своего "движка". А вот мне все веб-клиенты лень писать. Тоесть могу кошно ... но чёт ломает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:32 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev У нас на одной из прошлых работ, похожим образом заказчики определяли авторов отчетов по ошибках (что бы знать, к кому персонально за оперативным исправлением обращаться). Если запятые - то это Лена Если буквы в словах - то это Юра (возможно перепутал местами, но суть думаю ясна) У меня была идея - строить Марковские сети для каждого акка. Хотя ... может я просто невкурсе современных методов. Типа спамо-фильтров... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:34 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton Надо-бы форкнуть какой-то топик относительно репликации CDC через JMX. И я очень хотел отвязаться от БД. К сожалению получение мета-данных о таблицах слишком уж по разному работает. И чаще я плевал и подключал либо v$tables из Oracle или через information_schema.columns в PG. (автор не переживай это не для тебя. Это отдельная идея). Обещал. Сделал. https://www.sql.ru/forum/1321816/tyapnichnyy-cdc-jms Тьфу блин. Конешно же JMS. А я что? JMX написал... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:35 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
mayton А вот мне все веб-клиенты лень писать. Тоесть могу кошно ... но чёт ломает. Первую версию парсера написать за вечер/выходные вполне можно. Готов за выходные перелопатить пару тысячь сообщений в формат БД (insert'ов) mayton У меня была идея - строить Марковские сети для каждого акка. Я даже слов таких не знаю "Марковские сети" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:42 |
|
Мониторинг изменений в базах данных
|
|||
---|---|---|---|
#18+
Делали подобную систему - если без нейронок, то алгоритм следующий - 1) Склеиваем все сообщения автора в одну строку 2) Фильтруем стоп слова - предлоги и общеупотребительные 3) делаем TF\IDF индекс для выбора сотни самых значимых и необычных слов автора 4) Переводим все в векторный формат(каждому слову будет соответствовать double) 5) ищем симиларити между двумя мемюерами посредством Word2Vec лиюо другого алгоритма. Тут есть пара нюансов - текста должно быть много, от 1000 постов - иначе не хватит выборки. У нас работало с точностью 60-70%, можно было конечно заморачиться еще суффиксами\n-граммами, знаками препинания, заглавная ли первая буква и т.д но нам хватало. В этом форуме могут еще сработать такие признаки как смайлики, формат кода(если вообще вставляет), время когда человек пишет(обычные рабочие часы), тематика вопросов и т.д - думаю дажебез нейронки можно построить точную модель. а на нейронке - так там вообще выборка сумасшедшая нужна для точности ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2020, 20:52 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120918]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
56ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
2581ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 2960ms |
0 / 0 |