Get Started

Sorry, your browser does not support inline SVG.

Download, Execute and Go!

YottaDB is available free of charge. Install YottaDB on your Linux machine, or use a Docker container, and begin working today!

Install YottaDB using the Install Script

Download the YottaDB installer script in a temporary directory, e.g.:

mkdir /tmp/tmp ; wget -P /tmp/tmp https://gitlab.com/YottaDB/DB/YDB/raw/master/sr_unix/ydbinstall.sh

Make the file executable:

cd /tmp/tmp ; chmod +x ydbinstall.sh

Install YottaDB (typical installation):

sudo ./ydbinstall.sh --utf8 default --verbose

To list all options:

./ydbinstall.sh --help

After installing YottaDB set environment variables and create a default environment in $HOME/.yottadb

source $(pkg-config --variable=prefix yottadb)/ydb_env_set

Accessing YottaDB from different languages is as described below, except that you will be using $HOME/.yottadb instead of /data

Use a Docker Container

Docker Hub has prebuilt YottaDB images. You must have at least docker 17.05.

Pull an image with binaries built from the latest source code:

docker pull yottadb/yottadb-debian:latest-master

The Docker image supports volumes, for persistence and for sharing code and routines between host and container, by mounting a local directory to /data in the container. For example, to use the directory ydb-data as the volume:

docker run -it -v `pwd`ydb-data:/data --network=host yottadb/yottadb-debian:latest-master

Note: You may need to use “sudo docker” in place of “docker” on some platforms depending on the permissions of the docker socket.

If you want to access the database from multiple containers (e.g., to add containers with a tool such as Kubernetes), they will need to share IPC resources and pids. So use a command such as:

docker run -it -v `pwd`ydb-data:/data --network=host --ipc=host --pid=host yottadb/yottadb-debian:latest-master

 

Access from C

Download the sayhelloC.C program, compile it, and run it to set a database node:

root@mnementh:/data# wget https://docs.yottadb.net/AcculturationGuide/sayhelloC.c
...
root@mnementh:/data# gcc $(pkg-config --libs --cflags yottadb) -o sayhelloC sayhelloC.c -lyottadb
root@mnementh:/data# ./sayhelloC
root@mnementh:/data#

Access from Go:

Download the sayhelloGo.go program, compile it, and run it to set a database node:

root@mnementh:/data# wget https://docs.yottadb.net/AcculturationGuide/sayhelloGo.go
...
root@mnementh:/data# go build sayhelloGo.go
root@mnementh:/data# ./sayhelloGo
root@mnementh:/data#

Access from M:

Download the sayhelloM.m program to the r/ subdirectory and run it. It does not need a separate compilation step:

root@mnementh:/data# wget -P r/ https://docs.yottadb.net/AcculturationGuide/sayhelloM.m
...
root@mnementh:/data# yottadb -run sayhelloM
root@mnementh:/data#

Access from Perl:

Download the sayhelloPerl.pl program, make it executable and run it. It does not need a separate compilation step:

root@mnementh:/data# wget https://docs.yottadb.net/AcculturationGuide/sayhelloPerl.pl
...
root@mnementh:/data# chmod +x sayhelloPerl.pl
root@mnementh:/data# ./sayhelloPerl.pl 
root@mnementh:/data#

Access from Rust:

Create a directory for Rust development, and create a package for the sayhelloRust program, and a dependency on YottaDB for that package. Replace the src/main.rs program with sayhelloRust.rs, compile it, move the compiled binary to the $ydb_dir directory and execute it.

root@mnementh:/data# mkdir yottadb-rust ; cd yottadb-rust
root@mnementh:/data/yottadb-rust# export USER=`whoami` # needed by cargo
root@mnementh:/data/yottadb-rust# cargo new sayhelloRust ; cd sayhelloRust/
Created binary (application) `sayhelloRust` package
root@mnementh:/data/yottadb-rust/sayhelloRust# wget https://docs.yottadb.net/AcculturationGuide/sayhelloRust.rs
...
root@mnementh:/data/yottadb-rust/sayhelloRust# mv sayhelloRust.rs src/main.rs
root@mnementh:/data/yottadb-rust/sayhelloRust# echo 'yottadb = "0.1"' >> Cargo.toml
root@mnementh:/data/yottadb-rust/sayhelloRust# cargo build
Updating crates.io index
...
Compiling sayhelloRust v0.1.0 (/data/yottadb-rust/sayhelloRust)
Finished dev [unoptimized + debuginfo] target(s) in 50.92s
root@mnementh:/data/yottadb-rust/sayhelloRust# mv target/debug/sayhelloRust $ydb_dir ; cd $ydb_dir
root@mnementh:/data# ./sayhelloRust 
root@mnementh:/data#

Results:

Dump the database to see updates from programs in multiple languages. The MUPIP program is the YottaDB system administration tool.

root@mnementh:/data# mupip extract -label=Hello -select=hello -format=zwr -stdout
Hello UTF-8
17-JAN-2020 22:29:55 ZWR
^hello("C")="Hello, world!"
^hello("Go")="สวัสดีชาวโลก"
^hello("M")="Приветствую, мир!"
^hello("Perl")="Grüẞ Gott Welt"
^hello("Rust")="こんにちは世界"
%YDB-I-RECORDSTAT, ^hello: Key cnt: 5 max subsc len: 13 max rec len: 36 max node len: 44
%YDB-I-RECORDSTAT, TOTAL: Key cnt: 5 max subsc len: 13 max rec len: 36 max node len: 44
root@mnementh:/data#

 

Dig in with the Acculturation Guide

Since it’s easier to learn by doing, the Acculturation Guide is a series of guided, self-paced, hands-on exercises using virtual machines to get you going with database configuration, journaling, replication, backup, and more.

Documentation

For Supported hardware & operating systems, check the Platforms section of the Release Notes for the latest release.

Explore All YottaDB Projects at GitLab

As all YottaDB software is 100% free / open source, you will find all our work on Gitlab.