CockroachDB, an open source, fault-tolerant SQL database with horizontal scaling and strong consistency across nodes—and a name few people will likely forget—is now officially available.
Cockroach Labs, the company behind its development, touts CockroachDB as a “cloud native” database solution—a system engineered to run as a distributed resource. Version 1.0 is available in both basic and for-pay editions, and both boast features that will appeal to enterprises.
The company is rolling the dice with its handling of the enterprise edition by also making those components open source and trusting that enterprises will pay for what they use in production.
Highly available, highly distributable
Many of CockroachDB’s feature were inspired by the work underpinning Google Cloud Spanner, but CockroachDB is open source. It supports much of the functionality found in traditional SQL databases like MariaDB or PostgreSQL, such as SQL dialect support and ACID transactions.
Cockroach Labs’ biggest claim is that CockroachDB can offer those features, plus scaling and resilience features similar to what's found in NoSQL databases. A CockroachDB deployment with multiple nodes can serve not only reads but also writes, as long as at least three nodes are running somewhere.
Cockroach Labs’ long-term plans for this technology include what it calls geo-partitioning, where data can be replicated at the row level and moved to nodes where it will be closest to the customers that need it. In addition to providing a performance boost, Cockroach Labs is positioning this as a compliance solution, so data can be kept in the territories where it’s mandated to stay.
The commercial version, CockroachDB Enterprise, adds distributed and incremental backup and restore features. Many common blob storage systems are supported as back ends, such as AWS S3, and CockroachDB can run as a native presence in those cloud environments.
The enterprise honor system
Cockroach Labs’ approach to its enterprise edition is likely to raise eyebrows. In a phone interview, Cockroach Labs CEO Spencer Kimball noted that full source code will be available for the enterprise features in the same GitHub repository as the core project source code. Noncommercial entities, or those engaged in nonproduction use, can run the enterprise features “to their hearts’ content.” Enterprises that put the software into production have 30 days to negotiate a license and start receiving support.
Kimball said the company chose to do this both for the sake of getting customer feedback and to accelerate the product’s overall adoption. “Most early use cases aren’t in production,” he said. “This happens all the time in companies that adopt open source.” Later, when the product is put into production, the company can “come to grips” with the details of the licensing.
There’s always the chance of abuse with an “honor system,” as Kimball characterized it. “If [a company] can use it by themselves, essentially in violation of the license, for a long time in production, and they’re a big company—that might happen. But ultimately I think it’s much better for us in the long term to have that permissiveness in the model.”
Kimball also doesn’t believe keeping software closed source provides protection against being imitated or flat-out ripped off. “The way you stay ahead of everyone else is to keep innovating,” he said.
Performance is one area where CockroachDB can continue to move things forward in the near term. Cockroach Labs co-founder Peter Mattis noted, in a Hacker News discussion, that while performance has been improving steadily up to the release of 1.0, “we still have a lot of work to do.” Mattis also noted that the emphasis thus far has been on scale and survivability, not performance. “CockroachDB 1.0 won’t be winning benchmarks, but that was never the goal,” he said.