Get Started

Sorry, your browser does not support inline SVG.

Download, Execute and Go!

YottaDB software starts with the language agnostic hierarchical key-value database. Around it, we have the Octo SQL engine, a management GUI, and plugins. Language wrappers provide YottaDB APIs for languages other than C and M, which are both included with the core YottaDB database.

Try YottaDB - It's Easy!


After ensuring that prequisites are installed, you can install YottaDB software on your physical or virtual Linux machine.

Virtual Machine

The Acculturation Guide virtual machine has prerequisites installed, and is ready for you to install YottaDB software.


A ready-to-run Docker container that has both prerequisites and the latest YottaDB installed.

Whatever method you choose, we have sample code for you to download to try our software.

Your Linux System

Supported platforms are:

  • Debian GNU/Linux on 64-bit x86, and 32- and 64-bit ARM.
  • Red Hat Enterprise Linux on 64-bit x86
  • SUSE Linux Enterprise on 64-bit x86
  • Ubuntu on 64-bit x86

For supported versions of each platform, check the platforms section of the release notes for the current YottaDB release.

Prerequisite Software

YottaDB and its plugins require a number of common Linux utility programs, tools, shared libraries, and header files. The ydbinstall / script for installing YottaDB checks for prerequisites needed by the software requested to be installed, and reports any that are missing. Use the package manager of your Linux distribution to install any missing prerequisites.

With prerequisites installed, see the Install YottaDB section below to install YottaDB.

Acculturation Guide Virtual Machine

The Acculturation Guide is a self-paced introduction to YottaDB administration and operations. It includes a Debian GNU/Linux x86_64 virtual machine disk image that you can download and run with your preferred virtualization software, such as QEMU, Virtual Box, Hyper-V, Parallels, or VMware. Boot it with 512MB RAM (or more).

You should configure the virtual machine to have host ports of your choice forwarded to ports on the guest for ssh, and optionally Rocto (the Octo server) and the GUI if you want to use them.

  • The virtual machine has an ssh server listening at its standard port, 22. You can login as user ydbuser and password YottaDB Rocks!.
  • After logging in, follow the Install YottaDB instructions below.
  • If you want to connect to Octo from a remote client, you will need to forward a port to connect to Rocto, which listens at port 1337 by default.
  • If you want to use the GUI, you will need to forward a port to connect to its web server, which listens at port 9080 by default.

With the virtual machine booted, see the Install YottaDB section below to install YottaDB.

Install YottaDB

The script downloads and installs YottaDB and plugins. Download the script in a temporary directory, and make it executable, e.g.:

mkdir /tmp/tmp && cd /tmp/tmp && wget && chmod +x


Use the script to install YottaDB and plugins, e.g.

sudo ./                             # Quiet basic installation
sudo ./ --verbose                   # Basic installation
sudo ./ --utf8                      # YottaDB installation with UTF-8 support
sudo ./ --utf8 --octo --gui         # YottaDB installation with UTF-8 support, Octo, and the GUI
./ --help                           # Output a complete list of ydbinstall options
sudo ./ --utf8 --allplugins         # YottaDB installation with UTF-8 support and all plugins


Remember to return to your working directory after installing YottaDB. After installing YottaDB, you can install wrappers (APIs) for supported languages.

Install Language Wrappers


No special action is needed to install the Go API.


Install the Lua API:

git clone
cd lua-yottadb
sudo make install  # Omit sudo in the Docker container
cd ..



Install the node.js module:

npm install nodem



You can install the Perl extension using cpan:

sudo cpan YottaDB # Note: hit ENTER when prompted to use defaults

or use a faster method which takes a few more steps:

git clone
cd yottadb-perl
perl Makefile.PL
sudo make install
cd ..



Install the Python package:

python3 -m pip install yottadb



The cargo command used to run the sample YottaDB Rust program automatically installs the YottaDB Rust wrapper.
Once YottaDB is installed, see the Initializing a YottaDB Environment below.

Initializing a YottaDB Environment

The operation of YottaDB is controlled by environment variables. Sourcing the ydb_env_set file creates a YottaDB environment and database under $HOME/.yottadb. If your working directory is elsewhere, set the environment variable ydb_dir to that directory, e.g., export ydb_dir=/tmp/test.

. /usr/local/etc/ydb_env_set


You should do this on every login session; alternatively put it in a file where it will be executed on each session (.login, .bash_login, or bash_profile for bash). The command also recovers the database in the event that it was not shut down cleanly. After sourcing the ydb_env_set file, you are ready to use YottaDB.

Starting the Rocto Server

If you installed Octo, you can use Rocto to connect to Octo using an ODBC/JDBC client. Create a userid and password of your choice with the command:

yottadb -run %ydboctoAdmin add user demo --readwrite


Then start the Rocto server, which listens on TCP port 1337 by default.

rocto --readwrite


Starting the GUI

If you installed the GUI, you can start it with the command, which listens at port 9080 by default:

yottadb -run %ydbgui --readwrite

Docker Container

