Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skytable/skytable
Skytable is a modern scalable NoSQL database with BlueQL, designed for performance, scalability and flexibility. Skytable gives you spaces, models, data types, complex collections and more to build powerful experiences
https://github.com/skytable/skytable
beginner-friendly column-store contributions-welcome database database-engine database-server databases dbms distributed-database document-database json key-value-store multi-model nosql nosql-database rust skybase skytable sql terrabasedb
Last synced: 1 day ago
JSON representation
Skytable is a modern scalable NoSQL database with BlueQL, designed for performance, scalability and flexibility. Skytable gives you spaces, models, data types, complex collections and more to build powerful experiences
- Host: GitHub
- URL: https://github.com/skytable/skytable
- Owner: skytable
- License: agpl-3.0
- Created: 2020-06-30T08:31:09.000Z (over 4 years ago)
- Default Branch: next
- Last Pushed: 2024-09-04T12:21:32.000Z (3 months ago)
- Last Synced: 2024-12-04T20:55:35.962Z (8 days ago)
- Topics: beginner-friendly, column-store, contributions-welcome, database, database-engine, database-server, databases, dbms, distributed-database, document-database, json, key-value-store, multi-model, nosql, nosql-database, rust, skybase, skytable, sql, terrabasedb
- Language: Rust
- Homepage: https://skytable.io
- Size: 6.01 MB
- Stars: 2,456
- Watchers: 29
- Forks: 88
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
- Authors: AUTHORS.md
Awesome Lists containing this project
- awesome-rust - Skytable - model NoSQL database ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/skytable/skytable/Tests?style=flat-square) (Applications / Database)
- awesome-repositories - skytable/skytable - Skytable is a modern scalable NoSQL database with BlueQL, designed for performance, scalability and flexibility. Skytable gives you spaces, models, data types, complex collections and more to build po (Rust)
- awesome-rust - Skytable - A multi-model NoSQL database ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/skytable/skytable/Tests?style=flat-square) (Applications / Database)
- awesome-rust-zh - skytable - 快速安全持久化的NoSQL数据库
- fucking-awesome-rust - Skytable - A multi-model NoSQL database ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/skytable/skytable/Tests?style=flat-square) (Applications / Database)
- fucking-awesome-rust - Skytable - A multi-model NoSQL database ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/skytable/skytable/Tests?style=flat-square) (Applications / Database)
- awesome-rust-cn - Skytable
README
# Skytable
A modern NoSQL database, powered by BlueQL.
## What is Skytable?
Skytable is a **modern NoSQL database** that focuses on **performance, flexibility and scalability**. Skytable
is a primarily in-memory, wide-column based database with support for additional data models* that
uses its own storage engine (structured like n-ary records with optimized delayed-durability transactions) and
enables querying with its own query language *BlueQL* that builds on top of SQL to improve security and flexibility.Skytable is best-suited for applications that need to store large-scale data, need high-performance and low latencies.
> **You can read more about Skytable's architecture, including information on the clustering and HA implementation that we're currently working on, and limitations [on this page](https://docs.skytable.io/architecture).**
## Features
- **Spaces, models and more**: For flexible data definition
- **Powerful querying with BlueQL**: A modern query language based on SQL
- **Rich data modeling**: Use `model`s to define data with complex types, collections and more
- **Performant**: Heavily multithreaded, optimized write batching and more
- **Secure**: BlueQL is designed to strongly deter query injection pathways
- **Enforces best practices**: If you're building with Skytable today, the practices you'll learn here will let you easily take on the job of building performant systems, even outside Skytable> Learn more about [Skytable's features here](https://docs.skytable.io).
## Getting started
1. **Set up Skytable on your machine**: You'll need to download a bundled release file [from the releases page](https://github.com/skytable/skytable/releases). Unzip the files and you're ready to go.
2. Start the database server: `./skyd --auth-root-password ` with your choice of a password for the `root` account. The `root` account is just like a `root` account on Unix based systems that has control over everything.
3. Start the interactive client REPL: `./skysh` and then enter your password.
4. You're ready to run queries!> **For a more detailed guide on installation and deployment, [follow the guide here.](https://docs.skytable.io/installation)**
## Using Skytable
Skytable has `SPACE`s instead of `DATABASE`s due to signficant operational differences (and because `SPACE`s store a lot more than tabular data).
**With the REPL started, follow this guide**:
1. Create a `space` and switch to it:
```sql
CREATE SPACE myspace
USE myspace
```
2. Create a `model`:
```sql
CREATE MODEL myspace.mymodel(username: string, password: string, notes: list { type: string })
```
The rough representation for this in Rust would be:
```rust
pub struct MyModel {
username: String,
password: String,
notes: Vec,
}
```
3. `INSERT` some data:
```sql
INSERT INTO mymodel('sayan', 'pass123', [])
```
4. `UPDATE` some data:
```sql
UPDATE mymodel SET notes += "my first note" WHERE username = 'sayan'
```
5. `SELECT` some data
```sql
SELECT * FROM mymodel WHERE username = 'sayan'
```
6. Poke around! **And then make sure you [read the documentation learn BlueQL](https://docs.skytable.io/blueql/overview).**> **For a complete guide on Skytable, it's architecture, BlueQL, queries and more we strongly recommend you to [read the documentation here.](https://docs.skytable.io)**
>
> While you're seeing strings and other values being used here, this is so because the REPL client smartly parameterizes queries behind the scenes. **BlueQL has mandatory parameterization**. (See below to see how the Rust client handles this)## Find a client driver
You need a client driver to use Skytable in your programs. Officially, we maintain a regularly updated [Rust client driver](https://github.com/skytable/client-rust) which is liberally license under the Apache-2.0 license so that you can use it anywhere.
Using the Rust client driver, it's very straightforward to run queries thanks to Rust's powerful type system and macros:
```rust
use skytable::{Config, query};fn main() {
let mut db = Config::new_default("username", "password").connect().unwrap();
let query = query!("select username, password from myspace.mymodel where username = ?", "sayan");
let (username, password): (String, Vec) = db.query_parse(&query).unwrap();
// do something with it!
}
```> **You can find more information on client drivers on [this page](https://docs.skytable.io/libraries). If you want to help write a client driver for your language of choice, *we're here to support your work*. Please reach out to: [email protected] or leave a message on our Discord server!**
## Getting help
We exclusively use [Discord](https://discord.gg/QptWFdx) for most real-time communications — you can chat with developers, maintainers, and our amazing users! Outside that, we recommend that you use our [GitHub Discussions page](https://github.com/skytable/skytable/discussions) for any questions or open a new issue if you think you've found a bug.
*We're here to help!*
## Contributing
Please read the [contributing guide here](./CONTRIBUTING.md).
## Acknowledgements
Please read the [acknowledgements](./ACKNOWLEDGEMENTS.txt) document.
## License
Skytable is distributed under the [AGPL-3.0 License](./LICENSE). **You may not use Skytable's logo for other projects.**