YugaByte DB

The YugaByte Database Blog

Thoughts on open source, cloud native and distributed databases

YugaByte Database Engineering Update – August 20, 2018

Time for another update from the engineering team at YugaByte! It has been a month since the last update, so let’s dive right in.

Community News

Recent Events

On the conference front, YugaByte was at Google Next towards the end of July. YugaByte DB was already very well integrated into the Google Cloud Compute ecosystem, we additionally announced support for Google Container Engine (GKE). You can also read about how YugaByte DB compares with the various Google Cloud databases.

There have been a number of questions about how YugaByte DB compares to Google Spanner. While both are geo-distributed databases that support distributed transactions, YugaByte DB is:

  • Redis, Cassandra and PostgreSQL compatible APIs for reading and writing data
  • Open source under Apache 2.0 license
  • Supports Google Cloud, AWS, Azure, Kubernetes and private data centers

Upcoming Events

We are Hiring!

YugaByte is looking for a passionate Developer Advocate! Are you excited about becoming the voice of our users? Do you love experimenting with new technologies and presenting it at conferences, meetups and workshops? We would love to talk to you. Check out our list of open positions.

Release Updates

We recently released YugaByte DB 1.0.5. This release has the following key features on top of the previous YugaByte DB 1.0.4 version.

Cassandra-compatible YCQL Features

  • Added support for “broadcast address” to enable public and private IP support
  • Ability to return fine-grained errors in CAS (compare and set) and batch statements
  • Support for weak secondary indexes for higher ingest performance

Redis-compatible YEDIS Features

  • Authentication support using passwords, including support for multiple active passwords to enable online rotation of passwords. Read more.
  • Safety flags to disable dropping data inadvertently, for example using commands such as FLUSHALL
  • Monitor support

Ecosystem and Deployments

  • Basic helm chart support to deploy Kubernetes clusters with ease.

Roadmap

YugaByte DB 1.1 is right around the corner! We are going to be announcing a number of critical features including:

  • General availability of Distributed ACID transactions, consistent secondary indexes and a native JSON data type.
  • On the security front, authentication of users in the Cassandra and Redis APIs, as well as support for TLS encryption.
  • EE features such as read replica support and support for managed Kubernetes environments such as GKE and PKS are going to preview as a beta features

To view a list of all items being worked, browse to our GitHub projects page. And stay tuned for an update on our Jepsen testing soon.

Documentation, Blogs, Tutorials

We have recently added docs on how to use YugaByte DB with client drivers in C++, C# and Go in addition to the existing languages such as NodeJS and Java. Happy app-building!

Check out how to use the MONITOR command in the YEDIS API that is a great debugging tool to see all requests being processed by a server.

We have been busy on the blogging front with a bunch of tech deep-dive posts.

Enhancement Requests

Once again, there has been no dearth of enhancement requests. There are too many to list, but here are three useful enhancements that we have recently implemented.

Broadcast address support in Cassandra API

In modern cloud-based deployments, servers could have public IP address or DNS names that they are not aware of. A cloud provider could provide public ip address functionality via port forwarding, for example. Also clouds such as GCP and AWS have different billing strategies when traffic goes through public IP vs private IP. In many of these scenarios, the services on these servers know nothing about the DNS names (or public IP addresses).

As an example, consider machines instances on most public clouds. They usually have a public IP address that should be used from outside the cloud region and a private IP address that is preferred inside. This feature allows YugaByte DB to span regions or cloud providers by allowing the appropriate address to be used for inter-server communication.

Read more about the design of the broadcast address feature.

Multiple databases in the Redis API

In many scenarios, it is very desirable to allow applications to interact with only their data (and not mix data across apps together). This feature enables this by allowing creation of multiple “databases” that can be used by different applications. Open-source Redis already allows for multiple databases, but this is generally not the recommended practice due to the single-threaded nature of the server. However, with YugaByte DB offering a persistent and elastic Redis database across multiple nodes, this feature was highly requested by many of our users.

In YugaByte DB, each redis database is modeled as a separate DocDB table. The database name can be any arbitrary string (it has to be an integer in open-source Redis). New commands have been added to the YEDIS API – CreateDB, ListDB, DeleteDB and Select to enable working with databases. You can read more details about the design of databases in Yedis.

Authentication support with multiple passwords in Redis API

Security is a critical part of databases. To secure the Redis API on YugaByte DB deployments, we enhanced the Redis AUTH command to support authentication for client connections by storing credentials in a centralized location in the DB. We got an enhancement request to support authentication of clients against multiple passwords simultaneously. This enables the app tier to be upgraded in a rolling fashion, because during the upgrades, some clients would use the old password while others would use the new one. This feature enables a zero-downtime upgrade of the application tier while not compromising on security.

You can set multiple passwords using the CONFIG SET command. Read more about the design of Redis authentication.

What’s Next?

Karthik Ranganathan

Founder & CTO