AriaSQL is a relational database management system designed and engineered from the ground up from scratch to address a variety of data management needs with ease and efficiency. At its core, AriaSQL is a database server that supports a range of SQL functionalities with a focus on delivering predictability, efficient query execution and data integrity.
Warning
Still in beta stages, use at your own risk. An official release will be made once the project is stable. The repository is under active development and may change frequently. Things can break, change, or disappear at any time.
- SQL1+ handwritten parser, lexer implementation (AriaSQL follows and implements majority of ANSI SQL1 standard with some minor upgrades)
- BTrees for indexes
- Executer for query execution
- SQL Server (TCP Server on port
3695
) - User authentication and privileges
- Atomic transactions with rollback support on error
- WAL (Write Ahead Logging)
- Recovery-Replay from WAL
- Subqueries
- Aggregates
- Implicit joins
- Row level locking
- Users and privileges
- CLI (asql)
- TLS Support
- JSON response format (false by default)
- Foreign keys
- DML, DQL, DDL, DCL, TCL Support
- Stored Procedures
- Cursors
- Execution Plan using EXPLAIN
- CASE expressions (Within select list and where clauses)
- Functions (UPPER, LOWER, CAST, COALESCE, REVERSE, ROUND, POSITION, LENGTH, REPLACE, CONCAT, SUBSTRING, TRIM)
functions used with SELECT within a where clause or select list, i.e SELECT * FROM table WHERE UPPER(column) = 'TEST'
- DATE, TIME, TIMESTAMP, DATETIME, UUID, BINARY, BOOL/BOOLEAN, TEXT, BLOB data types
- DEFAULT constraint
- CHECK constraint
- GENERATE_UUID, SYS_DATE, SYS_TIME, SYS_TIMESTAMP
functions which can be used with CREATE TABLE, or INSERT INTO, UPDATE, SELECT
- Logging to file (aria.log) [optional]
- Encryption (ChaCha20) - Encrypts row data for storage with table level encryption [optional]
- Compression (ZSTD) - Compresses row data for storage [optional]
- Alter table (migration)
- Replication - Replication to slave nodes, replicates wal entries from master to slave nodes.
- GO - github.com/ariasql/ariasql-go
IN DEVELOPMENT
- Python - github.com/ariasql/ariasql-py
IN DEVELOPMENT
- NodeJS - github.com/ariasql/ariasql-node
IN DEVELOPMENT
- Java - github.com/ariasql/ariasql-java
IN DEVELOPMENT
- Ruby - github.com/ariasql/ariasql-ruby
IN DEVELOPMENT
- PHP - github.com/ariasql/ariasql-php
IN DEVELOPMENT
- Rust - github.com/ariasql/ariasql-rust
IN DEVELOPMENT
- C - github.com/ariasql/ariasql-c
IN DEVELOPMENT
- C# - github.com/ariasql/ariasql-csharp
IN DEVELOPMENT
- Objective-C - github.com/ariasql/ariasql-objc
IN DEVELOPMENT
- C++ - github.com/ariasql/ariasql-cpp
IN DEVELOPMENT
- Swift - github.com/ariasql/ariasql-swift
IN DEVELOPMENT
- Kotlin - github.com/ariasql/ariasql-kotlin
IN DEVELOPMENT
- Scala - github.com/ariasql/ariasql-scala
IN DEVELOPMENT
- Perl - github.com/ariasql/ariasql-perl
IN DEVELOPMENT
- Lua - github.com/ariasql/ariasql-lua
IN DEVELOPMENT
- R - github.com/ariasql/ariasql-r
IN DEVELOPMENT
- Julia - github.com/ariasql/ariasql-julia
IN DEVELOPMENT
- Dart - github.com/ariasql/ariasql-dart
IN DEVELOPMENT
- AriaSQL Developer - github.com/ariasql/developer
IN DEVELOPMENT
Refer to docs folder for more information on how to use AriaSQL.
Please report any issues or feature requests as an issue on this repository.
AriaSQL is licensed under the AGPL-3.0 license.