From 736f766d5452ba33df7c9739fd21f74c956d9fe1 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 12:28:02 -0400 Subject: [PATCH 01/11] first revisions --- README.md | 142 ++++++++++++++---------------------------------------- 1 file changed, 36 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index 2195e2a6157d..ac2e2393f195 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ **Table of Contents** -- [What is CockroachDB](#what-is-cockroachdb) +- [What is CockroachDB?](#what-is-cockroachdb) - [Status](#status) -- [Running CockroachDB Locally](#running-cockroachdb-locally) -- [Deploying CockroachDB in the cloud](#deploying-cockroachdb-in-the-cloud) -- [Running a multi-node cluster](#running-a-multi-node-cluster) +- [Quickstart](#quickstart) +- [Manual Deployment](#manual-deployment) +- [Cloud Deployment](#cloud-deployment) - [Getting in touch and contributing](#get-in-touch) - [Talks](#talks) - [Design](#design) and [Datastore Goal Articulation](#datastore-goal-articulation) @@ -27,128 +27,58 @@ CockroachDB is currently in alpha. See our [Roadmap](https://github.com/cockroachdb/cockroach/issues/2132) and [Issues](https://github.com/cockroachdb/cockroach/issues) for a list of features planned or in development. -## Running CockroachDB Locally +## Quickstart -### Environment Setup +1. [Install Cockroach DB](https://www.cockroachlabs.com/docs/install-cockroachdb.html) -#### Native (read: without Docker) +2. [Start a local cluster](https://www.cockroachlabs.com/docs/start-a-local-cluster.html) with three nodes running on different ports: -* set up the dev environment (see [CONTRIBUTING.md](CONTRIBUTING.md)) -* `make build` - -#### Using Docker - -Install Docker! On OSX ([official docs](https://docs.docker.com/engine/installation/mac/#from-your-shell)): -```bash -# install docker and docker-machine: -$ brew install docker docker-machine -# install VirtualBox: -$ brew cask install virtualbox -# create the VM (this will also start it): -$ docker-machine create --driver virtualbox default -# if the VM exists but isn't running, start it: -$ docker-machine start default -# set up the environment for the docker client: -$ eval $(docker-machine env default) -``` -Other operating systems will have a similar set of commands. Please check Docker's documentation for more info. - -Pull the CockroachDB Docker image and drop into a shell within it: -```bash -docker pull cockroachdb/cockroach -docker run -p 26257:26257 -p 8080:8080 -t -i cockroachdb/cockroach shell -# root@82cb657cdc42:/cockroach# -``` - -### Bootstrap and talk to a single node - -Note: If you’re using Docker as described above, run all the commands described below in the container’s shell. - -Setting up Cockroach is easy, but starting a test node is even easier. All it takes is running: - -```bash -./cockroach start --insecure & +```shell +$ ./cockroach start --insecure & +$ ./cockroach start --insecure --store=node2-data --port=26258 --http-port=8081 --join=localhost:26257 & +$ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & ``` -Verify that you're up and running by visiting the cluster UI. If you're running -without Docker (or on Linux), you'll find it at -[localhost:8080](http://localhost:8080); for OSX under Docker, things are a -little more complicated and you need to run `docker-machine ip default` to get -the correct address (but the port is the same). +3. Use the built-in SQL client to talk to the cluster: -##### Built-in client - -Now let's talk to this node. The easiest way to do that is to use the `cockroach` binary - it comes with a built-in sql client: - -```bash -./cockroach sql --insecure +```shell +$ ./cockroach sql --insecure # Welcome to the cockroach SQL interface. # All statements must be terminated by a semicolon. # To exit: CTRL + D. -192.168.99.100:26257> show databases; -+----------+ -| Database | -+----------+ -| system | -+----------+ -192.168.99.100:26257> SET database = system; -OK -192.168.99.100:26257> show tables; -+------------+ -| Table | -+------------+ -| descriptor | -| eventlog | -| lease | -| namespace | -| rangelog | -| reporting | -| users | -| zones | -+------------+ -``` -Check out `./cockroach help` to see all available commands. +root@:26257> CREATE DATABASE bank; +CREATE DATABASE +root@:26257> SET DATABASE = bank; +SET -## Deploying CockroachDB in the cloud +root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL); +CREATE TABLE -For a sample configuration to run an insecure CockroachDB cluster on AWS using [Terraform](https://terraform.io/), -see [cloud deployment](https://github.com/cockroachdb/cockroach/tree/master/cloud/aws). - -## Running a multi-node cluster +root@26257> INSERT INTO accounts VALUES (1234, DECIMAL '10000.50'); +INSERT 1 -We'll set up a three-node cluster below. - -The code assumes that `$NODE{1,2,3}` are the host names of the three nodes in the cluster. - -```bash -# Create certificates -./cockroach cert create-ca -./cockroach cert create-node 127.0.0.1 ::1 localhost $NODE1 $NODE2 $NODE3 -./cockroach cert create-client root -# Distribute certificates -for n in $NODE1 $NODE2 $NODE3; do - scp -r certs ${n}:certs -done +root@26257> SELECT * FROM accounts; ++------+----------+ +| id | balance | ++------+----------+ +| 1234 | 10000.50 | ++------+----------+ ``` -Now, on node 1, initialize the cluster (this example uses `/data`; yours may vary): +4. Checkout the admin UI by pointing your browser to `http://:26257`. -```bash -./cockroach start --store=/data1 -``` +5. Learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html). -Then, add nodes 2, 3, etc. to the cluster by specifying the `--join` flag to connect to any already-joined node. +## Manual Deployment -```bash -./cockroach start --store=/data2 --join=${NODE1}:26257 -``` +To run a CockroachDB cluster on multiple machines, see [Manual Deployment]. -Verify that the cluster is connected on the web UI by directing your browser at -``` -https://:8080 -``` +## Cloud Deployment + +For a sample configuration to run an insecure CockroachDB cluster on AWS using [Terraform](https://terraform.io/), +see [cloud deployment](https://github.com/cockroachdb/cockroach/tree/master/cloud/aws). ## Get in touch From 7f38862b92f33bddac42da0a086e08ef1359ddd2 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 13:18:10 -0400 Subject: [PATCH 02/11] revising Get In Touch and Contributing --- README.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ac2e2393f195..7c0e65edae92 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ **Table of Contents** - [What is CockroachDB?](#what-is-cockroachdb) -- [Status](#status) - [Quickstart](#quickstart) - [Manual Deployment](#manual-deployment) - [Cloud Deployment](#cloud-deployment) @@ -17,11 +16,9 @@ - [Design](#design) and [Datastore Goal Articulation](#datastore-goal-articulation) - [Architecture](#architecture) and [Client Architecture](#client-architecture) -## What is CockroachDB +## What is CockroachDB? -CockroachDB is a distributed SQL database built on top of a transactional and consistent key:value store. The primary design goals are support for ACID transactions, horizontal scalability, and survivability, hence the name. CockroachDB implements a Raft consensus algorithm for consistency. It aims to tolerate disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention. CockroachDB nodes (RoachNodes) are symmetric; a design goal is homogeneous deployment (one binary) with minimal configuration. - -## Status +CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. CockroachDB is currently in alpha. See our [Roadmap](https://github.com/cockroachdb/cockroach/issues/2132) and @@ -69,7 +66,7 @@ root@26257> SELECT * FROM accounts; 4. Checkout the admin UI by pointing your browser to `http://:26257`. -5. Learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html). +You might also want to learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html) and connect with a [client driver](https://www.cockroachlabs.com/docs/install-client-drivers.html). ## Manual Deployment @@ -80,19 +77,24 @@ To run a CockroachDB cluster on multiple machines, see [Manual Deployment]. For a sample configuration to run an insecure CockroachDB cluster on AWS using [Terraform](https://terraform.io/), see [cloud deployment](https://github.com/cockroachdb/cockroach/tree/master/cloud/aws). -## Get in touch +## Get In Touch + +When you see a bug or have improvements to suggest, please open an [issue +tracker](https://github.com/cockroachdb/cockroach/issues). -We spend almost all of our time here on GitHub, and use the [issue -tracker](https://github.com/cockroachdb/cockroach/issues) for -bug reports. +For development-related questions, there are two easy ways to get in touch: -For development related questions and anything else, message our mailing list at [cockroach-db@googlegroups.com](https://groups.google.com/forum/#!forum/cockroach-db). We recommend joining before posting, or your messages may be held back for moderation. +- [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. +- [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. ### Contributing -We're an Open Source project and welcome contributions. -See [CONTRIBUTING.md](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md) to get your local environment set up. -Once that's done, take a look at our [open issues](https://github.com/cockroachdb/cockroach/issues/), in particular those with the [helpwanted label](https://github.com/cockroachdb/cockroach/labels/helpwanted), and follow our [code reviews](https://github.com/cockroachdb/cockroach/pulls/) to learn about our style and conventions. +We're an open source project and welcome contributions. + +1. See [CONTRIBUTING.md](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md) to get your local environment set up. +2. Take a look at our [open issues](https://github.com/cockroachdb/cockroach/issues/), in particular those with the [helpwanted label](https://github.com/cockroachdb/cockroach/labels/helpwanted). +3. Review our [style guide](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#style-guide) and follow our [code reviews](https://github.com/cockroachdb/cockroach/pulls) to learn about our style and conventions. +4. Make your changes according to our [code review workflow](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#code-review-workflow). ## Talks From 36b3219fb00118abc571e7fe3aa8d3dd5776e48e Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 13:21:12 -0400 Subject: [PATCH 03/11] fixing indentation problems --- README.md | 71 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 7c0e65edae92..e9ec2d8411aa 100644 --- a/README.md +++ b/README.md @@ -26,43 +26,43 @@ CockroachDB is currently in alpha. See our ## Quickstart -1. [Install Cockroach DB](https://www.cockroachlabs.com/docs/install-cockroachdb.html) +1. [Install Cockroach DB](https://www.cockroachlabs.com/docs/install-cockroachdb.html) -2. [Start a local cluster](https://www.cockroachlabs.com/docs/start-a-local-cluster.html) with three nodes running on different ports: +2. [Start a local cluster](https://www.cockroachlabs.com/docs/start-a-local-cluster.html) with three nodes running on different ports: -```shell -$ ./cockroach start --insecure & -$ ./cockroach start --insecure --store=node2-data --port=26258 --http-port=8081 --join=localhost:26257 & -$ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & -``` + ```shell + $ ./cockroach start --insecure & + $ ./cockroach start --insecure --store=node2-data --port=26258 --http-port=8081 --join=localhost:26257 & + $ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & + ``` -3. Use the built-in SQL client to talk to the cluster: +3. Use the built-in SQL client to talk to the cluster: -```shell -$ ./cockroach sql --insecure -# Welcome to the cockroach SQL interface. -# All statements must be terminated by a semicolon. -# To exit: CTRL + D. + ```shell + $ ./cockroach sql --insecure + # Welcome to the cockroach SQL interface. + # All statements must be terminated by a semicolon. + # To exit: CTRL + D. -root@:26257> CREATE DATABASE bank; -CREATE DATABASE + root@:26257> CREATE DATABASE bank; + CREATE DATABASE -root@:26257> SET DATABASE = bank; -SET + root@:26257> SET DATABASE = bank; + SET -root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL); -CREATE TABLE + root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL); + CREATE TABLE -root@26257> INSERT INTO accounts VALUES (1234, DECIMAL '10000.50'); -INSERT 1 + root@26257> INSERT INTO accounts VALUES (1234, DECIMAL '10000.50'); + INSERT 1 -root@26257> SELECT * FROM accounts; -+------+----------+ -| id | balance | -+------+----------+ -| 1234 | 10000.50 | -+------+----------+ -``` + root@26257> SELECT * FROM accounts; + +------+----------+ + | id | balance | + +------+----------+ + | 1234 | 10000.50 | + +------+----------+ + ``` 4. Checkout the admin UI by pointing your browser to `http://:26257`. @@ -84,17 +84,20 @@ tracker](https://github.com/cockroachdb/cockroach/issues). For development-related questions, there are two easy ways to get in touch: -- [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. -- [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. +- [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. +- [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. ### Contributing We're an open source project and welcome contributions. -1. See [CONTRIBUTING.md](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md) to get your local environment set up. -2. Take a look at our [open issues](https://github.com/cockroachdb/cockroach/issues/), in particular those with the [helpwanted label](https://github.com/cockroachdb/cockroach/labels/helpwanted). -3. Review our [style guide](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#style-guide) and follow our [code reviews](https://github.com/cockroachdb/cockroach/pulls) to learn about our style and conventions. -4. Make your changes according to our [code review workflow](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#code-review-workflow). +1. See [CONTRIBUTING.md](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md) to get your local environment set up. + +2. Take a look at our [open issues](https://github.com/cockroachdb/cockroach/issues/), in particular those with the [helpwanted label](https://github.com/cockroachdb/cockroach/labels/helpwanted). + +3. Review our [style guide](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#style-guide) and follow our [code reviews](https://github.com/cockroachdb/cockroach/pulls) to learn about our style and conventions. + +4. Make your changes according to our [code review workflow](https://github.com/cockroachdb/cockroach/blob/master/CONTRIBUTING.md#code-review-workflow). ## Talks From 142ad61307e31bc925a979cf7a69b9416f6fb169 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 13:23:51 -0400 Subject: [PATCH 04/11] seeign if h1 header works --- README.md | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index e9ec2d8411aa..67f4d9feeedf 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,8 @@ [![Circle CI](https://circleci.com/gh/cockroachdb/cockroach.svg?style=svg)](https://circleci.com/gh/cockroachdb/cockroach) [![GoDoc](https://godoc.org/github.com/cockroachdb/cockroach?status.png)](https://godoc.org/github.com/cockroachdb/cockroach) ![Project Status](https://img.shields.io/badge/status-alpha-red.svg) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cockroachdb/cockroach?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -## A Scalable, Survivable, Strongly-Consistent SQL Database - -**Table of Contents** - -- [What is CockroachDB?](#what-is-cockroachdb) -- [Quickstart](#quickstart) -- [Manual Deployment](#manual-deployment) -- [Cloud Deployment](#cloud-deployment) -- [Getting in touch and contributing](#get-in-touch) -- [Talks](#talks) -- [Design](#design) and [Datastore Goal Articulation](#datastore-goal-articulation) -- [Architecture](#architecture) and [Client Architecture](#client-architecture) +# CockroachDB +**A Scalable, Survivable, Strongly-Consistent SQL Database** ## What is CockroachDB? @@ -26,7 +16,7 @@ CockroachDB is currently in alpha. See our ## Quickstart -1. [Install Cockroach DB](https://www.cockroachlabs.com/docs/install-cockroachdb.html) +1. [Install Cockroach DB](https://www.cockroachlabs.com/docs/install-cockroachdb.html). 2. [Start a local cluster](https://www.cockroachlabs.com/docs/start-a-local-cluster.html) with three nodes running on different ports: @@ -87,7 +77,7 @@ For development-related questions, there are two easy ways to get in touch: - [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. - [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. -### Contributing +## Contributing We're an open source project and welcome contributions. From 322b014de61a2d1f285ae84dbc8678a40a37662a Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 13:28:04 -0400 Subject: [PATCH 05/11] making h1 a link --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 67f4d9feeedf..809169a52613 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,7 @@ [![Circle CI](https://circleci.com/gh/cockroachdb/cockroach.svg?style=svg)](https://circleci.com/gh/cockroachdb/cockroach) [![GoDoc](https://godoc.org/github.com/cockroachdb/cockroach?status.png)](https://godoc.org/github.com/cockroachdb/cockroach) ![Project Status](https://img.shields.io/badge/status-alpha-red.svg) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cockroachdb/cockroach?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -# CockroachDB -**A Scalable, Survivable, Strongly-Consistent SQL Database** - -## What is CockroachDB? +# [CockroachDB](https://cockroachlabs.com) CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. From 1df7b6370ea2f6c05b88b7151bc9fc5e8dcafef9 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 14:09:20 -0400 Subject: [PATCH 06/11] client drivers and talks --- README.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 809169a52613..d0355b920248 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,14 @@ [![Circle CI](https://circleci.com/gh/cockroachdb/cockroach.svg?style=svg)](https://circleci.com/gh/cockroachdb/cockroach) [![GoDoc](https://godoc.org/github.com/cockroachdb/cockroach?status.png)](https://godoc.org/github.com/cockroachdb/cockroach) ![Project Status](https://img.shields.io/badge/status-alpha-red.svg) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cockroachdb/cockroach?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -# [CockroachDB](https://cockroachlabs.com) +## What is CockroachDB? CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. +For more details, see our [FAQ](https://www.cockroachlabs.com/docs/frequently-asked-questions.html),[docs](https://www.cockroachlabs.com/docs), and [design overview](#design-overview). + +## Status + CockroachDB is currently in alpha. See our [Roadmap](https://github.com/cockroachdb/cockroach/issues/2132) and [Issues](https://github.com/cockroachdb/cockroach/issues) for a list of features planned or in development. @@ -23,7 +27,7 @@ CockroachDB is currently in alpha. See our $ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & ``` -3. Use the built-in SQL client to talk to the cluster: +3. [Use the built-in SQL client](https://www.cockroachlabs.com/docs/use-the-built-in-sql-client.html) to run some [CockroachDB SQL statements](https://www.cockroachlabs.com/docs/learn-cockroachdb-sql.html): ```shell $ ./cockroach sql --insecure @@ -53,11 +57,15 @@ CockroachDB is currently in alpha. See our 4. Checkout the admin UI by pointing your browser to `http://:26257`. -You might also want to learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html) and connect with a [client driver](https://www.cockroachlabs.com/docs/install-client-drivers.html). +5. Learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html) + +## Client Drivers + +CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect to CockroachDB from various languages. For recommended drivers that we've tested, see [Install Client Drivers](https://www.cockroachlabs.com/docs/install-client-drivers.html). ## Manual Deployment -To run a CockroachDB cluster on multiple machines, see [Manual Deployment]. +To run a CockroachDB cluster on multiple machines, see [Manual Deployment](https://www.cockroachlabs.com/docs/manual-deployment.html). ## Cloud Deployment @@ -88,6 +96,11 @@ We're an open source project and welcome contributions. ## Talks +Date | Topic | Duration | Venue | Presenter +-----|-------|----------|-------|---------- +12/02/2015 | [CockroachDB's MVCC model](https://www.youtube.com/watch?v=-ij2OiDTxz0) | 21 min | Annual RocksDB meetup at Facebook HQ | [Spencer Kimball] (https://github.com/spencerkimball) +10/28/2015 | [Architecture * overview](https://www.youtube.com/watch?v=tV-WXM2IJ3U) | 30 min | Code Driven NYC | [Spencer Kimball] (https://github.com/spencerkimball) + * [Venue: Annual RocksDB meetup at Facebook HQ](https://www.youtube.com/watch?v=-ij2OiDTxz0), by [Spencer Kimball] (https://github.com/spencerkimball) on (12/02/2015), 21min.
CockroachDB's MVCC model. * [Venue: Code Driven NYC](https://www.youtube.com/watch?v=tV-WXM2IJ3U), by [Spencer Kimball] (https://github.com/spencerkimball) on (10/28/2015), 30min.
@@ -108,7 +121,7 @@ We're an open source project and welcome contributions. * [Venue: Yelp!](https://www.youtube.com/watch?feature=youtu.be&v=MEAuFgsmND0), by [Spencer Kimball](https://github.com/spencerkimball) on (9/5/2014), 1h. -## Design +## Design Overview This is an overview. For an in depth discussion of the design, see the [design doc](https://github.com/cockroachdb/cockroach/blob/master/docs/design.md). From 124aff82c29b01539be3b77bba6167bc7fbf58c1 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 14:47:35 -0400 Subject: [PATCH 07/11] minor changes to design overview --- README.md | 78 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index d0355b920248..a0bfa952312d 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,18 @@ [![Circle CI](https://circleci.com/gh/cockroachdb/cockroach.svg?style=svg)](https://circleci.com/gh/cockroachdb/cockroach) [![GoDoc](https://godoc.org/github.com/cockroachdb/cockroach?status.png)](https://godoc.org/github.com/cockroachdb/cockroach) ![Project Status](https://img.shields.io/badge/status-alpha-red.svg) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cockroachdb/cockroach?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +# A Scalable, Survivable, Strongly-Consistent SQL Database + +- [What is CockroachDB?](#what-is-cockroachdb) +- [Quickstart](#quickstart) +- [Client Drivers](#client-drivers) +- [Manual Deployment](#manual-deployment) +- [Cloud Deployment](#cloud-deployment) +- [Get In Touch](#get-in-touch) +- [Contributing](#contributing) +- [Talks](#talks) +- [Design Overview](#design-overview) + ## What is CockroachDB? CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. @@ -74,10 +86,9 @@ see [cloud deployment](https://github.com/cockroachdb/cockroach/tree/master/clou ## Get In Touch -When you see a bug or have improvements to suggest, please open an [issue -tracker](https://github.com/cockroachdb/cockroach/issues). +When you see a bug or have improvements to suggest, please open an [issue](https://github.com/cockroachdb/cockroach/issues). -For development-related questions, there are two easy ways to get in touch: +For development-related questions and anything else, there are two easy ways to get in touch: - [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. - [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. @@ -96,38 +107,33 @@ We're an open source project and welcome contributions. ## Talks -Date | Topic | Duration | Venue | Presenter ------|-------|----------|-------|---------- -12/02/2015 | [CockroachDB's MVCC model](https://www.youtube.com/watch?v=-ij2OiDTxz0) | 21 min | Annual RocksDB meetup at Facebook HQ | [Spencer Kimball] (https://github.com/spencerkimball) -10/28/2015 | [Architecture * overview](https://www.youtube.com/watch?v=tV-WXM2IJ3U) | 30 min | Code Driven NYC | [Spencer Kimball] (https://github.com/spencerkimball) +- 12/2/2015: [Annual RocksDB meetup at Facebook HQ](https://www.youtube.com/watch?v=-ij2OiDTxz0), by [Spencer Kimball] (https://github.com/spencerkimball), 21min + CockroachDB's MVCC model. -* [Venue: Annual RocksDB meetup at Facebook HQ](https://www.youtube.com/watch?v=-ij2OiDTxz0), by [Spencer Kimball] (https://github.com/spencerkimball) on (12/02/2015), 21min.
- CockroachDB's MVCC model. -* [Venue: Code Driven NYC](https://www.youtube.com/watch?v=tV-WXM2IJ3U), by [Spencer Kimball] (https://github.com/spencerkimball) on (10/28/2015), 30min.
- Architecture & Overview. -* [Venue: Golang UK Conference 2015](https://www.youtube.com/watch?v=33oqpLmQ3LE), by [Ben Darnell](https://github.com/bdarnell) on (08/21/2015), 52min.
-* [Venue: Data Driven NYC](https://youtu.be/TA-Jw78Ms_4), by [Spencer Kimball] (https://github.com/spencerkimball) on (06/16/2015), 23min.
- A short, less technical presentation of CockroachDB. -* [Venue: NY Enterprise Technology Meetup](https://www.youtube.com/watch?v=SXAEZlpsHNE), by [Tobias Schottdorf](https://github.com/tschottdorf) on (06/10/2015), 15min.
- A short, non-technical talk with a small cluster survivability demo. -* [Venue: CoreOS Fest](https://www.youtube.com/watch?v=LI7uaaYeYmQ), by [Spencer Kimball](https://github.com/spencerkimball) on (05/27/2015), 25min.
- An introduction to the goals and design of CockroachDB. The recommended talk to watch if all you have time for is one. -* [Venue: The Go Devroom FOSDEM 2015](https://www.youtube.com/watch?v=ndKj77VW2eM&index=2&list=PLtLJO5JKE5YDK74RZm67xfwaDgeCj7oqb), by [Tobias Schottdorf](https://github.com/tschottdorf) on (03/04/2015), 45min.
- The most technical talk given thus far, going through the implementation of transactions in some detail. +- 10/28/2015: [Code Driven NYC](https://www.youtube.com/watch?v=tV-WXM2IJ3U), by [Spencer Kimball] (https://github.com/spencerkimball), 30min + Architecture & overview. -### Older talks +- 8/21/2015: [Golang UK Conference 2015](https://www.youtube.com/watch?v=33oqpLmQ3LE), by [Ben Darnell](https://github.com/bdarnell), 52min -* [Venue: The NoSQL User Group Cologne](https://www.youtube.com/watch?v=jI3LiKhqN0E), by [Tobias Schottdorf](https://github.com/tschottdorf) on (11/5/2014), 1h25min. -* [Venue: Yelp!](https://www.youtube.com/watch?feature=youtu.be&v=MEAuFgsmND0), by [Spencer Kimball](https://github.com/spencerkimball) on (9/5/2014), 1h. +- 6/16/2015: [Data Driven NYC](https://youtu.be/TA-Jw78Ms_4), by [Spencer Kimball] (https://github.com/spencerkimball), 23min + A short, less technical presentation of CockroachDB. +- 6/10/2015: [NY Enterprise Technology Meetup](https://www.youtube.com/watch?v=SXAEZlpsHNE), by [Tobias Schottdorf](https://github.com/tschottdorf), 15min + A short, non-technical talk with a small cluster survivability demo. -## Design Overview +- 5/27/2015: [CoreOS Fest](https://www.youtube.com/watch?v=LI7uaaYeYmQ), by [Spencer Kimball](https://github.com/spencerkimball), 25min + An introduction to the goals and design of CockroachDB. **Recommended** if you only have time for one talk. -This is an overview. For an in depth discussion of the design, see the [design doc](https://github.com/cockroachdb/cockroach/blob/master/docs/design.md). +- 3/4/2015: [The Go Devroom FOSDEM 2015](https://www.youtube.com/watch?v=ndKj77VW2eM&index=2&list=PLtLJO5JKE5YDK74RZm67xfwaDgeCj7oqb), by [Tobias Schottdorf](https://github.com/tschottdorf), 45min + The most technical talk given thus far, going through the implementation of transactions in some detail. -For a quick design overview, see the [CockroachDB tech talk slides](https://docs.google.com/presentation/d/1tPPhnpJ3UwyYMe4MT8jhqCrE9ZNrUMqsvXAbd97DZ2E/edit#slide=id.p) -or watch a [presentation](#talks). +- 11/5/2014: [The NoSQL User Group Cologne](https://www.youtube.com/watch?v=jI3LiKhqN0E), by [Tobias Schottdorf](https://github.com/tschottdorf), 1h 25min +- 9/5/2014: [Yelp!](https://www.youtube.com/watch?feature=youtu.be&v=MEAuFgsmND0), by [Spencer Kimball](https://github.com/spencerkimball), 1h + +## Design Overview + +This is an overview. For an in-depth discussion of the design and architecture, see the full [design doc](https://github.com/cockroachdb/cockroach/blob/master/docs/design.md). For another quick design overview, see the [CockroachDB tech talk slides](https://docs.google.com/presentation/d/1tPPhnpJ3UwyYMe4MT8jhqCrE9ZNrUMqsvXAbd97DZ2E/edit#slide=id.p). CockroachDB is a distributed SQL database built on top of a transactional and consistent key:value store. The primary design goals are support for ACID transactions, horizontal scalability and survivability, hence the name. CockroachDB implements a Raft consensus algorithm for consistency. It aims to tolerate disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention. CockroachDB nodes (RoachNodes) are symmetric; a design goal is homogeneous deployment (one binary) with minimal configuration. @@ -142,9 +148,9 @@ total byte size within a globally configurable min/max size interval. Range sizes default to target 64M in order to facilitate quick splits and merges and to distribute load at hotspots within a key range. Range replicas are intended to be located in disparate -datacenters for survivability (e.g. { US-East, US-West, Japan }, { -Ireland, US-East, US-West}, { Ireland, US-East, US-West, Japan, -Australia }). +datacenters for survivability (e.g. `{ US-East, US-West, Japan }`, `{ +Ireland, US-East, US-West}` , `{ Ireland, US-East, US-West, Japan, +Australia }`). Single mutations to ranges are mediated via an instance of a distributed consensus algorithm to ensure consistency. We’ve chosen to @@ -176,16 +182,12 @@ performance and/or availability. Unlike Spanner, zones are monolithic and don’t allow movement of fine grained data on the level of entity groups. -A [Megastore][4]-like message queue mechanism is also provided to 1) -efficiently sideline updates which can tolerate asynchronous execution -and 2) provide an integrated message queuing system for asynchronous -communication between distributed system components. - #### SQL - NoSQL - NewSQL Capabilities ![SQL - NoSQL - NewSQL Capabilities](/resource/doc/sql-nosql-newsql.png?raw=true) -## Datastore Goal Articulation + +### Datastore Goal Articulation There are other important axes involved in data-stores which are less well understood and/or explained. There is lots of cross-dependency, @@ -252,7 +254,7 @@ write-optimized (HBase, Cassandra, SQLite3/LSM, CockroachDB). ![Read vs. Write Optimization Spectrum](/resource/doc/read-vs-write.png?raw=true) -## Architecture +### Architecture CockroachDB implements a layered architecture, with various subdirectories implementing layers as appropriate. The highest level of @@ -278,7 +280,7 @@ replicas. ![Range Architecture Blowup](/resource/doc/architecture-blowup.png?raw=true) -## Client Architecture +### Client Architecture RoachNodes serve client traffic using a fully-featured SQL API which accepts requests as either application/x-protobuf or application/json. Client implementations consist of an HTTP sender From 40e9747648a49639d20e4aab5e29a8bf3d5f64e8 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 14:59:34 -0400 Subject: [PATCH 08/11] minor improvements --- README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a0bfa952312d..74774ac98ca7 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,16 @@ [![Circle CI](https://circleci.com/gh/cockroachdb/cockroach.svg?style=svg)](https://circleci.com/gh/cockroachdb/cockroach) [![GoDoc](https://godoc.org/github.com/cockroachdb/cockroach?status.png)](https://godoc.org/github.com/cockroachdb/cockroach) ![Project Status](https://img.shields.io/badge/status-alpha-red.svg) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cockroachdb/cockroach?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -# A Scalable, Survivable, Strongly-Consistent SQL Database +## A Scalable, Survivable, Strongly-Consistent SQL Database - [What is CockroachDB?](#what-is-cockroachdb) - [Quickstart](#quickstart) - [Client Drivers](#client-drivers) -- [Manual Deployment](#manual-deployment) -- [Cloud Deployment](#cloud-deployment) +- [Deployment](#deployment) - [Get In Touch](#get-in-touch) - [Contributing](#contributing) - [Talks](#talks) -- [Design Overview](#design-overview) +- [Design](#design) ## What is CockroachDB? @@ -39,14 +38,18 @@ CockroachDB is currently in alpha. See our $ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & ``` -3. [Use the built-in SQL client](https://www.cockroachlabs.com/docs/use-the-built-in-sql-client.html) to run some [CockroachDB SQL statements](https://www.cockroachlabs.com/docs/learn-cockroachdb-sql.html): +3. [Start the built-in SQL client](https://www.cockroachlabs.com/docs/use-the-built-in-sql-client.html) as an interactive shell: ```shell $ ./cockroach sql --insecure # Welcome to the cockroach SQL interface. # All statements must be terminated by a semicolon. # To exit: CTRL + D. + ``` + +4. Run some [CockroachDB SQL statements](https://www.cockroachlabs.com/docs/learn-cockroachdb-sql.html): + ```shell root@:26257> CREATE DATABASE bank; CREATE DATABASE @@ -69,20 +72,17 @@ CockroachDB is currently in alpha. See our 4. Checkout the admin UI by pointing your browser to `http://:26257`. -5. Learn how to [secure your cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html) +5. Learn how to [secure a cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html). ## Client Drivers CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect to CockroachDB from various languages. For recommended drivers that we've tested, see [Install Client Drivers](https://www.cockroachlabs.com/docs/install-client-drivers.html). -## Manual Deployment - -To run a CockroachDB cluster on multiple machines, see [Manual Deployment](https://www.cockroachlabs.com/docs/manual-deployment.html). +## Deployment -## Cloud Deployment +- [Manual](https://www.cockroachlabs.com/docs/manual-deployment.html) - Steps to deploy a CockroachDB cluster manually on multiple machines. -For a sample configuration to run an insecure CockroachDB cluster on AWS using [Terraform](https://terraform.io/), -see [cloud deployment](https://github.com/cockroachdb/cockroach/tree/master/cloud/aws). +- [Cloud](https://github.com/cockroachdb/cockroach/tree/master/cloud/aws) - A sample configuration to run an insecure CockroachDB cluster on AWS using [Terraform](https://terraform.io/). ## Get In Touch @@ -122,7 +122,7 @@ We're an open source project and welcome contributions. A short, non-technical talk with a small cluster survivability demo. - 5/27/2015: [CoreOS Fest](https://www.youtube.com/watch?v=LI7uaaYeYmQ), by [Spencer Kimball](https://github.com/spencerkimball), 25min - An introduction to the goals and design of CockroachDB. **Recommended** if you only have time for one talk. + An introduction to the goals and design of CockroachDB. **Recommended** if you have time for only one talk. - 3/4/2015: [The Go Devroom FOSDEM 2015](https://www.youtube.com/watch?v=ndKj77VW2eM&index=2&list=PLtLJO5JKE5YDK74RZm67xfwaDgeCj7oqb), by [Tobias Schottdorf](https://github.com/tschottdorf), 45min The most technical talk given thus far, going through the implementation of transactions in some detail. @@ -131,10 +131,11 @@ We're an open source project and welcome contributions. - 9/5/2014: [Yelp!](https://www.youtube.com/watch?feature=youtu.be&v=MEAuFgsmND0), by [Spencer Kimball](https://github.com/spencerkimball), 1h -## Design Overview +## Design This is an overview. For an in-depth discussion of the design and architecture, see the full [design doc](https://github.com/cockroachdb/cockroach/blob/master/docs/design.md). For another quick design overview, see the [CockroachDB tech talk slides](https://docs.google.com/presentation/d/1tPPhnpJ3UwyYMe4MT8jhqCrE9ZNrUMqsvXAbd97DZ2E/edit#slide=id.p). +### Overview CockroachDB is a distributed SQL database built on top of a transactional and consistent key:value store. The primary design goals are support for ACID transactions, horizontal scalability and survivability, hence the name. CockroachDB implements a Raft consensus algorithm for consistency. It aims to tolerate disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention. CockroachDB nodes (RoachNodes) are symmetric; a design goal is homogeneous deployment (one binary) with minimal configuration. CockroachDB implements a single, monolithic sorted map from key to value From 0caaf363fe1dff7ce0041223ac97af247afebeec Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 15:02:30 -0400 Subject: [PATCH 09/11] minor fixes --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 74774ac98ca7..ad61dc1a802a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ CockroachDB is a distributed SQL database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -For more details, see our [FAQ](https://www.cockroachlabs.com/docs/frequently-asked-questions.html),[docs](https://www.cockroachlabs.com/docs), and [design overview](#design-overview). +For more details, see our [FAQ](https://www.cockroachlabs.com/docs/frequently-asked-questions.html), [documentation](https://www.cockroachlabs.com/docs), and [design overview](#design-overview). ## Status @@ -76,7 +76,7 @@ CockroachDB is currently in alpha. See our ## Client Drivers -CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect to CockroachDB from various languages. For recommended drivers that we've tested, see [Install Client Drivers](https://www.cockroachlabs.com/docs/install-client-drivers.html). +CockroachDB supports the PostgreSQL wire protocol, so you can use any available PostgreSQL client drivers to connect from various languages. For recommended drivers that we've tested, see [Install Client Drivers](https://www.cockroachlabs.com/docs/install-client-drivers.html). ## Deployment @@ -183,7 +183,7 @@ performance and/or availability. Unlike Spanner, zones are monolithic and don’t allow movement of fine grained data on the level of entity groups. -#### SQL - NoSQL - NewSQL Capabilities +##### SQL - NoSQL - NewSQL Capabilities ![SQL - NoSQL - NewSQL Capabilities](/resource/doc/sql-nosql-newsql.png?raw=true) @@ -195,7 +195,7 @@ well understood and/or explained. There is lots of cross-dependency, but it's safe to segregate two more of them as (a) scan efficiency, and (b) read vs write optimization. -#### Datastore Scan Efficiency Spectrum +##### Datastore Scan Efficiency Spectrum Scan efficiency refers to the number of IO ops required to scan a set of sorted adjacent rows matching a criteria. However, it's a @@ -219,7 +219,7 @@ controlling physical order in different systems. ![Datastore Scan Efficiency Spectrum](/resource/doc/scan-efficiency.png?raw=true) -#### Read vs. Write Optimization Spectrum +##### Read vs. Write Optimization Spectrum Read vs write optimization is a product of the underlying sorted-order data-structure used. Btrees are read-optimized. Hybrid write-deferred From 819f36b587a19086cd836aa58a00908dd7814aa3 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Wed, 23 Mar 2016 15:05:18 -0400 Subject: [PATCH 10/11] header size change --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ad61dc1a802a..1a04e0eee3cc 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ performance and/or availability. Unlike Spanner, zones are monolithic and don’t allow movement of fine grained data on the level of entity groups. -##### SQL - NoSQL - NewSQL Capabilities +#### SQL - NoSQL - NewSQL Capabilities ![SQL - NoSQL - NewSQL Capabilities](/resource/doc/sql-nosql-newsql.png?raw=true) @@ -195,7 +195,7 @@ well understood and/or explained. There is lots of cross-dependency, but it's safe to segregate two more of them as (a) scan efficiency, and (b) read vs write optimization. -##### Datastore Scan Efficiency Spectrum +#### Datastore Scan Efficiency Spectrum Scan efficiency refers to the number of IO ops required to scan a set of sorted adjacent rows matching a criteria. However, it's a @@ -219,7 +219,7 @@ controlling physical order in different systems. ![Datastore Scan Efficiency Spectrum](/resource/doc/scan-efficiency.png?raw=true) -##### Read vs. Write Optimization Spectrum +#### Read vs. Write Optimization Spectrum Read vs write optimization is a product of the underlying sorted-order data-structure used. Btrees are read-optimized. Hybrid write-deferred From 6506ddb19ddc67c7b1f4b1a5f17b255acbadbc39 Mon Sep 17 00:00:00 2001 From: Jesse Seldess Date: Thu, 24 Mar 2016 10:31:27 -0400 Subject: [PATCH 11/11] revisions for ben and spencer --- README.md | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1a04e0eee3cc..b5c14ca1a451 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,8 @@ CockroachDB is currently in alpha. See our ```shell $ ./cockroach start --insecure & - $ ./cockroach start --insecure --store=node2-data --port=26258 --http-port=8081 --join=localhost:26257 & - $ ./cockroach start --insecure --store=node3-data --port=26259 --http-port=8082 --join=localhost:26257 & + $ ./cockroach start --insecure --store=cockroach-data2 --port=26258 --http-port=8081 --join=localhost:26257 & + $ ./cockroach start --insecure --store=cockroach-data3 --port=26259 --http-port=8082 --join=localhost:26257 & ``` 3. [Start the built-in SQL client](https://www.cockroachlabs.com/docs/use-the-built-in-sql-client.html) as an interactive shell: @@ -70,9 +70,9 @@ CockroachDB is currently in alpha. See our +------+----------+ ``` -4. Checkout the admin UI by pointing your browser to `http://:26257`. +4. Checkout the admin UI by pointing your browser to `http://:8080`. -5. Learn how to [secure a cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html). +5. CockroachDB makes it easy to [secure a cluster](https://www.cockroachlabs.com/docs/secure-a-cluster.html). ## Client Drivers @@ -90,8 +90,9 @@ When you see a bug or have improvements to suggest, please open an [issue](https For development-related questions and anything else, there are two easy ways to get in touch: -- [Join us on Gitter](https://gitter.im/cockroachdb/cockroach). This is the best, most immediate way to connect with CockroachDB engineers. -- [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db). Please join first or you messages may be held back for moderation. +- [Join us on Gitter](https://gitter.im/cockroachdb/cockroach) - This is the best, most immediate way to connect with CockroachDB engineers. + +- [Post to our Developer mailing list](https://groups.google.com/forum/#!forum/cockroach-db) - Please join first or you messages may be held back for moderation. ## Contributing @@ -107,22 +108,26 @@ We're an open source project and welcome contributions. ## Talks -- 12/2/2015: [Annual RocksDB meetup at Facebook HQ](https://www.youtube.com/watch?v=-ij2OiDTxz0), by [Spencer Kimball] (https://github.com/spencerkimball), 21min - CockroachDB's MVCC model. +The best ones to start with: - 10/28/2015: [Code Driven NYC](https://www.youtube.com/watch?v=tV-WXM2IJ3U), by [Spencer Kimball] (https://github.com/spencerkimball), 30min Architecture & overview. -- 8/21/2015: [Golang UK Conference 2015](https://www.youtube.com/watch?v=33oqpLmQ3LE), by [Ben Darnell](https://github.com/bdarnell), 52min - - 6/16/2015: [Data Driven NYC](https://youtu.be/TA-Jw78Ms_4), by [Spencer Kimball] (https://github.com/spencerkimball), 23min A short, less technical presentation of CockroachDB. +Other talks of interest: + +- 12/2/2015: [Annual RocksDB meetup at Facebook HQ](https://www.youtube.com/watch?v=-ij2OiDTxz0), by [Spencer Kimball] (https://github.com/spencerkimball), 21min + CockroachDB's MVCC model. + +- 8/21/2015: [Golang UK Conference 2015](https://www.youtube.com/watch?v=33oqpLmQ3LE), by [Ben Darnell](https://github.com/bdarnell), 52min + - 6/10/2015: [NY Enterprise Technology Meetup](https://www.youtube.com/watch?v=SXAEZlpsHNE), by [Tobias Schottdorf](https://github.com/tschottdorf), 15min A short, non-technical talk with a small cluster survivability demo. - 5/27/2015: [CoreOS Fest](https://www.youtube.com/watch?v=LI7uaaYeYmQ), by [Spencer Kimball](https://github.com/spencerkimball), 25min - An introduction to the goals and design of CockroachDB. **Recommended** if you have time for only one talk. + An introduction to the goals and design of CockroachDB. - 3/4/2015: [The Go Devroom FOSDEM 2015](https://www.youtube.com/watch?v=ndKj77VW2eM&index=2&list=PLtLJO5JKE5YDK74RZm67xfwaDgeCj7oqb), by [Tobias Schottdorf](https://github.com/tschottdorf), 45min The most technical talk given thus far, going through the implementation of transactions in some detail.