Blog
System
Idempotency and ordering in event-driven systems
Many software systems use a batch-driven process to operate. They accumulate data in a database and periodically a job will process the data to produce some result. In the past, this was sufficient. However, modern systems need to respond faster. They may not be able to wait for a batch to start. Many systems have turned to an Event-Driven approach because it is capable of reacting to events as they happen. However, despite the power of these systems, they do introduce new challenges.
Wade Waldron
July 11, 2023
Engineering
Time, TIMETZ, Timestamp, and TimestampTZ in PostgreSQL
At Cockroach Labs, we’ve spent a lot of time getting our SQL semantics to match PostgreSQL as much as possible - all so that you can use the awesome PostgreSQL language with a powerful, distributed backend like! Getting this right involves getting the Time, TimeTZ, Timestamp and TimestampTZ types right - which has proven quite the quest! Numerous bugs have been filed and fixed - and with it, our mastery of these types in PostgreSQL (and the Go time library) has increased! In this blog post, we’ll explore some intricacies we’ve found with these data types in PostgreSQL, and look at how we reproduce some of these features using Go and its ecosystem. We’ll share our recommendations for using these types along the way.
Oliver Tan
July 10, 2023
Product
Not if, but when: The case for mainframe modernization
The first idea for a mainframe was developed by a Harvard researcher who took the concept to IBM in the 1930s. After a decade or so of development, the 5 ton machine – that filled an entire room and would cost around $3M today to build – was ready to use in 1943. Industries such as banking, retail, insurance, utilities, healthcare, and government still rely on their mainframes to handle their most sensitive, large-scale transactional data. Mainframes excel when it comes to security and reliability which is why many organizations trust them with their mission-critical workloads.
Cassie McAllister
July 6, 2023
Product
What is cloud portability, and why should you care?
Companies move to the cloud to take advantage of a wide variety of benefits, but building your infrastructure on a public cloud also comes with risks. Chief among them is vendor lock-in and the fear of being at a single cloud provider’s mercy, locked in behind what would be the months or years of work necessary to switch to a different cloud. But operating across multiple clouds at the same time is technically difficult and often prohibitively expensive. Many companies have embraced a different way of mitigating the lock-in risk: cloud portability.
Charlie Custer
July 5, 2023
Culture
Cockroach Labs Opens Engineering Office in India, Unleashing New Opportunities for Growth
We have officially started our expansion in India, marking a significant milestone in our global growth strategy. The move to India reflects our continued recognition of global talent and the country’s immense strategic potential to position our distributed SQL database to be used across the world.
Spencer Kimball
June 30, 2023
System
How to use ADD CONSTRAINT in SQL (with examples)
One of the most compelling reasons to use a SQL database is that it can enforce rules about data for you, ensuring that it can only enter the database if it meets your specifications. But for it to do that effectively, you have to tell it what those rules are, so let’s talk about SQL constraints and how to add a constraint.
Charlie Custer
June 29, 2023
Product
What is a UUID, and what is it used for?
When working with a database, it’s common practice to use some kind of id field to provide a unique identifier for each row in a table. Imagine, for example, a customers table. We wouldn’t want to use fields such as name or address as unique identifiers because it’s possible more than one customer could have the same name, or share the same address, or in some cases even both! Instead, it’s a good idea to assign each row some kind of truly unique identifier. One option we have is to use a UUID.
Charlie Custer
June 29, 2023
Engineering
3 common foreign key mistakes (and how to avoid them)
Foreign keys are an important element of any relational database. But when you’re setting up your database schema, it’s relatively easy to create problems for yourself if the foreign keys aren’t set up correctly. Here are three of the most common mistakes made with foreign keys, and a little advice on how to avoid them!
Charlie Custer
June 28, 2023
Engineering
Performance Benefits of NOT NULL Constraints on Foreign Key Reference Columns
NOT NULL constraints are a ubiquitous tool for upholding data integrity. However, their performance benefits are less obvious. NOT NULL constraints provide a query optimizer with additional context that unlocks optimizations that significantly reduce query latency. In this post we’ll examine a few of these optimizations that transform query plans involving foreign key relationships.
Marcus Gartner
June 27, 2023