Циклическая база данных

Поделись знанием:
Перейти к: навигация, поиск

Циклическая база данных (англ. Round-robin Database, RRD) — база данных, объём хранимых данных которой не меняется со временем,[1] поскольку количество записей постоянно, в процессе сохранения данных они используются циклически.[2][3][4] Как правило, используется для хранения информации, которая перезаписывается через равные интервалы времени.

Наибольшее применение нашла в программе MRTG, которая позднее была вытеснена пакетом программ RRDtool.[5]

СУБД и интерфейсы для циклической БД включены в репозитории крупнейших дистрибутивов Linux[6][7][8][9] и в хранилище Perl библиотек CPAN.[10] Также СУБД RRDtool доступна как модуль для CMS Drupal.[11]





Структура БД

Одна циклическая база данных можеть хранить один или несколько наборов данных, которые объединяются в архивы (RRA — round robin archive). Кольцевые таблицы архивов по структуре аналогичны массивам, у которых адрес последнего элемента совпадает с адресом первого элемента. Положение последнего обновленного элемента хранится в виде указателя. Архивы, как правило, связаны между собой как матрешки, каждый последующий архив хранит консолидированную информацию из предыдущего. Для этого используются функции консолидации, встроенные в базу данных. Это позволяет применять эти функции автоматически при обновлении информации в БД. Один архив хранит данные с небольшим интервалом между записями, другой, через заданное количество интервалов, сохраняет консолидированные данные из предыдущего, последующий делает это ещё реже и т. д.[12]

Консолидация данных

Если записывать данные через небольшие интервалы времени, а потом формировать среднее (максимальное, минимальное и т. д.) значения за год или любой другой достаточно большой интервал времени, то вычисления и сам процесс выборки из БД может потребовать большое количество ресурсов. Для того, чтобы избежать этого, в циклических базах данных используется консолидация данных при записи, а не во время считывания. Периодов консолидации может быть сколько угодно (неделя, месяц, квартал, год и т. д.). Для осуществления вычислений используются специальные функции консолидации (англ. consolidation function, CF), такие как:

  • average — среднее значение
  • minimum — минимальное значение
  • maximum — максимальное значение
  • total — общее значение

Типы данных

Основные типы данных:[13]

  • COUNTER
  • GAUGE
  • DERIVE
  • ABSOLUTE
  • COMPUTE

COUNTER — это счетчик, значение которого может только увеличиваться, при сохранении данных такого типа из текущего значения вычитается предыдущее.

GAUGE — произвольные значения. Данный тип используется для данных, которые могут как уменьшаться, так и возрастать (допустим температура объекта).

Тип DERIVE — это тот же счетчик, но с возможностью хранить не только постоянно возрастающие, но и убывающие значения, то есть разница между смежными значениями может быть отрицательной. При этом важно помнить, что для этого типа не производится проверка на переполнение.

ABSOLUTE — это тоже модификация счетчика, отличие состоит в том, что разница между значениями не вычисляется, а сохраняются сами значения счетчика и счетчик обнуляется при чтении. Этот тип удобно использовать для подсчета количества событий, произошедших с момента последнего считывания.

Тип COMPUTE используется для записи вычисляемых значений на основании данных из других источников данных (англ. Data Source, DS) текущей БД RRD. В теории баз данных такие поля называют вычисляемыми или виртуальными. Этот источник данных не указывается при операции обновления (update), но его основные контрольные значения (англ. Primary Data Points, PDPs) вычисляются из основных контрольных значений (PDPs) других источников данных, путём применения к ним формул записанных в формате обратной польской записи (англ. Reverse Polish Notation, RPN). Функции консолидации тоже применимы к этому типу данных.

Интерполяция данных

В связи с тем, что циклические базы данных часто используются для представления данных, распределенных во времени через равные интервалы времени, в механизме такой базы предусмотрена следующая особенность: если при записи в базу по каким-то причинам (например, задержка вычисления значения) данные не были записаны вовремя (например запись произошла на 3 секунды позже), то данные все равно будут записаны так, как если бы они были предоставлены вовремя. Сам «механизм» циклической базы данных изменит данные для коррекции (пропорционально времени запаздывания или отставания). Другими словами, в саму базу данных встроена система корректирования аберраций (англ. Aberrant Behavior Detection). Эта система состоит из трех компонентов:[14]

  • Механизм математического (статистического) прогнозирования значения следующей порции данных (которые будут записаны).
  • Механизм вычисления отклонения реальных данных от прогнозированной (расчетной) величины.
  • Механизм принятия решений в зависимости от степени отклонения значения (или серии значений) от прогнозированной (расчетной) величины.

Как работает интерполяция аберрированных данных легко понять, рассмотрев конкретные значения:

данные в БД RRD реальные данные
time+000:   0 delta="U"
time+300: 300 delta=300
time+600: 600 delta=300
time+900: 900 delta=300
time+000:    0 delta="U"
time+300:  300 delta=300
time+603:  603 delta=303
time+900:  900 delta=297

Но в БД хранятся не только интерполированные данные, но и данные, которые непосредственно вводились. Это необходимо для более точной интерполяции последующих данных.

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

