База данных шахматных окончаний
- 1 year ago
- 0
- 0
Циклическая база данных ( англ. Round-robin Database, RRD ) — база данных , объём хранимых данных которой не меняется со временем, поскольку количество записей постоянно, в процессе сохранения данных они используются циклически . Как правило, используется для хранения информации, которая перезаписывается через равные интервалы времени.
Наибольшее применение нашла в программе MRTG , которая позднее была вытеснена пакетом программ RRDtool .
СУБД и интерфейсы для циклической БД включены в репозитории крупнейших дистрибутивов Linux и в хранилище Perl библиотек CPAN . Также СУБД RRDtool доступна как модуль для CMS Drupal .
Одна циклическая база данных можеть хранить один или несколько наборов данных, которые объединяются в архивы (RRA — round robin archive). Кольцевые таблицы архивов по структуре аналогичны массивам , у которых адрес последнего элемента совпадает с адресом первого элемента. Положение последнего обновленного элемента хранится в виде указателя . Архивы, как правило, связаны между собой как матрешки, каждый последующий архив хранит консолидированную информацию из предыдущего. Для этого используются функции консолидации, встроенные в базу данных. Это позволяет применять эти функции автоматически при обновлении информации в БД. Один архив хранит данные с небольшим интервалом между записями, другой, через заданное количество интервалов, сохраняет консолидированные данные из предыдущего, последующий делает это ещё реже и т. д.
Если записывать данные через небольшие интервалы времени, а потом формировать среднее (максимальное, минимальное и т. д.) значения за год или любой другой достаточно большой интервал времени, то вычисления и сам процесс выборки из БД может потребовать большое количество ресурсов. Для того, чтобы избежать этого, в циклических базах данных используется консолидация данных при записи, а не во время считывания. Периодов консолидации может быть сколько угодно (неделя, месяц, квартал, год и т. д.). Для осуществления вычислений используются специальные функции консолидации ( англ. consolidation function , CF), такие как:
Основные типы данных:
COUNTER — это счетчик, значение которого может только увеличиваться, при сохранении данных такого типа из текущего значения вычитается предыдущее.
GAUGE — произвольные значения. Данный тип используется для данных, которые могут как уменьшаться, так и возрастать (допустим температура объекта).
Тип DERIVE — это тот же счетчик, но с возможностью хранить не только постоянно возрастающие, но и убывающие значения, то есть разница между смежными значениями может быть отрицательной. При этом важно помнить, что для этого типа не производится проверка на переполнение.
ABSOLUTE — это тоже модификация счетчика, отличие состоит в том, что разница между значениями не вычисляется, а сохраняются сами значения счетчика и счетчик обнуляется при чтении. Этот тип удобно использовать для подсчета количества событий, произошедших с момента последнего считывания.
Тип COMPUTE используется для записи вычисляемых значений на основании данных из других источников данных ( англ. Data Source, DS ) текущей БД RRD. В теории баз данных такие поля называют вычисляемыми или виртуальными. Этот источник данных не указывается при операции обновления (update), но его основные контрольные значения ( англ. Primary Data Points, PDPs ) вычисляются из основных контрольных значений (PDPs) других источников данных, путём применения к ним формул записанных в формате обратной польской записи ( англ. Reverse Polish Notation , RPN ). тоже применимы к этому типу данных.
В связи с тем, что циклические базы данных часто используются для представления данных, распределенных во времени через равные интервалы времени, в механизме такой базы предусмотрена следующая особенность: если при записи в базу по каким-то причинам (например, задержка вычисления значения) данные не были записаны вовремя (например запись произошла на 3 секунды позже), то данные все равно будут записаны так, как если бы они были предоставлены вовремя. Сам «механизм» циклической базы данных изменит данные для коррекции (пропорционально времени запаздывания или отставания). Другими словами, в саму базу данных встроена система корректирования аберраций ( англ. Aberrant Behavior Detection ). Эта система состоит из трех компонентов:
Как работает интерполяция аберрированных данных легко понять, рассмотрев конкретные значения:
данные в БД 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 |
Но в БД хранятся не только интерполированные данные, но и данные, которые непосредственно вводились. Это необходимо для более точной интерполяции последующих данных.
Интерполяция данных может привести к их искажению, поэтому сфера применения ограничена областями, где точность не критична. В других областях используют тип данных, к которому механизм интерполяции не применяется.