Update README.md

This commit is contained in:
Adrien Bouvais 2024-10-08 09:40:26 +02:00 committed by GitHub
parent 67fb49ded5
commit 0bb27027a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,14 +3,15 @@
# Introduction
ZipponDB is a relational database written entirely in Zig from stractch with 0 dependency.
It use a custom query language named ZipponQL or ZiQL for short.
ZipponDB goal is to be ACID, light, simple and high performance. It is aim for small to medium application that don't need fancy features but a simple and reliable database.
### Why Zippon ?
- Open-source and written 100% in Zig with 0 dependency
- Relational database
- Simple and minimal query language
- Small, fast and implementable everywhere
- Small, light, fast and implementable everywhere
# Declare a schema
@ -90,7 +91,7 @@ Note: [] are list of value.
# ZipponQL
Zippon have it's own query language. Here the keys point to remember:
ZipponDB use it's own query language, ZipponQL or ZiQL. Here the keys point to remember:
- {} Are filters
- [] Are how much; what data
@ -105,27 +106,29 @@ Zippon have it's own query language. Here the keys point to remember:
| GRAB User | Get all users |
| GRAB User { name = 'Adrien' } | Get all users named Adrien |
| GRAB User [1; email] | Get one user's email |
| GRAB User \| ASCENDING name \| | Get all users ordered by name |
| GRAB User [name] { age > 10 AND name != 'Adrien' } \| DECENDING age \| | Get just the name of all users that are more than 10 years old and not named Adrien |
| GRAB User [1] { bestfriend = { name = 'Adrien' } } | Get one user that has a best friend named Adrien |
| GRAB User [10; friends [1]] { age > 10 } | Get one friend of the 10th user above 10 years old |
### Not yet implemented
| Command | Description |
| --- | --- |
| GRAB Message [100; comments [ date ] ] { .writter = { name = 'Adrien' }.bestfriend } | Get the date of 100 comments written by the best friend of a user named Adrien |
| GRAB User { IN Message { date > '12-01-2014' }.writter } | Get all users that sent a message after the 12th January 2014 |
| GRAB User { !IN Comment { }.writter } | Get all users that didn't write a comment |
| GRAB User { IN User { name = 'Adrien' }.friends } | Get all users that are friends with an Adrien |
| GRAB User \| ASC name \| | Get all users ordered by name |
| GRAB User [name] { age > 10 AND name != 'Adrien' } | Get users' name if more than 10 years old and not named Adrien |
| GRAB User { age > 10 AND (name = 'Adrien' OR name = 'Bob'} | Use multiple condition |
| UPDATE User [1] { name = 'Adrien' } => ( email = 'new@email.com' ) | Update a user's email |
| REMOVE User { id = '000-000' } | Remove a user by ID |
| ADD User ( name = 'Adrien', email = 'email', age = 40 ) | Add a new user |
### Not yet implemented
| Command | Description |
| --- | --- |
| GRAB User { age > 10 AND name IN ['Adrien' 'Bob']} | Use multiple condition |
| GRAB User [1] { bestfriend = { name = 'Adrien' } } | Get one user that has a best friend named Adrien |
| GRAB User [10; friends [1]] { age > 10 } | Get one friend of the 10th user above 10 years old |
| GRAB Message [100; comments [ date ] ] { .writter = { name = 'Adrien' }.bestfriend } | Get the date of 100 comments written by the best friend of a user named Adrien |
| GRAB User { IN Message { date > '12-01-2014' }.writter } | Get all users that sent a message after the 12th January 2014 |
| GRAB User { !IN Comment { }.writter } | Get all users that didn't write a comment |
| GRAB User { IN User { name = 'Adrien' }.friends } | Get all users that are friends with an Adrien |
# Lexique
- **Struct:** A struct is the schema of how to store data. E.g. `User`
- **Entity:** An entity is one instance of a struct. E.g. one user
- **Member:** A member is one variable saved in a struct. E.g. `name` in `User`
- **Struct:** A struct of how to store data. E.g. `User`
- **Entity:** An entity is one instance of a struct.
- **Member:** A member is one data saved in a struct. E.g. `name` in `User`
# Roadmap
@ -137,7 +140,6 @@ Zippon have it's own query language. Here the keys point to remember:
- [ ] Schema management
- [X] File management
- [ ] Loging
- [ ] Base Parser
#### v0.2 - Usable
- [ ] B-Tree
@ -162,12 +164,13 @@ Zippon have it's own query language. Here the keys point to remember:
#### v0.6 - Performance
- [ ] Transaction
- [ ] Lock manager
- [ ] Multi threading
- [ ] Lock manager
#### v0.7 - Safety
- [ ] Auth
- [ ] Metrics
- [ ] Durability
#### v0.8 - Advanced
- [ ] Query optimizer