Cirkulär databas ( English Round-robin Database, RRD ) - en databas vars mängd lagrad data inte förändras över tiden, [1] eftersom antalet poster är konstant, i processen för att spara data används de cykliskt [ 2] [3] [4] . Används vanligtvis för att lagra information som skrivs över med jämna mellanrum.
Den hittade den största applikationen i MRTG- programmet , som senare ersattes av mjukvarupaketet RRDtool [5] .
DBMS och gränssnitt för den cirkulära databasen ingår i arkiven för de stora Linux- distributionerna [6] [7] [8] [9] och i CPAN- arkivet för Perl- bibliotek [10] . Även DBMS RRDtool är tillgänglig som en modul för CMS Drupal [11] .
En cyklisk databas kan lagra en eller flera datamängder, som kombineras till arkiv (RRA - round robin archive). Ringtabellerna för arkiv liknar strukturen till arrayer , där adressen för det sista elementet är densamma som adressen för det första elementet. Positionen för det senast uppdaterade elementet lagras som en pekare . Arkiv är som regel sammankopplade som dockor, varje efterföljande arkiv lagrar konsoliderad information från det föregående. Detta görs med hjälp av konsolideringsfunktionerna inbyggda i databasen. Detta gör att du kan använda dessa funktioner automatiskt när du uppdaterar information i databasen. Det ena arkivet lagrar data med ett litet intervall mellan poster, det andra, efter ett givet antal intervall, sparar den konsoliderade datan från den föregående, nästa gör det ännu mer sällan, etc. [12]
Om du registrerar data med korta tidsintervall och sedan bildar medelvärdena (maximum, minimum, etc.) för ett år eller något annat tillräckligt stort tidsintervall, kan beräkningarna och provtagningsprocessen från själva databasen kräva en stor mängd resurser. För att undvika detta använder round robin-databaser datakonsolidering på skrivningar snarare än på läsningar. Det kan finnas hur många konsolideringsperioder som helst (vecka, månad, kvartal, år etc.). För att utföra beräkningar används speciella konsolideringsfunktioner ( eng. konsolideringsfunktion , CF), såsom:
Grundläggande datatyper: [13]
COUNTER är en räknare, vars värde bara kan öka, när du sparar data av denna typ subtraheras det tidigare värdet från det aktuella värdet.
GAUGE - godtyckliga värden. Denna typ används för data som både kan minska och öka (till exempel temperaturen på ett objekt).
DERIVE-typen är samma räknare, men med förmågan att lagra inte bara ständigt ökande, utan också minskande värden, det vill säga skillnaden mellan intilliggande värden kan vara negativ. Det är viktigt att komma ihåg att denna typ inte kontrolleras för spill.
ABSOLUTE är också en modifiering av räknaren, skillnaden är att skillnaden mellan värdena inte beräknas, utan själva räknarvärdena sparas och räknaren återställs vid läsning. Den här typen är användbar för att räkna antalet händelser som har inträffat sedan den senaste läsningen.
COMPUTE-typen används för att registrera beräknade värden baserade på data från andra datakällor ( eng. Data Source, DS ) i den aktuella RRD-databasen. I databasteorin kallas sådana fält för beräknade eller virtuella. Den här datakällan anges inte under uppdateringsåtgärden, men dess primära datapunkter (PDP ) beräknas från de primära datapunkterna (PDP) för andra datakällor genom att använda formler för omvänd polsk notation på dem ( engelsk omvänd polsk notation , RPN ). Konsolideringsfunktioner är också tillämpliga på denna datatyp.
På grund av det faktum att cykliska databaser ofta används för att representera data som distribueras över tid med jämna mellanrum, ger mekanismen för en sådan databas följande funktion: om data av någon anledning (till exempel en fördröjning vid beräkning av ett värde) gör det inte spelades in i tid (till exempel inspelningen skedde 3 sekunder för sent), kommer data fortfarande att spelas in som om den hade lämnats i tid. Den cykliska databasen "mekanismen" själv kommer att ändra data för korrigering (proportionell mot fördröjningen eller fördröjningen). Med andra ord har själva databasen ett inbyggt system för upptäckt av avvikande beteende . Detta system består av tre komponenter: [14]
Hur aberrerad datainterpolation fungerar är lätt att förstå genom att titta på specifika värden:
data i RRD-databasen | riktiga data |
---|---|
tid+000: 0 delta="U" tid+300: 300 delta=300 tid+600: 600 delta=300 tid+900: 900 delta=300 | tid+000: 0 delta="U" tid+300: 300 delta=300 tid+603: 603 delta=303 tid+900: 900 delta=297 |
Men databasen lagrar inte bara interpolerad data, utan även data som matats in direkt. Detta är nödvändigt för mer exakt interpolering av efterföljande data.
Datainterpolation kan leda till dataförvrängning, så omfattningen är begränsad till områden där noggrannheten inte är kritisk. I andra områden används en datatyp för vilken interpolationsmekanismen inte är tillämplig.
Databas | |
---|---|
Begrepp |
|
Objekt |
|
Nycklar | |
SQL |
|
Komponenter |