8000 GitHub - SINHASantos/skytable: Skytable is a fast, secure and reliable realtime NoSQL database with keyspaces, tables, data types, authn/authz, snapshots and more to build powerful apps
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Skytable is a fast, secure and reliable realtime NoSQL database with keyspaces, tables, data types, authn/authz, snapshots and more to build powerful apps

License

Notifications You must be signed in to change notification settings

SINHASantos/skytable

 
 

Folders and files

Nam 10000 eName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Skytable — A modern database for building powerful experiences

Performance, scalability, and flexibility. Choose three.

GitHub release (with filter) GitHub Workflow Status (with event) Discord Docs Static Badge

💡 What is Skytable?

Skytable is a modern NoSQL database that focuses on performance, flexibility and scalability. Our goal is to deliver a rock-solid database that you can use as the foundation for your next application — minus the gimmicks.

Skytable makes every attempt to remove the gotchas from SQL-systems. For example, nonempty models and spaces cannot be dropped and BlueQL is designed to greatly deter SQL injection vulnerabilities with a new mandatory parameterization design and several other secure query language design principles.

Every component in Skytable has been engineered from the ground up to meet our design goals. Skytable uses BlueQLTM which is our own new in-house query language designed from the ground up for a clean, powerful, modern and secure querying experience and is generally more secure than SQL.

Skytable works with structured and semi-structured data. We're currently working on supporting unstructured data.

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.

🎨 Features

  • Spaces, models and more: For flexible data definition
  • Powerful querying with BlueQL: A modern query language, designed for the 21st century
  • Rich data modeling: Use models to define data with complex types, collections and more
  • Performant, in and out of the box: Heavily multithreaded and optimized
  • Secure, query in and response out: BlueQL is designed to strongly deter query injection pathways
  • SQL minus the gotchas: Ever done a DROP TABLE users and lost all data? That won't happen in Skytable.
  • Designed to scale by enforcing 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 large scale systems

Learn more about Skytable's features here.

🚀 Getting started

  1. Set up Skytable on your machine: You'll need to download a bundled release file from the releases page. Unzip the files and you're ready to go.
  2. Start the database server: ./skyd --auth-root-password <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.

⚡ Using Skytable

Skytable has SPACEs instead of DATABASEs due to signficant operational differences (and because SPACEs store a lot more than tabular data).

With the REPL started, follow this guide:

  1. Create a space and switch to it:
    CREATE SPACE myspace
    USE myspace
  2. Create a model:
    CREATE MODEL myspace.mymodel(username: string, password: string, notes: list { type: string })
    The rough representation for this in Rust would be:
    pub struct MyModel {
     username: String,
     password: Strin,
     notes: Vec<String>,
    }
  3. INSERT some data:
    INSERT INTO mymodel('sayan', 'pass123', [])
  4. UPDATE some data:
    UPDATE mymodel SET notes += "my first note" WHERE username = 'sayan'
  5. SELECT some data
    SELECT * FROM mymodel WHERE username = 'sayan'
  6. Poke around! And then make sure you read the documentation learn BlueQL.

For a complete guide on Skytable, it's architecture, BlueQL, queries and more we strongly recommend you to read the documentation here.

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 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:

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<u8>) = db.query_parse(&query).unwrap();
    // do something with it!
}

You can find more information on client drivers on this page. 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: hey@skytable.io or leave a message on our Discord server!

🙋 Getting help

We exclusively use Discord 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 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.

Acknowledgements

Please read the acknowledgements document.

License

Skytable is distributed under the AGPL-3.0 License. You may not use Skytable's logo for other projects.

About

Skytable is a fast, secure and reliable realtime NoSQL database with keyspaces, tables, data types, authn/authz, snapshots and more to build powerful apps

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.5%
  • Other 0.5%
0