LoginSignup
5
1

More than 5 years have passed since last update.

CockroachDB README を訳した

Last updated at Posted at 2017-03-04

これは、https://github.com/cockroachdb/cockroach/blob/master/README.md の、2017年3月時点の全訳です。Apache License, Version 2.0 の下で公開します。
CockroachDB アーキテクチャ設計も少しずつ訳しています。

CockroachDB

CockroachDB は、スケーラブルで、サバイバル可能で、強一貫性を持つ SQL データベースです。

TeamCity CIGoDocProject StatusGitter

What is CockroachDB?

CockroachDB は、スケーラブルで、サバイバル可能で、強一貫性を持つ SQL データベースです。CockroachDB は分散 SQL データベースで、トランザクショナルで強一貫性を持つキーバリューストアの上に構築されています。それは水平にスケールし;ディスク、マシン、ラック、そしてデータセンタの障害にさえ、最小限の遅延への影響と、人手による介入なしで耐えられ;強一貫性を持つ ACID トランザクションをサポートし;そしてなじみのある SQL API を使って、データを構造化し、操作し、問い合わせできます。

詳しくは、FAQ と、オリジナルの設計文書を参照下さい。

Status

CockroachDB は現在、ベータステータスです。1.0 RoadmapIssues に、計画されているあるいは開発中の機能の一覧があります。

Docs

インストール、開発、配備、そして管理のためのガイドは、User Documentation を参照下さい。

Quickstart

  1. Cockroach DB をインストールします。

  2. ローカルクラスタを開始します。三つのノードが異なるポートをリスンします。:

    $ ./cockroach start --background
    $ ./cockroach start --store=cockroach-data2 --port=26258 --http-port=8081 --join=localhost:26257 --background
    $ ./cockroach start --store=cockroach-data3 --port=26259 --http-port=8082 --join=localhost:26257 --background
    
  3. ビルトイン SQL クライアントを開始します。これは対話的シェルです。:

    $ ./cockroach sql
    # Welcome to the cockroach SQL interface.
    # All statements must be terminated by a semicolon.
    # To exit: CTRL + D.
    
  4. いくつかの CockroachDB SQL 文を実行します。:

    root@:26257> CREATE DATABASE bank;
    CREATE DATABASE
    
    root@:26257> SET DATABASE = bank;
    SET
    
    root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL);
    CREATE TABLE
    
    root@26257> INSERT INTO accounts VALUES (1234, 10000.50);
    INSERT 1
    
    root@26257> SELECT * FROM accounts;
    +------+----------+
    |  id  | balance  |
    +------+----------+
    | 1234 | 10000.50 |
    +------+----------+
    
  5. あなたのブラウザを http://<localhost>:8080 に向けて、管理者 UI を見て下さい。

  6. CockroachDB は、 クラスタをセキュアにする
    ことが簡単にできます。

Client Drivers

CockroachDB は PostgreSQL ワイヤプロトコルをサポートします。なので、あなたはいろいろな言語から、使用可能な任意の PostgreSQL クライアントドライバを使って接続できます。私達がテストした推奨ドライバは、クライアントドライバをインストールを参照下さい。

Deployment

  • マニュアル - CockroachDB を複数のマシンに手作業で配備するステップです。

  • クラウド - Terraform を使って、GCE あるいは AWS 上にセキュアでない開発あるいはテスト用のクラスタを配備するための設定ファイルと手順です。

Need Help?

Contributing

これはオープンソースプロジェクトで、私達は貢献を歓迎します。

  1. CONTRIBUTING.mdを読んで、あなたのローカル環境をセットアップして下さい。

  2. open issuesを見て下さい。特に、helpwanted label のもの。

  3. style guideを読んで、code reviews に従って、私達のスタイルと慣例を知って下さい。

  4. code review workflow に従って、あなたの変更をして下さい。

Design

これは概要です。設計とアーキテクチャについてのより深い議論は、完全な設計文書を見て下さい。

他のクイックな設計概要は、CockroachDB tech talk slides を見て下さい。

Design Goals

CockroachDB は、分散 SQL データベースであり、トランザクショナルで一貫したキーバリューストアの上に作られています。

その主な設計ゴールは、ACID トランザクション、水平スケーラビリティ、そしてサバイバル可能性のサポートです。なので、そういう名前です。

それは、ディスク、マシン、ラック、そしてデータセンタの障害にさえ、最小限の遅延への影響と、人手による介入なしで耐えられることを目指しています。

CockroachDB ノード (RoachNodes) は対称的です。設計ゴールは、均質(一つのバイナリ)で最小限の設定しか必要としない配備です。

How it Works in a Nutshell

CockroachDB は、単一のモノリシックな、キーから値へのソート済みマップを実装します。キーと値の両方はバイト文字列です(ユニコードではありません)。

マップは一つ以上のレンジから構成され、それぞれのレンジはRocksDB (LevelDB の変種) に格納されたデータに対応します。それは全部で三つ以上の CockroachDB サーバの間で複製されます。これによって、CockroachDB は線形にスケールします。理論的には、4 exabytes(4E) の論理的データまで。

レンジは、開始と終了キーで定義されます。レンジは、グローバルに設定可能な、最小/最大バイト長の範囲以内に総バイト数が維持されるようにマージとスプリットされます。レンジ長はデフォルトで目標64Mにされ、素早いスプリットとマージを可能とし、キー範囲のホットスポットへの負荷を分散します。レンジの複製はサバイバル可能性のために離れたデータセンタに置かれることを想定しています (例えば、 { US-East, US-West, Japan }, { Ireland, US-East, US-West} , { Ireland, US-East, US-West, Japan, Australia })。

レンジへの一つの変更は、分散コンセンサスアルゴリズムの一つのインスタンスで調停され、一貫性を保証します。私たちは Raft コンセンサスアルゴリズムを使うことを選びました。全てのコンセンサス状態は RocksDB にも格納されます。

一つの論理的な変更は複数のキーバリュー対に影響することがあります。論理的な変更は、ACID トランザクショナルセマンティクスを持ちます。もし論理的な変更が影響する全てのキーが同じレンジ内にあれば、アトミシティと一貫性は Raftによって保証されます。これは高速コミットパスです。そうでないときは、影響するレンジの間で、ノンロッキングな分散コミットプロトコルが使われます。

CockroachDB は、snapshot isolation (SI) と serializable snapshot isolation (SSI) セマンティクスを提供します。それは、externally consistent なロックフリーのリードとライトを提供します。どちらも、歴史的スナップショットタイムスタンプから、そして現在の壁時計の時刻からです。SI はロックフリーのリードとライトを提供しますが、ライトスキューが起きることがあります。SSI はライトスキューを除きますが、競合の多いシステムで性能問題を起こします。SSI が、デフォルトのアイソレーションです。クライアントは注意して、正しさと性能をトレードオフしなければいけません。CockroachDB は限定された形の linearalizability を実装します。それは、任意の観測者あるいは観測者の連鎖にオーダリングを提供します。

Spanner ディレクトリと同様に、CockroachDB はデータの任意のゾーンの構成が可能です。これは、複製ファクター、ストレージデバイスタイプ、そして/あるいは、データセンタの場所を選んで、性能と/あるいは、可用性を最適化することを可能とします。Spanner とは違って、ゾーンはモノリシックであり、エンティティグループのレベルにおいて、細粒度のデータの移動を許しません。

Comparison with Other Databases

CockroachDB の鍵となる機能が、他のデータベースとどう違うかは、私達の文書サイトにある、CockroachDB の比較ページをご覧ください。

See Also

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1