Sign inSign up

lsilvest/ztsdb

By lsilvest

•Updated over 6 years ago

Contains 'ztsdb' and 'append' executables, together with 'R' and the 'rztsdb' library for 'R'.

Image
0

10K+

lsilvest/ztsdb repository overview

alt text

ztsdb⁠ is a fast, small and lightweight multi-user noSQL column-store database management system designed and optimized for the update, storage and handling of time-series data. Its query and manipulation language is based on the R programming language⁠ and allows complex selections of data inside a time-series or across multiple time-series. It is licensed under GPLv3.

This image contains the DBMS itself (ztsdb), a load test utility to append messages to a time-series in the DBMS (append) and the R programming language environment (R) with a library to access the DBMS (rztsdb). The latter allows to play around with the seamless connectivity that ztsdb allows between the DBMS and R.

⁠Using the image

⁠Running a container and starting ztsdb
docker run -it lsilvest/ztsdb ztsdb

You can use the quit command to terminate the ztsdb instance at any time:

q()
⁠Running multiple instances

One can start multiple containers to test multiple instances or to simulate real-time append to time-series. To access an instance from outside the container, publish the listen port when running the container:

docker run -it -p 19300:19300 lsilvest/ztsdb ztsdb -p 19300

Make note of the IP address of the container; here is one way of getting it using the 'system' function:

system("ip addr show")

In this example, we will assume the container's IP address is 172.17.0.2.

⁠Connecting from another ztsdb instance

Other ztsdb instances can be started in the same way as above. Once an instance has been started, a connection can be established as usual from the ztsdb command line:

docker run -it lsilvest/ztsdb ztsdb
c1 <- connection("172.17.0.2", 19300)
⁠Append utility

The append utility generates append messages for a time-series at a specified frequency:

usage: append <ip> <port> <rate> <varname[,name1,name2,...]> <ncols> [max-msgs]

To use it, a time-series must first be created on the ztsdb server instance:

data  <-  matrix(0, 0, 3, dimnames=list(NULL, c("a","b","c")))
idx   <-  as.time(NULL)
a     <<- zts(idx, data)

The append can be started from another container like this (IP address=172.17.0.2, port=19300, rate=100000 msg/second, time-series' name=a, number of columns=3, continue sending indefinitely):

append 172.17.0.2 19300 100000 a 3

More information on the append utility can be found here⁠.

⁠Running R and connecting to the DBMS with the rztsdb library

R can be started from another container like this:

docker run -it lsilvest/ztsdb R

The relevant libraries can then be loaded like this:

library(rztsdb)

And a connection can then be established to the running instance:

con <- connection("172.17.0.2", 19300)

and used in its usual idiomatic way (seehttp://www.ztsdb.org⁠ for more info):

con ? 2*2                        # ask the remote instance to perform a multiplication
con ? matrix(1:10, 5, 2)         # ask the remote instance to create a matrix
con ? (a <<- matrix(1:10, 5, 2)  # create global variable `a` on the remote instance

⁠Further info

Tag summary

Content type

Image

Digest

Size

491.1 MB

Last updated

over 6 years ago

docker pull lsilvest/ztsdb