Напишите отзыв о статье "Циклическая база данных"

Примечания

  1. h20195.www2.hp.com/V2/GetPDF.aspx/4AA1-4053ENW.pdf
  2. iboxjo.h1.ru/books/pfsense/ebook/pfSense_SystemMonitoring_CH22.pdf
  3. Tobias Oetiker. [www.usenix.org/event/lisa98/full_papers/oetiker/oetiker.pdf MRTG. The Multi Router Traffic Grapher]. — Zurich: Swiss Federal Institute of Technology, 1998.
  4. [www.ibm.com/developerworks/ru/edu/au-webperfrrd/section3.html Использование RRDtool для диагностики причин проблем с производительностью Web-приложений]
  5. [robertogaloppini.net/2008/06/17/open-source-monitoring-rrdtool-13-available-a-chat-with-tobias-oetiker/ Open Source Monitoring: RRDTool 1.3 available, a chat with Tobias Oetiker]
  6. [pkgs.org/download/librrd_th.so.4()(64bit) librrd_th.so.4()(64bit) RPM DEB Free Download for Linux — pkgs.org]
  7. [packages.ubuntu.com/hardy/torrus-common Ubuntu — Details of package torrus-common in hardy]
  8. [packages.debian.org/ru/lenny-backports/s390/rrdtool-tcl Debian — Подробная информация о пакете rrdtool-tcl в lenny-backports]
  9. [lists.fedoraproject.org/pipermail/package-announce/2008-January/006470.html Fedora 8 Update: rrdtool-1.3-0.4.beta3.fc8]
  10. [metacpan.org/pod/RRDTool::OO RRDTool::OO - metacpan.org]
  11. [drupal.org/project/rrdtool RRDtool | drupal.org]
  12. [oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html RRDtool — rrdtutorial]
  13. [oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html RRDtool — rrdcreate]
  14. [oss.oetiker.ch/rrdtool/doc/rrdtool.en.html RRDtool — rrdtool]

См. также

Ссылки

  • [www.xakep.ru/magazine/xa/119/144/1.asp Универсальный наблюдатель], статья в xakep.ru
  • [webcache.googleusercontent.com/search?q=cache:www.monitoring-fr.org/2011/10/la-supervision-peut-elle-predire/]  (фр.)


Отрывок, характеризующий Циклическая база данных

– Ваше сиятельство, когда прикажете доставить? – сказал Митенька. – Изволите знать, что… Впрочем, не извольте беспокоиться, – прибавил он, заметив, как граф уже начал тяжело и часто дышать, что всегда было признаком начинавшегося гнева. – Я было и запамятовал… Сию минуту прикажете доставить?
– Да, да, то то, принеси. Вот графине отдай.
– Экое золото у меня этот Митенька, – прибавил граф улыбаясь, когда молодой человек вышел. – Нет того, чтобы нельзя. Я же этого терпеть не могу. Всё можно.
– Ах, деньги, граф, деньги, сколько от них горя на свете! – сказала графиня. – А эти деньги мне очень нужны.
– Вы, графинюшка, мотовка известная, – проговорил граф и, поцеловав у жены руку, ушел опять в кабинет.
Когда Анна Михайловна вернулась опять от Безухого, у графини лежали уже деньги, всё новенькими бумажками, под платком на столике, и Анна Михайловна заметила, что графиня чем то растревожена.
– Ну, что, мой друг? – спросила графиня.
– Ах, в каком он ужасном положении! Его узнать нельзя, он так плох, так плох; я минутку побыла и двух слов не сказала…
– Annette, ради Бога, не откажи мне, – сказала вдруг графиня, краснея, что так странно было при ее немолодом, худом и важном лице, доставая из под платка деньги.
Анна Михайловна мгновенно поняла, в чем дело, и уж нагнулась, чтобы в должную минуту ловко обнять графиню.
– Вот Борису от меня, на шитье мундира…
Анна Михайловна уж обнимала ее и плакала. Графиня плакала тоже. Плакали они о том, что они дружны; и о том, что они добры; и о том, что они, подруги молодости, заняты таким низким предметом – деньгами; и о том, что молодость их прошла… Но слезы обеих были приятны…


