• Stars
    star
    8,694
  • Rank 4,196 (Top 0.09 %)
  • Language
    C
  • License
    Other
  • Created about 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

YugabyteDB - the cloud native distributed SQL database for mission-critical applications.

YugabyteDB


License Documentation Status Ask in forum Slack chat Analytics

What is YugabyteDB?

YugabyteDB is a high-performance, cloud-native, distributed SQL database that aims to support all PostgreSQL features. It is best suited for cloud-native OLTP (i.e., real-time, business-critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, or globally-distributed deployments.

Core Features

  • Powerful RDBMS capabilities Yugabyte SQL (YSQL for short) reuses the query layer of PostgreSQL (similar to Amazon Aurora PostgreSQL), thereby supporting most of its features (datatypes, queries, expressions, operators and functions, stored procedures, triggers, extensions, etc). Here is a detailed list of features currently supported by YSQL.

  • Distributed transactions The transaction design is based on the Google Spanner architecture. Strong consistency of writes is achieved by using Raft consensus for replication and cluster-wide distributed ACID transactions using hybrid logical clocks. Snapshot, serializable and read committed isolation levels are supported. Reads (queries) have strong consistency by default, but can be tuned dynamically to read from followers and read-replicas.

  • Continuous availability YugabyteDB is extremely resilient to common outages with native failover and repair. YugabyteDB can be configured to tolerate disk, node, zone, region, and cloud failures automatically. For a typical deployment where a YugabyteDB cluster is deployed in one region across multiple zones on a public cloud, the RPO is 0 (meaning no data is lost on failure) and the RTO is 3 seconds (meaning the data being served by the failed node is available in 3 seconds).

  • Horizontal scalability Scaling a YugabyteDB cluster to achieve more IOPS or data storage is as simple as adding nodes to the cluster.

  • Geo-distributed, multi-cloud YugabyteDB can be deployed in public clouds and natively inside Kubernetes. It supports deployments that span three or more fault domains, such as multi-zone, multi-region, and multi-cloud deployments. It also supports xCluster asynchronous replication with unidirectional master-slave and bidirectional multi-master configurations that can be leveraged in two-region deployments. To serve (stale) data with low latencies, read replicas are also a supported feature.

  • Multi API design The query layer of YugabyteDB is built to be extensible. Currently, YugabyteDB supports two distributed SQL APIs: Yugabyte SQL (YSQL), a fully relational API that re-uses query layer of PostgreSQL, and Yugabyte Cloud QL (YCQL), a semi-relational SQL-like API with documents/indexing support with Apache Cassandra QL roots.

  • 100% open source YugabyteDB is fully open-source under the Apache 2.0 license. The open-source version has powerful enterprise features such as distributed backups, encryption of data-at-rest, in-flight TLS encryption, change data capture, read replicas, and more.

Read more about YugabyteDB in our FAQ.

Get Started

Cannot find what you are looking for? Have a question? Please post your questions or comments on our Community Slack or Forum.

Build Apps

YugabyteDB supports many languages and client drivers, including Java, Go, NodeJS, Python, and more. For a complete list, including examples, see Drivers and ORMs.

What's being worked on?

This section was last updated in May, 2023.

Current roadmap

Here is a list of some of the key features being worked on for the upcoming releases (the YugabyteDB v2.17 preview release has been released in Jan, 2023, and the v2.16 stable release was released in Jan 2023).

Feature Status Release Target Progress Comments
Automatic tablet splitting enabled by default PROGRESS v2.18 Track Enables changing the number of tablets (which are splits of data) at runtime.
Upgrade to PostgreSQL v15 PROGRESS v2.21 Track For latest features, new PostgreSQL extensions, performance, and community fixes
Database live migration using YugabyteDB Voyager PROGRESS Track Database live migration using YugabyteDB Voyager
Support wait-on-conflict concurrency control PROGRESS v2.19 Track Support wait-on-conflict concurrency control
Support for transactions in async xCluster replication PROGRESS v2.19 Track Apply transactions atomically on target cluster.
YSQL-table statistics and cost based optimizer(CBO) PROGRESS v2.21 Track Improve YSQL query performance
YSQL-Feature support - ALTER TABLE PROGRESS v2.21 Track Support for various ALTER TABLE variants
Support for GiST indexes PLANNING Track Support for GiST (Generalized Search Tree) based index
Connection Management PROGRESS Track Server side connection management

Recently released features

Feature Status Release Target Docs / Enhancements Comments
Faster Bulk-Data Loading in YugabyteDB ✅ DONE v2.15 Track Faster Bulk-Data Loading in YugabyteDB
Change Data Capture ✅ DONE v2.13 Change data capture (CDC) allows multiple downstream apps and services to consume the continuous and never-ending stream(s) of changes to Yugabyte databases
Support for materalized views ✅ DONE v2.13 Docs A materialized view is a pre-computed data set derived from a query specification and stored for later use
Geo-partitioning support for the transaction status table ✅ DONE v2.13 Docs Instead of central remote transaction execution metatda, it is now optimized for access from different regions. Since the transaction metadata is also geo partitioned, it eliminates the need for round-trip to remote regions to update transaction statuses.
Transparently restart transactions ✅ DONE v2.13 Decrease the incidence of transaction restart errors seen in various scenarios
Row-level geo-partitioning ✅ DONE v2.13 Docs Row-level geo-partitioning allows fine-grained control over pinning data in a user table (at a per-row level) to geographic locations, thereby allowing the data residency to be managed at the table-row level.
YSQL-Support GIN indexes ✅ DONE v2.11 Docs Support for generalized inverted indexes for container data types like jsonb, tsvector, and array
YSQL-Collation Support ✅ DONE v2.11 Docs Allows specifying the sort order and character classification behavior of data per-column, or even per-operation according to language and country-specific rules
YSQL-Savepoint Support ✅ DONE v2.11 Docs Useful for implementing complex error recovery in multi-statement transaction
xCluster replication management through Platform ✅ DONE v2.11 Docs
Spring Data YugabyteDB module ✅ DONE v2.9 Track Bridges the gap for learning the distributed SQL concepts with familiarity and ease of Spring Data APIs
Support Liquibase, Flyway, ORM schema migrations ✅ DONE v2.9 Docs
Support ALTER TABLE add primary key ✅ DONE v2.9 Track
YCQL-LDAP Support ✅ DONE v2.8 Docs support LDAP authentication in YCQL API
Platform Alerting and Notification ✅ DONE v2.8 Docs To get notified in real time about database alerts, user defined alert policies notify you when a performance metric rises above or falls below a threshold you set.
Platform API ✅ DONE v2.8 Docs Securely Deploy YugabyteDB Clusters Using Infrastructure-as-Code

Architecture

YugabyteDB Architecture

Review detailed architecture in our Docs.

Need Help?

Contribute

As an an open-source project with a strong focus on the user community, we welcome contributions as GitHub pull requests. See our Contributor Guides to get going. Discussions and RFCs for features happen on the design discussions section of our Forum.

License

Source code in this repository is variously licensed under the Apache License 2.0 and the Polyform Free Trial License 1.0.0. A copy of each license can be found in the licenses directory.

The build produces two sets of binaries:

  • The entire database with all its features (including the enterprise ones) are licensed under the Apache License 2.0
  • The binaries that contain -managed in the artifact and help run a managed service are licensed under the Polyform Free Trial License 1.0.0.

By default, the build options generate only the Apache License 2.0 binaries.

Read More

More Repositories

1

yugabyte-operator

Kubernetes Operator for YugabyteDB (legacy)
Go
60
star
2

yugastore

This is a full-stack, sample e-commerce app built using React, Express, NodeJS and YugabyteDB.
JavaScript
49
star
3

yb-voyager

Data migration Engine for YugabyteDB database
PLpgSQL
36
star
4

charts

Respository of all helm charts that are owned by YugabyteDB for database deployment acroos various K8s configurations
Mustache
34
star
5

orm-examples

Examples showing how to use various ORMs with YSQL
PHP
26
star
6

yb-sample-apps

Workload generator for emulating various real-world scenarios against YugabyteDB
Java
24
star
7

tpcc

Repo to run TPCC benchmarks against YugabyteDB
Java
20
star
8

spring-data-yugabytedb

Spring Data Module for YugabyteDB.
Java
18
star
9

yb-kafka-connector

Kafka Connect YugabyteDB Connector
Java
17
star
10

jdbc-yugabytedb

JDBC Driver for Yugabyte SQL (YSQL)
Java
17
star
11

yb-tools

Tools for YugabyteDB database maintenance and support
Go
17
star
12

terraform-aws-yugabyte

A Terraform module to deploy and run YugabyteDB on AWS.
Go
15
star
13

debezium-connector-yugabytedb

A Debezium CDC connector for the YugabyteDB database
Java
12
star
14

docs

YugaByte DB Docs -- this repository has moved to the subdirectory https://github.com/YugaByte/yugabyte-db/tree/master/docs
HTML
12
star
15

yugabyte-db-thirdparty

IMPORTANT: please carefully edit the squashed commit's message when merging! You can use the PR description as the starting point. DO NOT use the default squashed commit message. ================ YugabyteDB database third-party dependencies. Creating tar.gz archives for CentOS/Ubuntu/macOS, x86_64/aarch64.
Python
11
star
16

yugabyte-k8s-operator

Yugabyte K8s Operator
Mustache
11
star
17

yugabyte-installation

A repository for local YugabyteDB (https://github.com/yugabyte/yugabyte-db) cluster installers and packaging scripts. Use https://github.com/yugabyte/yugabyte-db/issues/new to file issues.
Python
10
star
18

yb-django

Django backend for YugabyteDB
Python
9
star
19

gcp-deployment-manager

Google Cloud Deployment Manager scripts to deploy a multi-node YugabyteDB cluster
Shell
7
star
20

yb-sql-workshop

Material for YugabyteDB PostgreSQL workshop.
TSQL
7
star
21

terraform-provider-yba

Terraform Provider for YugabyteDB Anywhere (Self-managed Database-as-a-Service)
Go
6
star
22

aws-cloudformation

YugabyteDB AWS Cloud Formation Template
Shell
5
star
23

learn-yugabyte

Collection of tutorials geared toward distributed SQL.
JavaScript
5
star
24

homebrew-tap

brew formula for yugabyte
Ruby
5
star
25

sys-detection

A Python module for detecting the operating system name, version, architecture, etc.
Python
5
star
26

cqlsh

Yugabyte Cloud Query Language (YCQL) shell for YugabyteDB database
Python
5
star
27

ybm-cli

CLI implementation for YugabyteDB Aeon.
Go
5
star
28

terraform-gcp-yugabyte

A Terraform module to deploy and run YugabyteDB on GCP.
HCL
5
star
29

terraform-azure-yugabyte

A Terraform module to deploy and run YugabyteDB on Azure
HCL
4
star
30

wordpress-site

Files used for wordpress marketing site.
PHP
4
star
31

cf-yugabyte-service-broker

Cloud Foundry Service Broker Implementation for YugabyteDB
Java
4
star
32

sequelize-yugabytedb

Sequelize, promise-based Node.js ORM
JavaScript
4
star
33

build-infra

Infrastructure for building YugabyteDB
Shell
4
star
34

spring-tanzu-workshop

Spring Boot Workshop for getting started with Yugabyte DB on VMware Tanzu K8s gird.
Java
4
star
35

llvm-installer

A Python module for installing LLVM packages for various platforms
Python
4
star
36

spring-reactive-ycql-client

Spring Boot application with Yugabyte Cloud Query Language (YCQL) reactive backend.
Java
4
star
37

brew-build

Building pre-packaged archives of Homebrew/Linuxbrew needed to build YugabyteDB
Shell
4
star
38

compiler-identification

A Python module for identifying versions and properties of C/C++ compilers
Python
4
star
39

terraform-provider-ybm

Terraform Provider for YugabyteDB Aeon (database-as-a-service)
Go
4
star
40

yb-architecture

Repo with explanations about YugabyteDB database architecture
JavaScript
4
star
41

codecheck

A tool to run a variety of checks on a set of source code files
Python
4
star
42

yb-redis-py

A Redis Python client (redis-py) enchanced to work with YugaByteDB
Python
4
star
43

cdc-examples

Tools to monitor change data capture (CDC) in the YugabyteDB database
Shell
3
star
44

distributedsql

Updates for annual Distributed SQL Summit, hosted by YugabyteDB database
SCSS
3
star
45

yb-devtools

Tools helpful in YugabyteDB development [work in progress]
Shell
3
star
46

yugabyte_pycommon

Common utilities used in YugaByte DB's build infrastructure but could also be useful for anyone. E.g. convenient utilities for running external programs, logging, etc.
Python
3
star
47

spring-data-yugabytedb-example

Sample app using Spring Data and YugabyteDB database
Java
3
star
48

get-started-page

Getting started page for new users to get YugabyteDB database up and running.
Vue
3
star
49

build-clang

A set of scripts to build and package LLVM/Clang to be used to build YugabyteDB database code.
Python
3
star
50

yb-monitoring

Example Monitoring Configuration for YugabyteDB with Prometheus and Grafana
3
star
51

serverless-examples

Examples for implementing Serverless applications with YugabyteDB on Private and public cloud platforms.
Java
3
star
52

cdcsdk-server

A standalone CDC channel to move CDC events from YugabyteDB database to different sinks.
Java
3
star
53

aws-ansible

YugabyteDB AWS Ansible deployment scripts
2
star
54

r2dbc-ysql-client

R2DBC Client example for YugabyteDB
Java
2
star
55

hashicorp-vault-ysql-plugin

Hashicorp Vault plugin for YugabyteDB YSQL
Go
2
star
56

downloadutil

A Python module with common utilities for downloading and extracting archives
Python
2
star
57

cloud-resource-cleanup

Tool that allows you to delete and stop resources across different clouds
Python
2
star
58

azure-resource-manager

Azure Resource Manager
Shell
2
star
59

yb-vertx-redis-client

Java
2
star
60

yugabyte-hasura-cloud-workshop

This repo walks through the steps for implementing a Real-time Polling App with Hasura Cloud and Yugabyte Cloud.
JavaScript
2
star
61

yugabyte-spring-workshop

Spring Boot Workshop for getting started with YugabyteDB.
Java
2
star
62

utilities

Repository to hold any utility scripts needed to provision and manage YugabyteDB
Shell
2
star
63

edgeyuga

Setup YugabyteDB on edge locations with K3s
Shell
2
star
64

ybbench

Dockerfile
2
star
65

yugabyte-ysql-loader-workshop

Learn how to migrate MySQL, SQL Lite, MS SQL, Postgres to YugabyteDB using ysql_loader
1
star
66

spring-ycql-demo

Spring Data Cassandra support for YugabyteDB
Java
1
star
67

yugabyte-platform-operator

Operator for Yugabyte Platform makes it easy to deploy and upgrade Yugabyte platform on kubernetes environment
Mustache
1
star
68

ecosystem-test-automation

Scripts to validate various YugabyteDB ecosystem tools against YB database via Jenkins pipeline.
Shell
1
star
69

codelabs

Code Labs for YugaByte DB
PHP
1
star
70

yb-portworx

Creating a YugabyteDB database cluster with Portworx volumes
Shell
1
star
71

libev

libev - (http://software.schmorp.de/pkg/libev.html): imported from :pserver:[email protected]/schmorpforge with tags
C
1
star
72

spring-yugabytedb-demo

Sample Spring Boot Application for getting starting with YugabyteDB YSQL on Kubernetes
Java
1
star
73

platform-go-client

Shell
1
star
74

yb_detective

A Ruby gem where we will gradually move code used by Detective (Yugabyte's internal test dashboard)
1
star
75

yb-firedrill

1
star
76

newsql-benchmarks

Repo to perform benchmarks against a variety of NewSQL databases
Java
1
star
77

ybu

1
star
78

crypt_blowfish

Fork of crypt_blowfish from http://www.openwall.com/crypt/
C
1
star