With the increased ease of gaining access to servers in data centers across the world has come the need for supporting globally distributed data storage. With the first wave of cloud era databases the ability to replicate information geographically came at the expense of transactions and familiar query languages. To address these shortcomings the engineers at Cockroach Labs have built a globally distributed SQL database with full ACID semantics in Cockroach DB. In this episode Peter Mattis, the co-founder and VP of Engineering at Cockroach Labs, describes the architecture that underlies the database, the challenges they have faced along the way, and the ways that you can use it in your own environments today.
Do you want to try out some of the tools and applications that you heard about on the Data Engineering Podcast? Do you have some ETL jobs that need somewhere to run? Check out Linode at promo.linode.com/dataengineeringpodcast or use the code dataengineering2018 and get a $20 credit (that’s 4 months free!) to try out their fast and reliable Linux virtual servers. They’ve got lightning fast networking and SSD servers with plenty of power and storage to run whatever you want to experiment on.
- Hello and welcome to the Data Engineering Podcast, the show about modern data management
- When you’re ready to build your next pipeline you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 40Gbit network, all controlled by a brand new API you’ve got everything you need to run a bullet-proof data platform. Go to dataengineeringpodcast.com/linode to get a $20 credit and launch a new server in under a minute.
- For complete visibility into the health of your pipeline, including deployment tracking, and powerful alerting driven by machine-learning, DataDog has got you covered. With their monitoring, metrics, and log collection agent, including extensive integrations and distributed tracing, you’ll have everything you need to find and fix performance bottlenecks in no time. Go to dataengineeringpodcast.com/datadog today to start your free 14 day trial and get a sweet new T-Shirt.
- Go to dataengineeringpodcast.com to subscribe to the show, sign up for the mailing list, read the show notes, and get in touch.
- Your host is Tobias Macey and today I’m interviewing Peter Mattis about CockroachDB, the SQL database for global cloud services
- How did you get involved in the area of data management?
- What was the motivation for creating CockroachDB and building a business around it?
- Can you describe the architecture of CockroachDB and how it supports distributed ACID transactions?
- What are some of the tradeoffs that are necessary to allow for georeplicated data with distributed transactions?
- What are some of the problems that you have had to work around in the RAFT protocol to provide reliable operation of the clustering mechanism?
- Go is an unconventional language for building a database. What are the pros and cons of that choice?
- What are some of the common points of confusion that users of CockroachDB have when operating or interacting with it?
- What are the edge cases and failure modes that users should be aware of?
- I know that your SQL syntax is PostGreSQL compatible, so is it possible to use existing ORMs unmodified with CockroachDB?
- What are some examples of extensions that are specific to CockroachDB?
- What are some of the most interesting uses of CockroachDB that you have seen?
- When is CockroachDB the wrong choice?
- What do you have planned for the future of CockroachDB?
- Cockroach Labs
- From your perspective, what is the biggest gap in the tooling or technology for data management today?
- Cockroach Labs
- Google Bigtable
- RDBMS (Relational Database Management System)
- “Big Iron” (colloquial term for mainframe computers)
- RAFT Consensus Algorithm
- MVCC (Multiversion Concurrency Control)
- Garbage Collection
- Static Linking
- CAP Theorem
- ORM (Object Relational Mapping)
- Information Schema
- PG Catalog
- Interleaved Tables
- Change Data Capture