YugabyteDB Engineering Update – Feb 28, 2020
We are excited to announce that YugabyteDB 2.1 went GA earlier this week! You can read the official release notes here. This release shipped with almost 70 new enhancements and fixes.
What’s YugabyteDB? It is an open source, high-performance distributed SQL database built on a scalable and fault-tolerant design inspired by Google Spanner. Yugabyte’s SQL API (YSQL) is PostgreSQL wire compatible.
Highlights of this release include:
Generally Available Features
Geo-distributed, multi-cloud clusters
- Two data center (2DC) deployments for reducing cross-DC write latency
- Read replicas for reducing cross-DC read latency
Performance improvements in Yugabyte SQL
Enterprise-grade security enhancements
Beta Features
- Yugabyte Cloud as a fully-managed DBaaS
- Colocated tables for reducing JOIN latency
- yugabyted for simplifying getting started UX
- Change Data Capture (CDC) for streaming data out to external systems
New & Improved Ecosystem Integrations Since Release 2.0
For more information on what’s new, check out the 2.1 announcement blog and the complementary performance optimizations post. Below is a listing of what shipped in 2.1.
YSQL API
- Fix table location cache for system and colocated tables. #3416
- Enable ALTER TABLE IF EXISTS syntax. #3417
- Use std::future in PgDocOp to fetch RPC result. #3240
- Clean up unique index if its creation fails. #3462
- Eliminate redundant foreign key checks. #3328
- Batch all write operations when possible. #2934
- Allow CREATE DATABASE ENCODING unicode/utf8. #3595
- Fixed test wrong assumption in yb_dml_systable_scan.
- Use smart pointers for YBqlOp and YBPgsqlOp. #3641
- Provide a GFLAG to suppress unsupported error. #3633
YCQL API
- Add gflag to create YCQL tables as transactional by default; change GROUP from reserved word to keyword; fix duplicate column error message. #3313
- Fix unexpected ‘Duplicate Object’ error from the CatalogManager. #2475
- Fix signal 11: seg fault: yb::ql::PreparedResult::PreparedResult. #3415
- Application stuck in BoundStatement execution if a variable was not bound. #3419
- DocDB distributed store
- Set the default history retention duration to 120 seconds. #3373
- Fix metrics error after resetting percentiles. #3362
- Extract classes from transaction_participant.cc to separate files. #1032
- Recover after write stop. #3331
- Fix issue with yugabyted process restart loop. #3207
- Track replicated batches at transaction participant. #3220
- Backfill Index Table. #448
- Use 4 byte PG table ID as DocKey prefix. #3365
- YB inbound RPCs throttling on soft memory limit. #2563
- BlockBasedMemory mem-trackers should use the “tablet” MetricsEntity instead of “servers”. #3364
- Mean for metrics histograms should be based on the current values, not historic values. #3470
- Make yugabyted work with Docker volume mounts. #3513
- Add Graph to track Rocksdb write rejections. #2871>
- Fsync before WAL close. #3490
- Enable percentiles for redis metrics. #3362
- BlockBasedMemory mem-trackers may already exist in OpenKeyValueTablet. #3364
- Avoid race condition with CDCReadRpc. #3441
- Call TransactionParticipant shutdown from Tablet shutdown. #3495
- Point yugabyted to system conf file if present. #3169
- Backfill Index Table – TServer side implementation for backfilling non-unique indices. #448
- Colocation: make reads aware of table tombstone #3359
- Add ability to set hybrid time filter to existing rocksdb files. #1032
- Server crash on startup after table truncate. #3524
- Move all yugabyted modified data under central var dir. #3524
- Add physical time to cdc_state table. #2837
- docdb: iterate over intents past kTransactionId. #3482
- Prevent callback from detached rocksdb instance; prevent race condition between insert and truncate; disable rocksdb flush on truncate. #3288
- Persist cdc min replicated index in the superblock. #3418
- Clean up cdc_state rows for deleted streams. #2529
- yugabyted does not start with custom config file. #3634
- Create new BootstrapProducer API. #3319
- Fix key processing on CDCProducer. #3582
- Make yb-docker-ctl compatible with python3.
- Backfill index: handle failed master -> TS rpc. #3627
- [cdc] Add Last Consumer Checkpoint to CDC Producer Metrics. #2154
- Evict log cache at follower after operation was appended to log. #3665
- Implement transaction sealing w/o abort. #3220
- [Colocated] Master should issue AddTableToTable only for subsequent tables. #3681
- Extract HeartbeatDataProvider from Heartbeater. #3571
- Avoid sending apply intents from the follower. #3698
Yugabyte Platform
- YW Alerting improvements. #2892
- Add the ‘snooze alerts status’ of a universe to the health check panel. #2891
- Add UI support to be able to snooze and enable alerts. #2891
- Add toggle to take backup button. #3341
- Redirect yugaware logs from yugabyted into yugabyte-logs dir. #3516
- Add features for the read only user.
- Add endpoint to support creation of user roles in YB database(s).
- Add ability to specify list of tables to backup. #3614
- Fix metrics url check. #3653
- Do not merge flags during a gflag update. #3533
- Add option to add, delete users.
- Add ESC key binding to document to close any modal on the screen by calling the onHide callback. #3211
- Add default value for currentProvider and fix eslint warnings. #3332
- Enable multi-table backups in CreateBackups modal. #3680
- Add authentication for registering new users.
- Add support to disable the Enable/Disable Backup button on the Tables tab, and change color of disabled TableActions.
- Handle overall exceptions in a better way. #3676
New Documentation, Blogs, Tutorials, and Videos
New Blogs
- YugabyteDB 2.1 is GA: Scaling New Heights with Distributed SQL
- Achieving 10x Better Distributed SQL Performance in YugabyteDB 2.1
- Getting Started with Distributed SQL on Yugabyte Cloud
- Getting Started with JetBrains DataGrip on a Distributed SQL Database
- Developing Reactive Microservices with Spring Data and Distributed SQL
New Videos
- Getting Started with Distributed SQL Monitoring Using Prometheus, Grafana, and Google Kubernetes Engine
- Getting Started with Yugabyte Cloud
- How Change Data Capture Works in a Distributed SQL Database
- Kubernetes Best Practices for Distributed SQL
New and Updated Docs
Yugabyte Cloud Docs, including the following pages
Upcoming Conferences
- Postgres Conference, March 23-27, 2020, New York
- KubeCon + CloudNativeCon Europe, March 30 – April 2, 2020, Amsterdam
- Google Cloud Next, April 6-8, 2020, San Francisco
- Red Hat Summit, April 27-29, 2020, San Francisco
We Are Hiring!
Yugabyte is growing fast and we’d like you to help us keep the momentum going! Check out our currently open positions:
- Lead Development Representative – Sunnyvale, CA
- Site Reliability Engineer (SRE) – Sunnyvale, CA
- Community Success Engineer – Remote OK
- Senior Curriculum Developer – Remote OK
- Frontend Engineer – Sunnyvale, CA
- Software Engineer – Cloud Infrastructure – Sunnyvale, CA
- Software Engineer – Core Database – Sunnyvale, CA
- Software Engineer – Full Stack – Sunnyvale, CA
- Solutions Engineer – Sunnyvale, CA
- Developer Advocate – Sunnyvale, CA
Our team consists of domain experts from leading software companies such as Facebook, Oracle, Nutanix, Google, and LinkedIn. We have come a long way in a short time but we cannot rest on our past accomplishments. We need your ideas and skills to make us better at every function that is necessary to create the next great software company. All while having tons of fun and blazing new trails!
Get Started
Ready to start exploring YugabyteDB features? Getting up and running locally on your laptop is fast. Visit our quickstart page to get started.
What’s Next?
- Compare YugabyteDB in depth to databases like CockroachDB, Google Cloud Spanner and MongoDB.
- Get started with YugabyteDB on macOS, Linux, Docker and Kubernetes.
- Contact us to learn more about licensing, pricing or to schedule a technical overview.