Update README.md
This commit is contained in:
parent
67fb49ded5
commit
0bb27027a0
49
README.md
49
README.md
@ -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
|
||||
|
||||
@ -136,8 +139,7 @@ Zippon have it's own query language. Here the keys point to remember:
|
||||
- [ ] ZiQL parser
|
||||
- [ ] Schema management
|
||||
- [X] File management
|
||||
- [ ] Loging
|
||||
- [ ] Base Parser
|
||||
- [ ] Loging
|
||||
|
||||
#### 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
|
||||
- [ ] Multi threading
|
||||
- [ ] Lock manager
|
||||
|
||||
#### v0.7 - Safety
|
||||
- [ ] Auth
|
||||
- [ ] Metrics
|
||||
- [ ] Metrics
|
||||
- [ ] Durability
|
||||
|
||||
#### v0.8 - Advanced
|
||||
- [ ] Query optimizer
|
||||
|
Loading…
x
Reference in New Issue
Block a user