Skip to content

Commit

Permalink
when cockroach is good and not good choice
Browse files Browse the repository at this point in the history
  • Loading branch information
Jesse Seldess committed Feb 1, 2017
1 parent a5d2f77 commit 217bd61
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions frequently-asked-questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,20 @@ CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive

## When is CockroachDB a good choice?

CockroachDB is especially well suited for applications that require:
CockroachDB is well suited for applications that require reliable, available, and correct data regardless of scale. It is built to automatically replicate, rebalance, and recover with minimal configuration and operational overhead. Specific use cases include:

- Horizontal scalability
- Business continuity (survivability)
- High levels of consistency
- Support for distributed ACID transactions
- Distributed or replicated OLTP
- Multi-datacenter deployments
- Cloud-native infrastructure initiatives

## When is CockroachDB not a good choice?

CockroachDB is not a good choice when very low latency reads and writes are critical; use an in-memory database instead.

Also, CockroachDB is not yet suitable for:

- Use cases requiring SQL joins ([the feature still needs optimization](https://www.cockroachlabs.com/blog/cockroachdbs-first-join/))
- Use cases requiring JSON/Protobuf data ([slated for an upcoming release](https://github.com/cockroachdb/cockroach/issues/2969))
- Real-time analytics (on our long-term roadmap)
- Complex SQL JOINS ([the feature still needs optimization](https://www.cockroachlabs.com/blog/cockroachdbs-first-join/))
- Heavy analytics / OLAP

## How easy is it to install CockroachDB?

Expand Down Expand Up @@ -81,9 +79,9 @@ The [CAP theorem](https://en.wikipedia.org/wiki/CAP_theorem) states that it is i
CockroachDB is a CP (consistent and partition tolerant) system. This means
that, in the presence of partitions, the system will become unavailable rather than do anything which might cause inconsistent results. For example, writes require acknowledgements from a majority of replicas, and reads require a lease, which can only be transferred to a different node when writes are possible.

Separately, CockroachDB is also Highly Available, although "available" here means something a bit different than the way that term is used in the CAP theorem. In the CAP theorem, availability is a binary property, but for High Availability, we talk about availability as a spectrum (using terms like "five nines" for a system that is available 99.999% of the time).
Separately, CockroachDB is also Highly Available, although "available" here means something different than the way it is used in the CAP theorem. In the CAP theorem, availability is a binary property, but for High Availability, we talk about availability as a spectrum (using terms like "five nines" for a system that is available 99.999% of the time).

So being both CP and HA means that whenever a majority of replicas can talk to each other, they should be able to make progress. For example, if you deploy CockroachDB to three datacenters and the network link to one of them fails, the other two datacenters should be able to operate normally with only a few seconds' disruption. We do this by attempting to detect partitions and failures quickly and efficiently, transferring leadership to nodes that are able to communicate with the majority, and routing internal traffic away from nodes that are partitioned away.
Being both CP and HA means that whenever a majority of replicas can talk to each other, they should be able to make progress. For example, if you deploy CockroachDB to three datacenters and the network link to one of them fails, the other two datacenters should be able to operate normally with only a few seconds' disruption. We do this by attempting to detect partitions and failures quickly and efficiently, transferring leadership to nodes that are able to communicate with the majority, and routing internal traffic away from nodes that are partitioned away.

## Why is CockroachDB SQL?

Expand Down

0 comments on commit 217bd61

Please sign in to comment.