Графиня Ростова с дочерьми и уже с большим числом гостей сидела в гостиной. Граф провел гостей мужчин в кабинет, предлагая им свою охотницкую коллекцию турецких трубок. Изредка он выходил и спрашивал: не приехала ли? Ждали Марью Дмитриевну Ахросимову, прозванную в обществе le terrible dragon, [страшный дракон,] даму знаменитую не богатством, не почестями, но прямотой ума и откровенною простотой обращения. Марью Дмитриевну знала царская фамилия, знала вся Москва и весь Петербург, и оба города, удивляясь ей, втихомолку посмеивались над ее грубостью, рассказывали про нее анекдоты; тем не менее все без исключения уважали и боялись ее.
В кабинете, полном дыма, шел разговор о войне, которая была объявлена манифестом, о наборе. Манифеста еще никто не читал, но все знали о его появлении. Граф сидел на отоманке между двумя курившими и разговаривавшими соседями. Граф сам не курил и не говорил, а наклоняя голову, то на один бок, то на другой, с видимым удовольствием смотрел на куривших и слушал разговор двух соседей своих, которых он стравил между собой.
Один из говоривших был штатский, с морщинистым, желчным и бритым худым лицом, человек, уже приближавшийся к старости, хотя и одетый, как самый модный молодой человек; он сидел с ногами на отоманке с видом домашнего человека и, сбоку запустив себе далеко в рот янтарь, порывисто втягивал дым и жмурился. Это был старый холостяк Шиншин, двоюродный брат графини, злой язык, как про него говорили в московских гостиных. Он, казалось, снисходил до своего собеседника. Другой, свежий, розовый, гвардейский офицер, безупречно вымытый, застегнутый и причесанный, держал янтарь у середины рта и розовыми губами слегка вытягивал дымок, выпуская его колечками из красивого рта. Это был тот поручик Берг, офицер Семеновского полка, с которым Борис ехал вместе в полк и которым Наташа дразнила Веру, старшую графиню, называя Берга ее женихом. Граф сидел между ними и внимательно слушал. Самое приятное для графа занятие, за исключением игры в бостон, которую он очень любил, было положение слушающего, особенно когда ему удавалось стравить двух говорливых собеседников.
– Ну, как же, батюшка, mon tres honorable [почтеннейший] Альфонс Карлыч, – говорил Шиншин, посмеиваясь и соединяя (в чем и состояла особенность его речи) самые народные русские выражения с изысканными французскими фразами. – Vous comptez vous faire des rentes sur l'etat, [Вы рассчитываете иметь доход с казны,] с роты доходец получать хотите?
– Нет с, Петр Николаич, я только желаю показать, что в кавалерии выгод гораздо меньше против пехоты. Вот теперь сообразите, Петр Николаич, мое положение…
Берг говорил всегда очень точно, спокойно и учтиво. Разговор его всегда касался только его одного; он всегда спокойно молчал, пока говорили о чем нибудь, не имеющем прямого к нему отношения. И молчать таким образом он мог несколько часов, не испытывая и не производя в других ни малейшего замешательства. Но как скоро разговор касался его лично, он начинал говорить пространно и с видимым удовольствием.
– Сообразите мое положение, Петр Николаич: будь я в кавалерии, я бы получал не более двухсот рублей в треть, даже и в чине поручика; а теперь я получаю двести тридцать, – говорил он с радостною, приятною улыбкой, оглядывая Шиншина и графа, как будто для него было очевидно, что его успех всегда будет составлять главную цель желаний всех остальных людей.
– Кроме того, Петр Николаич, перейдя в гвардию, я на виду, – продолжал Берг, – и вакансии в гвардейской пехоте гораздо чаще. Потом, сами сообразите, как я мог устроиться из двухсот тридцати рублей. А я откладываю и еще отцу посылаю, – продолжал он, пуская колечко.
– La balance у est… [Баланс установлен…] Немец на обухе молотит хлебец, comme dit le рroverbe, [как говорит пословица,] – перекладывая янтарь на другую сторону ртa, сказал Шиншин и подмигнул графу.
Граф расхохотался. Другие гости, видя, что Шиншин ведет разговор, подошли послушать. Берг, не замечая ни насмешки, ни равнодушия, продолжал рассказывать о том, как переводом в гвардию он уже выиграл чин перед своими товарищами по корпусу, как в военное время ротного командира могут убить, и он, оставшись старшим в роте, может очень легко быть ротным, и как в полку все любят его, и как его папенька им доволен. Берг, видимо, наслаждался, рассказывая всё это, и, казалось, не подозревал того, что у других людей могли быть тоже свои интересы. Но всё, что он рассказывал, было так мило степенно, наивность молодого эгоизма его была так очевидна, что он обезоруживал своих слушателей.
– Ну, батюшка, вы и в пехоте, и в кавалерии, везде пойдете в ход; это я вам предрекаю, – сказал Шиншин, трепля его по плечу и спуская ноги с отоманки.
Берг радостно улыбнулся. Граф, а за ним и гости вышли в гостиную.

Было то время перед званым обедом, когда собравшиеся гости не начинают длинного разговора в ожидании призыва к закуске, а вместе с тем считают необходимым шевелиться и не молчать, чтобы показать, что они нисколько не нетерпеливы сесть за стол. Хозяева поглядывают на дверь и изредка переглядываются между собой. Гости по этим взглядам стараются догадаться, кого или чего еще ждут: важного опоздавшего родственника или кушанья, которое еще не поспело.
Пьер приехал перед самым обедом и неловко сидел посредине гостиной на первом попавшемся кресле, загородив всем дорогу. Графиня хотела заставить его говорить, но он наивно смотрел в очки вокруг себя, как бы отыскивая кого то, и односложно отвечал на все вопросы графини. Он был стеснителен и один не замечал этого. Большая часть гостей, знавшая его историю с медведем, любопытно смотрели на этого большого толстого и смирного человека, недоумевая, как мог такой увалень и скромник сделать такую штуку с квартальным.