From 0bb27027a0eb92bd6ab287f42984b53aa0b9fa33 Mon Sep 17 00:00:00 2001 From: Adrien Bouvais Date: Tue, 8 Oct 2024 09:40:26 +0200 Subject: [PATCH] Update README.md --- README.md | 49 ++++++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 79641cd..5e8a144 100644 --- a/README.md +++ b/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