Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. Проверка изменений в Таблицах (DB)

Проверка изменений в Таблицах (DB)

Scheduled Pinned Locked Moved Support (Russian)
15 Posts 3 Posters 23.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V
    V
    VSS
    wrote on last edited by
    #3

    @alk said in Проверка изменений в Таблицах (DB):

    Я бы возвращал время последней записи в виде unix timestamp (количество секунд) и потом сделал бы threshold с функцией delta.

    Что-то типа:select extract(epoch from record_timestamp) from … where … order by record_timestamp desc limit 1

    Запрос можно выполнять через DBQuery субагент: https://www.netxms.org/documentation/adminguide/subagents.html#dbquery

    Спасибо за подсказку! А как часто проводить опрос через DBQuery. Получается чтобы не пропустить новую запись надо или хранить в какой-то переменной индекс предыдущей или опрашивать очень часто?

    1 Reply Last reply
    0
    • A
      A
      Alex Kirhenshtein
      wrote on last edited by
      #4

      В данных, которые лежат в таблице – в них есть время добавления записи?

      1 Reply Last reply
      0
      • A
        A
        Alex Kirhenshtein
        wrote on last edited by
        #5

        Ну и самое простое (если записи только добавляются) – delta по max:select count(*) from t1

        1 Reply Last reply
        0
        • V
          V
          VSS
          wrote on last edited by
          #6

          @alk said in Проверка изменений в Таблицах (DB):

          В данных, которые лежат в таблице – в них есть время добавления записи?

          Да специально добавили дату, но вопрос в том как определить, что DBQuery вернул именно последнюю запись. Т.е. получается надо где-то хранить или время последнего получения или номер или количество объектов.

          И еще не понятно как часто организовать опрос... ведь данные сыпятся в БД достаточно часто!

          1 Reply Last reply
          0
          • K
            K
            kozlov_ao
            wrote on last edited by
            #7

            order by record_timestamp desc

            сортирует по дате

            limit 1

            вернет только одну запись

            вот и получается последняя добавленная запись.

            По поводу частоты. Реши для себя, какой промежуток между добавлениями для тебя критичен, с такой частотой и дергай.

            1 Reply Last reply
            0
            • V
              V
              VSS
              wrote on last edited by
              #8

              @kozlov_ao said in Проверка изменений в Таблицах (DB):

              order by record_timestamp desc

              сортирует по дате

              limit 1

              вернет только одну запись

              вот и получается последняя добавленная запись.

              По поводу частоты. Реши для себя, какой промежуток между добавлениями для тебя критичен, с такой частотой и дергай.

              Спасибо с частотой понятно, тут надо искать оптимальное значение, но похоже придется брать 1 секунда ведь чаще нельзя..

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

              1 Reply Last reply
              0
              • K
                K
                kozlov_ao
                wrote on last edited by
                #9

                Возможно я не до конца понял, что ты хочешь...
                Данный запрос вернет время добавления записи в секундах. Их и смотришь. Куда точнее и реальнее то? 🙂

                1 Reply Last reply
                0
                • V
                  V
                  VSS
                  wrote on last edited by
                  #10

                  @kozlov_ao said in Проверка изменений в Таблицах (DB):

                  Возможно я не до конца понял, что ты хочешь...
                  Данный запрос вернет время добавления записи в секундах. Их и смотришь. Куда точнее и реальнее то? 🙂

                  Попробую расписать поподробнее. Есть таблица журнала в нее постоянно сыпятся события. Для событий есть поля Тип, Номер объекта, Значение события, Время возникновения . Задача стоит в том, что надо проверить что между двумя последними событиями в таблице для тип = "..." и номера = "..." и значение = "..." разница во времени возникновения не превысила интервал Х.

                  1 Reply Last reply
                  0
                  • K
                    K
                    kozlov_ao
                    wrote on last edited by
                    #11

                    ну.. интервал Х = периоду опроса, делаешь запрос.. если последняя запись старее чем "интервал Х" - выплевываем аларм. Такой вариант не подходит? или нужно сравнение делать именно между существующими записями?

                    1 Reply Last reply
                    0
                    • V
                      V
                      VSS
                      wrote on last edited by
                      #12

                      @kozlov_ao said in Проверка изменений в Таблицах (DB):

                      ну.. интервал Х = периоду опроса, делаешь запрос.. если последняя запись старее чем "интервал Х" - выплевываем аларм. Такой вариант не подходит? или нужно сравнение делать именно между существующими записями?

                      да, сравнение нужно делать именно между существующими записями и получается что опрос нужно делать для записей у которых разное поле значение = "ON" и значение = "OFF".

                      Появилась идея сделать запрос в котором объединить несколько полей в один результат а потом как-то выкрутить при помощи Transformation скрипта .... ?

                      1 Reply Last reply
                      0
                      • K
                        K
                        kozlov_ao
                        wrote on last edited by
                        #13

                        ну тогда тебе 2 DCI надо:

                        1. получает последнее значение для ON
                        2. получает последнее значение для OFF и в Transformation Script вычислять разницу между $1 и значением из п.1
                        1 Reply Last reply
                        0
                        • V
                          V
                          VSS
                          wrote on last edited by
                          #14

                          @kozlov_ao said in Проверка изменений в Таблицах (DB):

                          ну тогда тебе 2 DCI надо:

                          1. получает последнее значение для ON
                          2. получает последнее значение для OFF и в Transformation Script вычислять разницу между $1 и значением из п.1

                          Спасибо, будем пробовать!

                          Я же правильно понял что из DBQuery невозможно вернуть несколько результатов, т.е. в скрипте есть только $1?

                          1 Reply Last reply
                          0
                          • K
                            K
                            kozlov_ao
                            wrote on last edited by
                            #15

                            да

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            Powered by NodeBB Contributors
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups