はじめに
12 日のアドベントカレンダーで NewSQL について触れました。
13 日には NewSQL データベースの一つで MySQL 互換である TiDB をローカル構築してみましたが、今度は同じ NewSQL データベースの一つであり PostgreSQL 互換である CockroachDB も実際にローカルで構築して触ってみたいと思います。
環境
- MacOS
- fish Shell
CockroachDB とは
G が苦手な私はこの名前に少しゾッとしてしまいますが、G の生態の通りしぶとく中々ダウンしないデータベースであるという意味だそうです。
その名に恥じない強い耐障害性が特徴のデータベースとなっています。
インストール
Homebrew を使ってインストールします。
brew install cockroachdb/tap/cockroach
シングルノードクラスタの起動
ローカル開発用にシングルノードで起動します。
cockroach start-single-node --insecure --store=node1 --listen-addr=localhost:26257 --http-addr=localhost:8080 --background
それぞれのオプションの意味は以下になります。
| オプション | 説明 |
|---|---|
--insecure |
認証なしで起動(開発用) |
--store=node1 |
データ保存ディレクトリ |
--listen-addr |
SQL クライアント用ポート(26257) |
--http-addr |
Web UI 用ポート(8080) |
今回は一旦手元で構築するだけなので insecure オプションを使用していますが、本番などで使う場合には気を付けて設定すると良さそうです。
SQL シェルに接続
cockroach sql --insecure --host=localhost:26257
接続すると以下のようなウェルカムメッセージが表示されます。
# Welcome to the CockroachDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
# Server version: CockroachDB CCL v25.4.1
基本的な SQL 操作
では簡単に操作を行なってみます。
データベースの作成
CREATE DATABASE mydb;
データベースの使用
USE mydb;
テーブルの作成
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name STRING,
created_at TIMESTAMP DEFAULT now()
);
データの挿入
INSERT INTO users (name) VALUES ('test');
データの取得
SELECT * FROM users;
結果:
id | name | created_at
---------------------------------------+------+-----------------------------
7aa879ea-9edb-46b2-9e66-c9f83f5fcb75 | test | 2025-12-13 12:30:24.033981
(1 row)
PostgreSQL 互換なので、見慣れた SQL 構文がそのまま使えます。
Web UI の確認
ブラウザで http://localhost:8080 にアクセスすると、クラスタの状態を可視化した管理画面を確認できます。

