What is VanadiumDB?
VanadiumDB is a relational database similar to MariaDB / MySQL. The storage and parse engine is coded from scratch in Golang without the use of C. The database adds some developer and end user-friendly features and is super slim (less than 14 MB binaries / 13 MB docker).
Download & Usage
VanadiumDB is free to use. No table limit. No storage limit.
Setup with Docker Download Windows Download Linux Download macOSQuick Start / Installation Guide
Enterprise support is available.
Why do we need another database?
You should try VanadiumDB because:
| Tiny: less 14 MB binaries incl. the HTTP-Server + MariaDB interface - less 13 MB docker container | Helpful: VanadiumDB provides exact reasons why the input / syntax does not work. | Flexible: This database is open to developer friendly suggestions. |
| REST API: Access the database data with a normal REST API without the use of middleware. | Extended Rollback for database and table: Decide when you want to save storage - but not by accident. | Simple Block Storage: New data storage format which is suitable for Solid Disk Drives. |
| Memory-safe: MariaDB / MySQL is written in C. C is a security hazard when not done correctly. VanadiumDB is written in Golang. | Storage Optimizations: Decide when to save storage without messing up with the production data. | Automatic Backup: Every database needs backup. VanadiumDB ships with the tool. |
What SQL do I need to use?
VanadiumDB accepts the MariaDB / MySQL SQL variant.
The database does not support all MariaDB / MySQL commands but the big chunk of the commands you normally use. The following list shows the most of the commands that are available. The list is growing:
Data Definition (DDL)
- CREATE (tables, databases, indexes)
- ALTER (modify structures)
- DROP (remove tables/databases)
Data Manipulation (DML)
- SELECT (retrieve data)
- INSERT (add new rows)
- UPDATE (modify existing rows)
- DELETE (remove rows)
- REPLACE (insert or update)
- GRANT (give permissions)
Filtering & Sorting
- WHERE (filter rows)
- ORDER BY (sort results)
- GROUP BY (aggregate data)
- HAVING (filter groups)
- LIMIT (restrict results)
Joins
- JOIN (combine tables)
- INNER JOIN
Constraints
- PRIMARY KEY (unique identifier)
- FOREIGN KEY (link tables)
Functions & Operators
- COUNT(), SUM(), AVG(), MIN(), MAX() (aggregations)
- LIKE (pattern matching)
- IN (check for values in a list)
- BETWEEN (range checks)
- AS (alias columns/tables)
Transactions
- START TRANSACTION
- COMMIT
- ROLLBACK
You get an error message ; Operator not supported if a command is not supported.
Stability of VanadiumDB
The project uses test driven development to test out new commands and features. Currently, there are 117+ (multi-commands) tests and, integration-tests scenario-tests for the core components. The results are verified against a MariaDB tests instance to get a bit-perfect replication of the results.
Also tested against:
- Dumps from MariaDB
- Dumps from HediSQL
- Import from CSV-files
- HediSQL API interface
What happens if the database crashes? Deletion requests, inserts, changes are written to the disk never without an undo log. The code can stop at any moment (or the server) crashes without the loss of data.
How does the storage works?
Every table, list or config is stored in blocks. Blocks are files of fixed length. This is optimized state for Solid Disk State.
Efficient Use of Writing and Reading - Swapping of Blocks
Instead of load and rewrite one value and save the full database for every update. The database swaps out single or multiple blocks when one line is changed.
Never forget data - Write a head logging
The logging provides the functionality of a rollback. Data is never altered on the disk when the logging is not completed. The rollback is available after every outage.
Speed Up Database - Always On-Cache
The database reads the blocks (database storage) on boot from the disk and holds the data in memory during the operation and swaps and write blocks based altering commands (Update, Delete, Alter, Create).
Binary full optimize data storage format
VanadiumDB store data in .dbx files. They contain binary data and should not be touched / altered by hand. If you want to move data use the dump command.
FAQ
Does it cost money? Are there any limits?
The usage of VanadiumDB is free. You can create so many tables and databases until your hardware bursts. 8 Exabytes of data per table are storable - 8,388,608 terabytes (TB).
Can I run any command of SQL on it?
No. The catalog of commands expands every day. You get an error message ; Operator not supported if a command is not supported.
What variant of SQL I need to write?
How can I migrate my data?
Create a full dump of all your data, import the data and create users accounts that should access the databases with the CLI / API.
How can I back up my data?
There is an integrated CLI command for this.
Open for feedback! - Suggestions / Feedback / Change Requests / Bugs
What do you hate about MariaDB and other relation databases? VanadiumDB is open to changes and suggestions!