Skip to content

⭕️ A RRD (round robin database) aproach in Mysql

Notifications You must be signed in to change notification settings

jmscarnatto/MyRRDsql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

⭕️ MyRRDsql

A RRD (round robin database) approach in Mysql

This is a simple Mysql procedure to implement a RRD table. This is helpful for projects where storage space is limited or transitory data are suitable to be disposed

Create an empty table with the desired number of rows

CREATE TABLE  `dbanme`.`rrd_tablename` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `sequence_id` int(10) unsigned NOT NULL,
  `value` varchar(30),
  `tstamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO rrd_tablename (sequence_id) VALUES (1,2,3,4,..,n) // n being the final size of your table

Here comes the magic!

DELIMITER $$
DROP PROCEDURE IF EXISTS `dbanme`.`InsertIntoRRD` $$
CREATE PROCEDURE `myDB`.`InsertIntoRRD`(IN xValue VARCHAR(30))
BEGIN
	SET @table_size = (SELECT COUNT(*) as table_size FROM dbanme.rrd_tablename);
	SET @next_sequence_id = (SELECT ((`sequence_id` % @table_size)+1) as next_sequence_id
	  FROM dbanme.rrd_tablename
	  ORDER BY tstamp DESC LIMIT 1);
  INSERT INTO dbanme.rrd_tablename (sequence_id,value,tstamp) VALUES (@next_sequence_id,xValue,now())
  ON DUPLICATE KEY UPDATE value=xValue,tstamp=now();
END $$
DELIMITER ;

Explanation

SET @table_size = (SELECT COUNT(*) as table_size FROM dbanme.rrd_tablename);

This get the total number of a row.

About

⭕️ A RRD (round robin database) aproach in Mysql

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published