Docker Hub has prebuilt YottaDB images. You must have at least Docker 17.05. The Docker image supports volumes, for persistence and for sharing code and routines between host and container, by mounting a host directory at /data in the container.

The ·yottadb-debian:latest container has current YottaDB, Octo, and the GUI already installed. Running it provides you with a initialized environment which is ready to use. To start a container with host ports forwarded, use a command such as:

docker run -p 9080:9080 -p 1337:1337 -it --rm -v $(pwd)/ydb-data:/data


If you want to access a database from multiple containers (e.g., to manage containers with an orchestration tool such as Kubernetes), they will need to share IPC resources and pids because of YottaDB’s in-memory database engine. Use a command such as:

docker run -p 9080:9080 -p 1337:1337 -it --rm -v $(pwd)/ydb-data:/data --hostname=ydbcontainer --ipc=host --pid=host


The userid for the Rocto server is ydb and the password is ydbrocks.

Use YottaDB

YottaDB includes APIs for C and M.


Download the sayhelloC.C program, compile it, and run it:

gcc $(pkg-config --libs --cflags yottadb) -o sayhelloC sayhelloC.c -lyottadb



Download the sayhelloGo.go program, compile it, and run it:

mkdir hello-go
cd hello-go
go mod init
go mod tidy
go get
go build sayhelloGo.go
cd ..



Download the sayhelloLua.lua program and run it:

lua sayhelloLua.lua



Download the sayhelloM.m program to the r/ subdirectory (which is created by the Initializing a YottaDB Environment step and exists in the Docker container), and run it.

wget -P $ydb_dir/r/
yottadb -run sayhelloM



Downlad the sayhelloNode.js program and run it:

node sayhelloNode.js



Download the program, make it executable, and run it:

chmod +x



Download the program, and run it.




Create a package for the program. Using cargo to compile and run the program downloads the API.

cargo new sayhello_rust
cd sayhello_rust
echo 'yottadb = "2.0.0"' >> Cargo.toml
curl >src/
cargo run
cd ..

For other languages, install APIs for your preferred language.

Many Languages, One Database!

Output the data from the database, with each node set from a different program.

$ mupip extract -select='hello' -stdout
YottaDB MUPIP EXTRACT /usr/local/lib/yottadb/r136/mupip extract -select=* -stdout UTF-8
08-FEB-2023  15:26:32 ZWR
^hello("C")="Hello, world!" 
^hello("Lua")="Hallo Wereld"
^hello("M")="Привіт Світ" 
^hello("Node.js")="مرحبا بالعالم" 
^hello("Perl")="Grüẞ Gott Welt" 
^hello("Python")="नमस्ते दुनिया" 
%YDB-I-RECORDSTAT, ^hello: Key cnt: 8 max subsc len: 16 max rec len: 37 max node len: 48 
%YDB-I-RECORDSTAT, TOTAL: Key cnt: 8 max subsc len: 16 max rec len: 37 max node len: 48


The YottaDB database is natively accessible from many languages!

Use Octo

The Docker Container includes Octo as well as the tables and data from the Northwind database adapated for Octo. With Octo installed on your machine or virtual machine you can download the data, and the SQL DDL statement to create tables:

mupip load northwind.zwr # load the data
octo -f northwind.sql    # laod the table definitions


You can now run Octo in a terminal session following examples in the Octo user documentation, e.g.

ydbuser@ydbdev:~$ octo
OCTO> SELECT * FROM Products WHERE ProductName LIKE 'L%';
65|Louisiana Fiery Hot Pepper Sauce|2|2|32 - 8 oz bottles|21.05
66|Louisiana Hot Spiced Okra|2|2|24 - 8 oz jars|17
67|Laughing Lumberjack Lager|16|1|24 - 12 oz bottles|14
74|Longlife Tofu|4|7|5 kg pkg.|10
76|Lakkalikööri|23|1|500 ml |18
(5 rows)
OCTO> SELECT * FROM Customers WHERE Country='France'LIMIT 5;
7|Blondel père et fils|Frédérique Citeaux|24, place Kléber|Strasbourg|67000|France
9|Bon app'|Laurence Lebihans|12, rue des Bouchers|Marseille|13008|France
18|Du monde entier|Janine Labrune|67, rue des Cinquante Otages|Nantes|44000|France
23|Folies gourmandes|Martine Rancé|184, chaussée de Tournai|Lille|59000|France
26|France restauration|Carine Schmitt|54, rue Royale|Nantes|44000|France
(5 rows)
OCTO> exit


With the Rocto server running, you can connect using a client such as SQL Workbench/J. On this page are screenshots of the connection screen using the PostgreSQL driver, showing the userid and password, as well as a screenshot of the same Northwind database query as the last example. You can also connect using DBeaver, SquirrelSQL, as well as Microsoft PowerBI and Excel.

Here is a screenshot of the connection screen using the PostgreSQL driver, showing the userid and password.

Here is a screenshot of the same Northwind database query as the last example.

Use the GUI

Just connect a browser to listening GUI server. The screenshots below are from a browser connected to port 9080 in an Acculturation Guide virtual machine.

Explore All YottaDB Projects at GitLab

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