CovenantSQL alternatives and similar packages
Based on the "Database" category.
Alternatively, view CovenantSQL alternatives based on common mentions on social networks and blogs.
-
tidb
TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://www.pingcap.com/tidb-serverless/ -
cockroach
CockroachDB — the cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement. -
TinyGo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM. -
groupcache
groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases. -
bytebase
The GitHub/GitLab for database DevOps. World's most advanced database DevOps and CI/CD for Developer, DBA and Platform Engineering teams. -
immudb
immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history -
go-cache
An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications. -
buntdb
BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support -
pREST
PostgreSQL ➕ REST, low-code, simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new -
xo
Command line tool to generate idiomatic Go code for SQL databases supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server -
nutsdb
A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set. -
gocraft/dbr (database records)
Additions to Go's database/sql for super fast performance and convenience. -
lotusdb
Most advanced key-value database written in Go, extremely fast, compatible with LSM tree and B+ tree.
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of CovenantSQL or a related project?
README
CovenantSQL(CQL) is a Byzantine Fault Tolerant relational database built on SQLite:
- ServerLess: Free, High Availabile, Auto Sync Database Service for Serverless App
- SQL: Most SQL-92 support.
- Decentralize: Running on Open Internet without Central Coordination.
- Privacy: Access with Granted Permission and Encryption Pass.
- Immutable: Query History in CQL is Immutable and Trackable.
- Permission: Column Level ACL and SQL Pattern Whitelist.
What is CQL?
- Open source alternative of Amazon QLDB
- Low cost DBaaS
- Just like filecoin + IPFS is the decentralized file system, CQL is the decentralized database
Quick Start
CQL client supports:
- macOS X 10.9+
- Linux 2.6.23+ (x86, x86_64, armeabi-v7a, arm64-v8a)
Developer Guide
MacOS
🍺 Homebrew users can just run:
brew install cql
non-Homebrew users can run:
sudo bash -c 'curl -L "https://mac.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'
Linux
Just run:
sudo bash -c 'curl -L "https://linux.gridb.io/cql" | tar xzv -C /usr/local/bin/ --strip-components=1'
To continue: TestNet Quickstart
SDKs
CovenantSQL Testnet is already released, have a try.
- [Golang](client/)
- Java
- NodeJS
- Python
- Microsoft Excel (by community)
How CQL works
3 Layers Arch
- Layer 1: Global Consensus Layer (the main chain, the middle ring in the architecture diagram):
- There will only be one main chain throughout the network.
- Mainly responsible for database Miner and the user’s contract matching, transaction settlement, anti-cheating, shard chain lock hash and other global consensus matters.
- Layer 2: SQL Consensus Layer (shard chain, rings on both sides):
- Each database will have its own separate shard chain.
- Mainly responsible for: the signature, delivery and consistency of the various Transactions of the database. The data history of the permanent traceability is mainly implemented here, and the hash lock is performed in the main chain.
- Layer 3: Datastore Layer (database engine with SQL-92 support):
- Each Database has its own independent distributed engine.
- Mainly responsible for: database storage & encryption, query processing & signature, efficient indexing.
For more details
Consensus Algorithm
CQL supports 2 kinds of consensus algorithm:
- DPoS (Delegated Proof-of-Stake) is applied in
Eventually consistency mode
database and alsoLayer 1 (Global Consensus Layer)
in BlockProducer. CQL miners pack all SQL queries and its signatures by the client into blocks thus form a blockchain. We named the algorithmXenomint
. - BFT-Raft (Byzantine Fault-Toleranted Raft)bft-raft is applied in
Strong consistency mode
database. We named our implementationKayak
. The CQL miner leader does aTwo-Phase Commit
withKayak
to supportTransaction
.transaction
CQL database consistency mode and node count can be selected in database creation with command cql create '{"UseEventualConsistency": true, "Node": 3}'
Comparison
Ethereum | Hyperledger Fabric | Amazon QLDB | CovenantSQL | |
---|---|---|---|---|
Dev language | Solidity, ewasm | Chaincode (Go, NodeJS) | ? | Python, Golang, Java, PHP, NodeJS, MatLab |
Dev Pattern | Smart Contract | Chaincode | SQL | SQL |
Open Source | Y | Y | N | Y |
Nodes for HA | 3 | 15 | ? | 3 |
Column Level ACL | N | Y | ? | Y |
Data Format | File | Key-value | Document | Filefuse, Key-value, Structured |
Storage Encryption | N | API | Y | Y |
Data Desensitization | N | N | N | Y |
Multi-tenant | DIY | DIY | N | Y |
Throughput (1s delay) | 15~10 tx/s | 3500 tx/s | ? | 11065 tx/s (Eventually Consistency)1866 tx/s (Strong Consistency) |
Consistency Delay | 2~6 min | < 1 s | ? | < 10 ms |
Secure for Open Internet | Y | N | Only in AWS | Y |
Consensus | PoW + PoS(Casper) | CFT | ? | DPoS (Eventually Consistency)BFT-Raft (Strong Consistency) |
FootNotes
BFT-Raft: A CQL leader offline needs CQL Block Producer to decide whether to wait for leader online for data integrity or promote a follower node for availability. This part is still under construction and any advice is welcome.
Transaction: Talking about
ACID
, CQL has full "Consistency, Isolation, Durability" and a limitedAtomicity
support. That is even under strong consistency mode, CQL transaction is only supported on the leader node. If you want to do "readv
,v++
, writev
back" parallelly and atomically, then the only way is "readv
from the leader,v++
, writev
back to leader"FUSE: CQL has a simple FUSE support adopted from CockroachDB. The performance is not very ideal and still has some issues. But it can pass fio test like:
fio --debug=io --loops=1 --size=8m --filename=../mnt/fiotest.tmp --stonewall --direct=1 --name=Seqread --bs=128k --rw=read --name=Seqwrite --bs=128k --rw=write --name=4krandread --bs=4k --rw=randread --name=4krandwrite --bs=4k --rw=randwrite
Network Stack
[DH-RPC](rpc/) := TLS - Cert + DHT
Layer | Implementation |
---|---|
RPC | net/rpc |
Naming | Consistent Secure DHT |
Pooling | Session Pool |
Multiplex | smux |
Transport Security | Enhanced TLS |
Network | TCP or KCP for optional later |
Test Tools we use
- Global Network Topology Emulator is used for network emulating.
- Liner Consistency Test
Papers
Our team members published:
- Thunder crystal: a novel crowdsourcing-based content distribution platform
- Analyzing streaming performance in crowdsourcing-based video service systems
- Performance Analysis of Thunder Crystal: A Crowdsourcing-Based Video Distribution Platform
that inspired us:
- Bitcoin: A Peer-to-Peer Electronic Cash System
- S/Kademlia
- vSQL: Verifying arbitrary SQL queries over dynamic outsourced databases
Performance
Strong consistency bench result (2 miners, 8 core aws c5.2xlarge): [CovenantSQL bench](logo/bench.png)
As seen above, the concurrency pressure on the database increased gradually in the first 5 hours, and the write TPS also increased. When the TPS no longer grows, the concurrent pressure is maintained for 100 hours.
Demos
- CovenantForum
- Weibo Bot @BlockPin
- Markdown Editor with CovenantSQL sync
- Web Admin for CovenantSQL
- How CovenantSQL works(video)
Use cases
Traditional App & ĐApp use cases
Traditional App
Privacy data
If you are a developper of password management tools just like 1Password or LastPass. You can use CQL as the database to take benefits:
- Serverless: no need to deploy a server to store your user's password for sync which is the hot potato.
- Security: CQL handles all the encryption work. Decentralized data storage gives more confidence to your users.
- Regulation: CQL naturally comply with GDPR.
IoT storage
CQL miners are deployed globally, IoT node can write to nearest CQL miner directly.
- Cheaper: Without passing all the traffic through a gateway, you can save a large bandwidth fee. And, CQL is a shared economic database which makes storage cheaper.
- Faster: CQL consensus protocol is designed for Internet where network latency is unavoidable.
Open data service
For example, you are the most detailed Bitcoin OHLC data maintainer. You can directly expose an online SQL interface to your customers to meet a wide range of query needs.
- CQL can limit specific SQL query statements to meet the needs while also balancing data security;
- CQL can record SQL query records on the blockchain, which is very convenient for customers to check their bills for long-tail customers and billing, like this
- For customers with high performance requirements, Slave nodes can be deployed at the customer to meet the needs of customers with low latency queries while enabling almost real-time data updates.
Secure storage
Thanks to the CQL data history is immutable, CQL can be used as a storage for sensitive operational logs to prevent hacking and erasure access logs.
ĐApp
Storing data on Bitcoin or Ethereum is quite expensive ($4305 / MB on Ethereum 2018-05-15). Programming is very complicated due to the lack of support for structured data storage. CQL gives you a low-cost structured SQL database and also provides more room for ĐApp to exchange data with real-world.
TestNet
Contact
*Note that all licence references and agreements mentioned in the CovenantSQL README section above
are relevant to that project's source code only.