OSSデータベースツール比較:DBeaver vs pgAdmin vs Beekeeper Studio
オープンソースラボ編集部 ・ 2026年6月14日
OSSデータベースツール比較:DBeaver vs pgAdmin vs Beekeeper Studio
DataGrip(年$229/ユーザー〜)・TablePlus($89/ライセンス〜)に対して、DBeaver(100+DB対応の多機能OSS)・pgAdmin(PostgreSQL公式GUI)・Beekeeper Studio(モダンUI・SQL特化のOSS)はデータベース管理を無料でセルフホストできます。
OSSデータベースツールを使う理由
- コスト: DataGrip(年$229×10名 = $2,290/年)→ DBeaver Community Editionは完全無料
- 100+DB対応: DBeaver一本でMySQL・PostgreSQL・SQLite・MongoDB・Redis・Oracle・Snowflake・BigQueryを管理
- セキュリティ: 接続情報・クエリ履歴が手元のマシンに保存(SaaS不要)
- 自動化: JDBCドライバー・スクリプト・ER図生成・データエクスポートを自動化
主要ツールの概要
DBeaver
2010年公開、Java製のOSSです。GitHubスター40k+(最大シェア)。PostgreSQL・MySQL・SQLite・MongoDB・Cassandra・Redis・Oracle・Snowflakeなど100+データベースに単一GUIで接続できるため、マルチDBを扱うチームのデファクトスタンダードです。
# DBeaver Community Edition のインストール
# Ubuntu/Debian
sudo add-apt-repository ppa:serge-rider/dbeaver-ce
sudo apt update
sudo apt install dbeaver-ce
# macOS(Homebrew)
brew install --cask dbeaver-community
# Windows(Chocolatey)
choco install dbeaver
# Docker(Headless版 - DBeaver Team Edition Community)
docker run -d -p 8978:8978 --name dbeaver-te -v /var/dbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest
# DBeaver のプロジェクト設定を自動化(Python + psycopg2でのDB接続自動化)
import psycopg2
import json
import os
from contextlib import contextmanager
# マルチDB接続設定を管理
DB_CONFIGS = {
'production': {
'host': os.environ['PROD_DB_HOST'],
'port': 5432,
'dbname': os.environ['PROD_DB_NAME'],
'user': os.environ['PROD_DB_USER'],
'password': os.environ['PROD_DB_PASSWORD'],
'sslmode': 'require',
},
'staging': {
'host': os.environ['STAGING_DB_HOST'],
'port': 5432,
'dbname': 'app_staging',
'user': os.environ['STAGING_DB_USER'],
'password': os.environ['STAGING_DB_PASSWORD'],
},
'analytics': {
'host': os.environ['ANALYTICS_DB_HOST'],
'port': 5432,
'dbname': 'analytics',
'user': os.environ['ANALYTICS_DB_USER'],
'password': os.environ['ANALYTICS_DB_PASSWORD'],
},
}
@contextmanager
def get_db(env: str = 'staging'):
'''接続管理コンテキストマネージャー'''
conn = psycopg2.connect(**DB_CONFIGS[env])
try:
yield conn
conn.commit()
except Exception:
conn.rollback()
raise
finally:
conn.close()
# テーブル統計の自動レポート(DBeaver ERダイアグラムのデータソース)
def get_table_stats(env: str = 'production') -> list:
with get_db(env) as conn:
with conn.cursor() as cur:
cur.execute('''
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) AS size,
n_live_tup AS row_count,
n_dead_tup AS dead_rows,
last_autovacuum,
last_autoanalyze
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC
LIMIT 20
''')
cols = [d[0] for d in cur.description]
return [dict(zip(cols, row)) for row in cur.fetchall()]
# 未使用インデックスを検出(パフォーマンス最適化支援)
def find_unused_indexes(env: str = 'production') -> list:
with get_db(env) as conn:
with conn.cursor() as cur:
cur.execute('''
SELECT
schemaname,
tablename,
indexname,
pg_size_pretty(pg_relation_size(indexrelid)) AS index_size,
idx_scan AS index_scans
FROM pg_stat_user_indexes
WHERE idx_scan = 0
AND indexrelname NOT LIKE 'pg_toast%'
AND indexname NOT LIKE '%_pkey' -- 主キーは除外
ORDER BY pg_relation_size(indexrelid) DESC
''')
cols = [d[0] for d in cur.description]
return [dict(zip(cols, row)) for row in cur.fetchall()]
# 使用例
stats = get_table_stats('production')
for s in stats[:5]:
print(f'{s["tablename"]}: {s["size"]} ({s["row_count"]:,}行)')
unused = find_unused_indexes('production')
for idx in unused:
print(f'未使用インデックス: {idx["indexname"]} ({idx["index_size"]})')
-- DBeaver でよく使うクエリスニペット集(PostgreSQL)
-- 1. 遅いクエリを特定(pg_stat_statements必要)
SELECT
left(query, 80) AS query_preview,
calls,
round(mean_exec_time::numeric, 2) AS avg_ms,
round(total_exec_time::numeric / 1000, 2) AS total_sec,
rows
FROM pg_stat_statements
WHERE calls > 10
ORDER BY mean_exec_time DESC
LIMIT 20;
-- 2. テーブルサイズ一覧(トップ10)
SELECT
table_name,
pg_size_pretty(pg_total_relation_size(table_name::regclass)) AS total_size,
pg_size_pretty(pg_relation_size(table_name::regclass)) AS table_size,
pg_size_pretty(pg_indexes_size(table_name::regclass)) AS index_size
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY pg_total_relation_size(table_name::regclass) DESC
LIMIT 10;
-- 3. テーブルロックを確認
SELECT
pid,
usename,
state,
wait_event_type,
wait_event,
left(query, 60) AS query
FROM pg_stat_activity
WHERE wait_event_type = 'Lock'
ORDER BY pid;
-- 4. バキュームが必要なテーブルを検出
SELECT
relname AS table_name,
n_dead_tup AS dead_tuples,
n_live_tup AS live_tuples,
round(n_dead_tup::numeric / nullif(n_live_tup + n_dead_tup, 0) * 100, 2) AS dead_pct
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY dead_pct DESC;
pgAdmin 4
2003年公開(4系は2016年)、Python/React製のOSSです。GitHubスター4k+(PostgreSQL公式)。PostgreSQL公式の管理ツールで、クエリツール・バックアップ/リストア・ER図・スロークエリ解析・接続プーリング(pgBouncer)管理まで PostgreSQL に特化した完全機能を無料で提供します。
# docker-compose.yml - pgAdmin 4 + PostgreSQL
version: '3.8'
services:
pgadmin:
image: dpage/pgadmin4:8.9
restart: unless-stopped
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
PGADMIN_CONFIG_SERVER_MODE: "True"
PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION: "True"
PGADMIN_CONFIG_LOGIN_BANNER: '"開発環境 pgAdmin - 本番DBへの接続には注意してください"'
# LDAP SSO 設定
PGADMIN_CONFIG_AUTHENTICATION_SOURCES: "['ldap', 'internal']"
PGADMIN_CONFIG_LDAP_SERVER_URI: "'ldap://ldap.yourcompany.com'"
PGADMIN_CONFIG_LDAP_BASE_DN: "'dc=yourcompany,dc=com'"
volumes:
- pgadmin_data:/var/lib/pgadmin
# サーバー接続を事前定義
- ./pgadmin-servers.json:/pgadmin4/servers.json:ro
postgres:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${PG_PASSWORD}
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
pgadmin_data:
pg_data:
{
"Servers": {
"1": {
"Name": "Production DB",
"Group": "Servers",
"Host": "prod-db.yourcompany.com",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "readonly_user",
"SSLMode": "require",
"Comment": "本番環境 - 読み取り専用ユーザーで接続"
},
"2": {
"Name": "Staging DB",
"Group": "Servers",
"Host": "staging-db.yourcompany.com",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "app_user",
"SSLMode": "prefer"
}
}
}
機能比較表
| 比較項目 | DBeaver | pgAdmin 4 | Beekeeper Studio |
|---|---|---|---|
| 対応DB数 | 100+ | PostgreSQL専用 | 主要RDBMS6種 |
| ER図生成 | ✅ | ✅ | ✅ |
| データエクスポート | ✅(多形式) | ✅ | ✅ |
| GUIの使いやすさ | ★★☆ | ★★☆ | ★★★ |
| MongoDB/Redis対応 | ✅ | ❌ | ❌ |
| 無料ライセンス | CE(フル機能) | 完全無料 | CE(完全無料) |
OSSデータベースツールはDevOpsカテゴリ/categories/devopsのObservabilityスタック(Grafana+Prometheus)と組み合わせて、クエリパフォーマンスの可視化・インデックス最適化の自動検出を行います。セキュリティカテゴリ/categories/securityのVaultと連携してDB接続情報をシークレット管理することでDB認証情報の平文保存を排除できます。
FAQ
Q. DBeaver Community版とPro版の違いは何ですか?
A. Community版(無料)とPro版(年$199/ユーザー〜)の主な違いは①ノーSQLデータベース: Community版はMongoDBのベーシック操作のみ、Pro版はフルCRUD・集計クエリ・スキーマ管理②Mockデータ生成: Pro版はリアルな偽データを自動生成してテスト環境を構築③ER図エクスポート: Community版はPNG、Pro版はPDF・SVG・HTML④Salesforce・Googleシート接続: Pro版限定⑤データ変換・マスキング: 本番DBのマスキングデータを開発環境に同期する機能はPro版のみ。スタートアップ・個人開発者にはCommunity版で十分です。Pro版が必要になるのはMongoDB本格利用・Salesforce連携・データマスキングが業務要件になった時です。
Q. pgAdminとDBeaver、PostgreSQL開発にはどちらが向いていますか?
A. PostgreSQL一本に集中するなら pgAdmin、複数DB・チーム開発なら DBeaver が向いています。pgAdminが優れる点: ①PostgreSQL固有の機能(テーブルスペース・pg_hba.conf・レプリケーション状態・VACUUM詳細)をGUIで管理②バックアップ/リストア(pg_dump/pg_restore)の統合③pgBouncerとの統合④Explain詳細(ビジュアルクエリプラン)がPostgreSQL標準に沿っている。DBeaver が優れる点: ①MySQL・SQLite・Oracle・Redshiftなど複数DBを同時管理②チームでのクエリ共有(プロジェクト機能)③VS Code・JetBrains連携④データ比較(2テーブル・2DB間のdiff)⑤ERダイアグラムの自動レイアウト。
Q. DBeaverでER図を自動生成するには?
A. ①DBeaver左サイドバーでデータベース接続 → スキーマを右クリック②「ER Diagram」を選択→スキーマ内全テーブルのER図が自動生成③テーブルを選択して「Show References」でリレーションを表示④PNG/SVGでエクスポート(Pro版はPDF対応)⑤テーブルを手動でドラッグしてレイアウト調整可能。特定テーブルのみER図を生成: 複数テーブルをCtrl+クリックで選択→右クリック→「Create ER Diagram」。PostgreSQLの外部キー制約が定義されていれば自動でリレーションが表示されます。外部キーなしの場合は「Virtual Foreign Keys」でDBeaver内に仮想的なリレーションを定義できます。
Q. Beekeeper Studio はDBeaver・pgAdminと比べてどんな人に向いていますか?
A. **「SQLクエリを書くことだけに集中したい人」「UIがシンプルで起動が速い方がいい人」**にBeekeeper Studioが最適です。Beekeeper Studioの強み: ①Electron製でネイティブアプリ並みの軽快な動作(DBeaverはJVM起動で重い)②テーブルビュー・クエリ結果・接続管理のみのシンプルUI③SQLシンタックスハイライト・オートコンプリート④クエリ結果をCSV・JSON・Excelでワンクリックエクスポート⑤接続情報を暗号化ストレージで管理。限界: MongoDBやNoSQL非対応、ER図生成なし、高度なDB管理(バキューム設定・レプリケーション)は不可。PostgreSQL・MySQL・SQLite・MariaDB・MSSQLを扱うWebデベロッパーのデイリーツールとして人気です。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 100+DB対応・チーム利用・ER図・データ分析 | DBeaver CE |
| PostgreSQL専用・バックアップ・細かい管理 | pgAdmin 4 |
| 軽量・高速・SQLクエリ特化・シンプルUI | Beekeeper Studio CE |