数据库管理与可视化工具完整调研报告 (2025版)
📋 快速导航
🖥️ GUI数据库管理工具
1. TablePlus ⭐⭐⭐⭐⭐
- 官网: https://tableplus.com/
- 平台: macOS, Windows, Linux, iOS
- 定价: 免费版 + $89一次性付费
核心特点
- 现代化UI: 原生界面,速度快
- 多数据库支持: MySQL, PostgreSQL, SQLite, Redis, MongoDB, Cassandra等
- 智能功能:
- 自动补全
- 语法高亮
- 多标签页
- 快速过滤
- 内联编辑
支持的数据库
关系型:
- MySQL/MariaDB
- PostgreSQL
- SQLite
- SQL Server
- Oracle
- Redshift
NoSQL:
- MongoDB
- Redis
- Cassandra
- CockroachDB
- Elasticsearch
云数据库:
- Amazon RDS
- Google Cloud SQL
- Azure Database
实用功能
快捷键驱动:
⌘T 新建标签
⌘L 定位到搜索框
⌘E 执行SQL
⌘⇧E 执行选中SQL
⌘K 清空查询
⌘R 刷新
⌘F 表内搜索
智能过滤器:
-- 快速过滤语法
name = John -- 精确匹配
age \> 25 -- 数值比较
email ~ @gmail -- 模糊匹配
created \>= 2024 -- 日期比较
status != active -- 不等于
代码生成:
- 生成Model类 (Ruby, PHP, Go)
- 生成INSERT语句
- 导出为CSV/JSON/SQL
连接管理:
# 支持SSH隧道
SSH Host: production-server.com
SSH User: deploy
SSH Key: ~/.ssh/id_rsa
# 数据库连接
Host: localhost (通过SSH)
Database: production_db
优势
✅ UI/UX一流,颜值高 ✅ 性能优秀,响应快 ✅ 多数据库统一体验 ✅ 内联编辑方便 ✅ 一次付费永久使用
劣势
❌ 免费版有连接数限制 ❌ 高级功能需付费 ❌ 不支持数据建模
适用场景
- 日常数据库查询和管理
- 多数据库环境切换
- Mac/iOS开发者首选
- 需要轻量快速的工具
2. DBeaver ⭐⭐⭐⭐⭐
- 官网: https://dbeaver.io/
- GitHub: https://github.com/dbeaver/dbeaver (⭐39k+)
- 平台: Windows, macOS, Linux
- 定价: 社区版免费,企业版$10/月
核心特点
- 开源免费: 社区版功能强大
- 支持最全: 80+ 数据库
- 功能最丰富:
- SQL编辑器
- ER图生成
- 数据传输
- Mock数据生成
- 数据对比
独特功能
ER图自动生成:
右键数据库 → Generate Diagram → 选择表 → 自动生成ER图
支持导出为PNG/SVG/PDF
数据传输:
源数据库 → 选择表 → Export Data
目标: 另一个数据库/CSV/JSON/XML
支持数据转换和映射
Mock数据生成:
-- 右键表 → Generate SQL → Insert
配置:
- 行数: 10000
- name: 随机姓名
- email: 随机邮箱
- created_at: 日期范围
自动生成真实Mock数据
SQL格式化:
-- 选中SQL → 右键 → Format
支持多种格式化风格
支持自定义格式化规则
智能补全:
-- 输入 sel → 自动提示 SELECT
-- 输入表名 → 自动提示字段
-- 支持别名识别
-- 支持JOIN提示
高级功能(企业版)
- NoSQL支持: MongoDB, Cassandra, Redis
- 云数据库: AWS, Azure, Google Cloud
- 数据对比: 结构和数据差异对比
- 团队协作: 共享连接和脚本
- Office集成: 导出到Excel保持格式
插件生态
常用插件:
- SQL Assistant: AI辅助SQL编写
- Git Integration: SQL脚本版本控制
- Office Integration: Excel导入导出增强
- ERD Designer: ER图设计器
配置示例
连接池配置:
Database → Connection → Connection settings
Max connections: 10
Connection timeout: 30s
Keep-alive interval: 60s
SQL模板:
-- Window → Preferences → SQL Editor → Templates
-- 新建模板: qry
SELECT ${column}
FROM ${table}
WHERE ${condition}
ORDER BY ${column} ${direction}
LIMIT ${limit};
优势
✅ 完全免费(社区版) ✅ 功能最全面 ✅ 支持数据库最多 ✅ ER图和数据建模 ✅ 跨平台一致体验 ✅ 开源可扩展
劣势
❌ 基于Eclipse,启动较慢 ❌ 内存占用较大 ❌ UI不如TablePlus现代
适用场景
- 需要免费强大工具
- 多种数据库混合环境
- 需要ER图和建模
- 数据迁移和对比
- 企业级使用
3. DataGrip ⭐⭐⭐⭐⭐
- 官网: https://www.jetbrains.com/datagrip/
- 开发商: JetBrains
- 平台: Windows, macOS, Linux
- 定价: $99/年 (首年), 学生免费
核心特点
- JetBrains品质: 与IntelliJ同样体验
- 智能SQL编辑:
- 上下文感知补全
- 重构重命名
- 代码分析
- 导航跳转
独特功能
智能补全:
-- 自动识别上下文
SELECT u.| -- 自动提示users表的字段
FROM users u
JOIN orders o ON o.user_id = u.| -- 同样识别
-- 支持子查询补全
-- 支持CTE补全
-- 支持函数签名提示
重构功能:
-- 重命名字段(Shift+F6)
-- 自动更新所有引用
-- 提取子查询
SELECT * FROM (复杂查询)
→ 提取为View或CTE
-- 内联变量
-- 提取变量
本地历史:
每次查询都自动保存
Tools → Local History
查看所有执行过的SQL
回滚到任意版本
数据库对比:
工具 → 比较
- 比较两个数据库结构
- 生成迁移SQL
- 同步结构差异
版本控制集成:
与Git深度集成
- SQL文件版本控制
- Diff和Merge
- Blame和History
- 分支切换
快捷键(同IntelliJ)
⌘B 跳转到定义
⌘F12 文件结构
⌘⇧F 全局搜索
⌘E 最近文件
⌥↑/↓ 扩大/缩小选择
⌘⇧V 粘贴板历史
F2 下一个错误
⌥Enter 快速修复
代码检查
-- 实时检查:
- 未使用的表
- 重复的条件
- SQL注入风险
- 性能问题
- 命名规范
-- 支持自定义检查规则
优势
✅ IntelliJ级别体验 ✅ 智能重构和导航 ✅ 深度Git集成 ✅ 本地历史记录 ✅ 强大代码检查 ✅ 学生免费
劣势
❌ 价格较贵 ❌ 资源占用大 ❌ 学习曲线陡
适用场景
- JetBrains全家桶用户
- 需要重构和代码质量
- 复杂SQL开发
- 团队协作开发
- 有预算的团队
4. Sequel Ace ⭐⭐⭐⭐
- 官网: https://sequel-ace.com/
- GitHub: https://github.com/Sequel-Ace/Sequel-Ace (⭐6.5k+)
- 平台: macOS only
- 定价: 完全免费
核心特点
- Sequel Pro继任者: 开源免费
- MySQL/MariaDB专用: 专精做好一件事
- 原生Mac应用: 性能优秀
优势
✅ 完全免费开源 ✅ macOS原生体验 ✅ 轻量快速 ✅ MySQL最佳选择
劣势
❌ 仅支持MySQL/MariaDB ❌ 仅macOS平台 ❌ 功能相对简单
适用场景
- macOS + MySQL环境
- 需要免费轻量工具
- 不需要多数据库支持
5. Beekeeper Studio ⭐⭐⭐⭐
- 官网: https://www.beekeeperstudio.io/
- GitHub: https://github.com/beekeeper-studio/beekeeper-studio (⭐16k+)
- 平台: Windows, macOS, Linux
- 定价: 开源免费 + Ultimate版 $99/年
核心特点
- 开源现代: Electron构建
- 简洁易用: 专注核心功能
- 隐私优先: 无遥测无追踪
优势
✅ 开源免费 ✅ 界面现代简洁 ✅ 跨平台 ✅ 隐私友好 ✅ 快速启动
劣势
❌ 功能相对基础 ❌ Electron性能开销
适用场景
- 需要简单快速工具
- 注重隐私
- 开源爱好者
💻 终端数据库工具
1. mycli ⭐⭐⭐⭐⭐
- GitHub: https://github.com/dbcli/mycli (⭐11k+)
- 官网: https://www.mycli.net/
核心特点
- MySQL/MariaDB终端客户端
- 自动补全: 表名、字段、SQL关键字
- 语法高亮: 彩色SQL
- 智能提示: 上下文感知
安装使用
# 安装
pip install mycli
# 或
brew install mycli
# 连接
mycli -h localhost -u root -p password dbname
# 使用配置文件
mycli --myclirc ~/.myclirc
配置文件(~/.myclirc)
[main]
# 启用自动补全
auto_vertical_output = True
# 语法高亮风格
syntax_style = monokai
# 显示行号
line_numbers = True
# 多行模式
multi_line = True
# 历史记录
history_file = ~/.mycli-history
[colors]
Token.Menu.Completions.Completion.Current = bg:#00aaaa #000000
Token.Output.Header = bold #00ff00
特色功能
智能补全:
mysql\> SELECT * FROM u[TAB]
users user_logs user_sessions
mysql\> SELECT id, na[TAB]
name name_first name_last
mysql\> SELECT * FROM users WHERE st[TAB]
status state street
多行编辑:
mysql\> SELECT *
-\> FROM users
-\> WHERE id = 1\G -- \G 竖向显示
Favorite查询:
-- 保存常用查询
\fs show_users SELECT * FROM users LIMIT 10
-- 执行
\f show_users
自动垂直输出:
-- 当结果列太多时自动切换为垂直显示
-- 类似于 \G
优势
✅ 自动补全准确 ✅ 语法高亮美观 ✅ 配置灵活 ✅ 比mysql命令好用100倍
劣势
❌ 仅支持MySQL/MariaDB ❌ 需要Python环境
2. pgcli ⭐⭐⭐⭐⭐
- GitHub: https://github.com/dbcli/pgcli (⭐12k+)
- 官网: https://www.pgcli.com/
核心特点
- PostgreSQL终端客户端
- 功能同mycli: 自动补全、语法高亮
- PostgreSQL特性支持: Schema、Function等
安装使用
pip install pgcli
# 或
brew install pgcli
# 连接
pgcli postgresql://user:password@localhost:5432/dbname
# 简化连接
pgcli -h localhost -U postgres dbname
PostgreSQL特色
Schema感知补全:
postgres\> SELECT * FROM public.[TAB]
users orders products
postgres\> SELECT * FROM auth.[TAB]
users sessions tokens
函数签名提示:
postgres\> SELECT date_trunc([TAB]
date_trunc(text, timestamp)
date_trunc(text, interval)
配置文件(~/.config/pgcli/config):
[main]
multi_line = True
syntax_style = native
key_bindings = vi # vim模式
# 启用pager
enable_pager = True
pager = less -SRXF
# 时间格式
date_format = %Y-%m-%d
time_format = %H:%M:%S
优势
✅ PostgreSQL最佳终端工具 ✅ Schema感知智能 ✅ 支持psql所有功能
3. litecli ⭐⭐⭐⭐
- GitHub: https://github.com/dbcli/litecli (⭐2k+)
SQLite终端客户端,功能同mycli/pgcli。
pip install litecli
litecli database.db
4. usql ⭐⭐⭐⭐⭐
- GitHub: https://github.com/xo/usql (⭐9k+)
核心特点
- 通用SQL CLI: 一个工具连接所有数据库
- 类似psql: 统一的命令和体验
- 20+数据库支持
安装使用
brew install usql
# 连接不同数据库
usql postgres://user@localhost/dbname
usql mysql://user@localhost/dbname
usql sqlite:///path/to/db.sqlite
usql mongodb://localhost/dbname
支持的数据库
PostgreSQL, MySQL, SQLite, MSSQL, Oracle,
Cassandra, ClickHouse, CockroachDB, Firebird,
Ignite, MongoDB, Presto, SAP HANA, Snowflake,
Vertica, VoltDB, BigQuery, Spanner等
统一命令
-- 所有数据库统一使用psql风格命令
\d 列出表
\dt 列出表
\l 列出数据库
\c dbname 切换数据库
\q 退出
\? 帮助
优势
✅ 一个工具管理所有数据库 ✅ 统一的命令体验 ✅ 切换数据库无需记忆新命令
劣势
❌ 不如专用工具(mycli/pgcli)智能 ❌ 自动补全相对弱
🔄 数据库迁移工具
1. Flyway ⭐⭐⭐⭐⭐
- 官网: https://flywaydb.org/
- GitHub: https://github.com/flyway/flyway (⭐8k+)
- 定价: 社区版免费,企业版收费
核心特点
- 版本化迁移: SQL文件版本管理
- 简单可靠: 基于SQL脚本
- 企业级: 被Netflix、Airbnb等使用
基础使用
目录结构:
project/
├── db/
│ └── migration/
│ ├── V1__Create_users_table.sql
│ ├── V2__Add_email_to_users.sql
│ ├── V3__Create_orders_table.sql
│ └── R__View_user_orders.sql # Repeatable
迁移脚本命名规则:
V{version}__{description}.sql
V1__Initial_setup.sql
V1.1__Add_index.sql
V2__Add_table.sql
R__{description}.sql # 可重复执行
R__Create_views.sql
示例迁移:
-- V1__Create_users_table.sql
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);
-- V2__Add_email_verified.sql
ALTER TABLE users ADD COLUMN email_verified BOOLEAN DEFAULT FALSE;
UPDATE users SET email_verified = FALSE;
配置文件(flyway.conf)
flyway.url=jdbc:postgresql://localhost:5432/mydb
flyway.user=dbuser
flyway.password=secret
flyway.locations=filesystem:./db/migration
flyway.baseline-on-migrate=true
flyway.validate-on-migrate=true
CLI使用
# 安装
brew install flyway
# 查看状态
flyway info
# 执行迁移
flyway migrate
# 验证
flyway validate
# 清理(危险!)
flyway clean
# 修复
flyway repair
Java集成
// Spring Boot
@Configuration
public class FlywayConfig {
@Bean
public Flyway flyway(DataSource dataSource) {
return Flyway.configure()
.dataSource(dataSource)
.locations("classpath:db/migration")
.baselineOnMigrate(true)
.load();
}
}
// application.yml
spring:
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: true
最佳实践
-- ✅ 好的迁移
-- 1. 向后兼容
ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 可选字段
-- 2. 先加后删
-- Step 1: 添加新字段
ALTER TABLE users ADD COLUMN full_name VARCHAR(100);
-- Step 2: 迁移数据
UPDATE users SET full_name = first_name || ' ' || last_name;
-- Step 3: (下个版本) 删除旧字段
-- 3. 使用事务
BEGIN;
-- 多个操作
ALTER TABLE ...;
UPDATE ...;
COMMIT;
-- ❌ 避免
-- 直接删除字段
ALTER TABLE users DROP COLUMN important_field; -- 危险!
-- 修改现有数据的类型
ALTER TABLE users ALTER COLUMN age TYPE VARCHAR; -- 可能失败
优势
✅ 简单易用,基于SQL ✅ 版本控制清晰 ✅ 社区活跃 ✅ 企业级稳定性 ✅ CI/CD集成友好
劣势
❌ 回滚需要手写 ❌ 高级功能需付费
2. Liquibase ⭐⭐⭐⭐⭐
- 官网: https://www.liquibase.org/
- GitHub: https://github.com/liquibase/liquibase (⭐4.6k+)
核心特点
- 数据库无关: 多数据库抽象
- 多格式: XML, YAML, JSON, SQL
- 回滚支持: 自动生成回滚SQL
Changelog格式
XML格式:
\<?xml version="1.0" encoding="UTF-8"?\>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd"\>
\<changeSet id="1" author="alice"\>
\<createTable tableName="users"\>
\<column name="id" type="BIGINT" autoIncrement="true"\>
\<constraints primaryKey="true"/\>
</column\>
\<column name="username" type="VARCHAR(50)"\>
\<constraints nullable="false" unique="true"/\>
</column\>
\<column name="email" type="VARCHAR(100)"\>
\<constraints nullable="false"/\>
</column\>
</createTable\>
</changeSet\>
\<changeSet id="2" author="bob"\>
\<addColumn tableName="users"\>
\<column name="created_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP"/\>
</addColumn\>
</changeSet\>
\<changeSet id="3" author="alice"\>
\<createIndex tableName="users" indexName="idx_email"\>
\<column name="email"/\>
</createIndex\>
</changeSet\>
</databaseChangeLog\>
YAML格式(推荐):
databaseChangeLog:
- changeSet:
id: 1
author: alice
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: BIGINT
autoIncrement: true
constraints:
primaryKey: true
- column:
name: username
type: VARCHAR(50)
constraints:
nullable: false
unique: true
- column:
name: email
type: VARCHAR(100)
constraints:
nullable: false
- changeSet:
id: 2
author: bob
changes:
- addColumn:
tableName: users
columns:
- column:
name: phone
type: VARCHAR(20)
- changeSet:
id: 3
author: alice
changes:
- createIndex:
tableName: users
indexName: idx_email
columns:
- column:
name: email
rollback:
- dropIndex:
tableName: users
indexName: idx_email
SQL格式:
--liquibase formatted sql
--changeset alice:1
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) NOT NULL
);
--changeset bob:2
ALTER TABLE users ADD COLUMN created_at TIMESTAMP DEFAULT NOW();
--rollback ALTER TABLE users DROP COLUMN created_at;
CLI使用
# 安装
brew install liquibase
# 更新数据库
liquibase update
# 回滚最近1个变更
liquibase rollbackCount 1
# 回滚到特定标签
liquibase rollback version-1.0
# 生成SQL(不执行)
liquibase updateSQL
# 生成回滚SQL
liquibase rollbackSQL
# 查看状态
liquibase status
# Diff两个数据库
liquibase diff \
--referenceUrl=jdbc:mysql://localhost/db1 \
--url=jdbc:mysql://localhost/db2
配置文件(liquibase.properties)
changeLogFile=db/changelog/master.xml
url=jdbc:postgresql://localhost:5432/mydb
username=dbuser
password=secret
driver=org.postgresql.Driver
classpath=/path/to/postgresql.jar
Spring Boot集成
# application.yml
spring:
liquibase:
enabled: true
change-log: classpath:db/changelog/master.xml
drop-first: false
contexts: dev,test
优势
✅ 数据库无关抽象 ✅ 自动回滚支持 ✅ 多格式选择 ✅ Diff和生成Changelog ✅ 条件执行(context/labels)
劣势
❌ XML配置繁琐 ❌ 学习曲线陡 ❌ 不如Flyway简单
3. Atlas ⭐⭐⭐⭐⭐
- 官网: https://atlasgo.io/
- GitHub: https://github.com/ariga/atlas (⭐5.5k+)
核心特点
- 现代化: 2021年新工具
- Schema as Code: HCL语法
- 自动迁移生成: 对比schema差异
Schema定义(HCL)
# schema.hcl
table "users" {
schema = schema.public
column "id" {
type = bigserial
}
column "username" {
type = varchar(50)
null = false
}
column "email" {
type = varchar(100)
null = false
}
primary_key {
columns = [column.id]
}
index "idx_email" {
columns = [column.email]
}
}
table "posts" {
schema = schema.public
column "id" {
type = bigserial
}
column "user_id" {
type = bigint
}
column "title" {
type = varchar(200)
}
foreign_key "fk_user" {
columns = [column.user_id]
ref_columns = [table.users.column.id]
on_delete = CASCADE
}
}
使用流程
# 安装
brew install ariga/tap/atlas
# 检查schema差异
atlas schema diff \
--from "postgres://localhost/db?sslmode=disable" \
--to "file://schema.hcl"
# 应用schema
atlas schema apply \
--url "postgres://localhost/db?sslmode=disable" \
--to "file://schema.hcl"
# 生成迁移
atlas migrate diff create_users \
--dir "file://migrations" \
--to "file://schema.hcl" \
--dev-url "docker://postgres/15"
# 执行迁移
atlas migrate apply \
--url "postgres://localhost/db" \
--dir "file://migrations"
优势
✅ 现代化工具 ✅ Schema as Code ✅ 自动生成迁移 ✅ 可视化diff
劣势
❌ 相对较新 ❌ 社区较小
🔀 数据同步与ETL工具
1. Airbyte ⭐⭐⭐⭐⭐
- 官网: https://airbyte.com/
- GitHub: https://github.com/airbytehq/airbyte (⭐15k+)
- 定价: 开源免费 + 云版
核心特点
- 开源ETL: 数据集成平台
- 350+ Connectors: 数据源和目标
- 低代码: Web UI配置
Connectors示例
数据源:
- 数据库: PostgreSQL, MySQL, MongoDB, Redis
- SaaS: Salesforce, HubSpot, Stripe, Shopify
- 文件: S3, GCS, SFTP, Local
- API: REST, GraphQL
目标:
- 数据仓库: Snowflake, BigQuery, Redshift
- 数据库: PostgreSQL, MySQL
- 数据湖: S3, GCS
- BI: Tableau, Looker
使用示例
Docker部署:
git clone https://github.com/airbytehq/airbyte.git
cd airbyte
./run-ab-platform.sh
# 访问 http://localhost:8000
配置同步:
1. 添加Source (PostgreSQL)
Host: localhost
Port: 5432
Database: source_db
2. 添加Destination (BigQuery)
Project ID: my-project
Dataset: my_dataset
3. 创建Connection
- 选择要同步的表
- 配置同步频率 (每小时/每天)
- 选择同步模式:
* Full Refresh: 全量
* Incremental: 增量
* CDC: 变更捕获
4. 运行同步
同步模式
Full Refresh - Overwrite:
清空目标表,完全替换
Full Refresh - Append:
保留目标数据,追加新数据
Incremental - Append:
只同步新增数据
Incremental - Deduped History:
增量同步 + 去重
优势
✅ 开源免费 ✅ Connector最多 ✅ Web UI易用 ✅ 增量同步高效
劣势
❌ 部署复杂 ❌ 资源占用大
2. DataX ⭐⭐⭐⭐
- GitHub: https://github.com/alibaba/DataX (⭐15k+)
- 开发: 阿里巴巴
核心特点
- 离线数据同步: 批量ETL
- 异构数据源: 20+支持
- 高性能: 单机3GB/s+
支持数据源
Reader:
MySQL, PostgreSQL, Oracle, SQL Server,
MongoDB, HBase, HDFS, Hive, Elasticsearch,
Redis, FTP, OSS
Writer:
同Reader,支持双向同步
配置示例
MySQL到PostgreSQL:
{
"job": {
"content": [{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "password",
"connection": [{
"jdbcUrl": ["jdbc:mysql://localhost:3306/source_db"],
"querySql": ["SELECT id, name, email FROM users WHERE id \> 1000"]
}]
}
},
"writer": {
"name": "postgresqlwriter",
"parameter": {
"username": "postgres",
"password": "password",
"connection": [{
"jdbcUrl": "jdbc:postgresql://localhost:5432/target_db",
"table": ["users"]
}],
"column": ["id", "name", "email"],
"preSql": ["DELETE FROM users WHERE id \> 1000"],
"postSql": ["CREATE INDEX IF NOT EXISTS idx_name ON users(name)"]
}
}
}],
"setting": {
"speed": {
"channel": 5,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
}
}
}
运行
# 下载DataX
wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
tar -xzf datax.tar.gz
# 执行同步
python datax/bin/datax.py job.json
# 性能测试
python datax/bin/datax.py job.json --jvm="-Xms1G -Xmx1G"
优势
✅ 性能极高 ✅ 阿里生产验证 ✅ 配置灵活 ✅ 完全开源
劣势
❌ 仅批量同步 ❌ 无Web UI ❌ 文档中文
📊 ER图设计工具
1. dbdiagram.io ⭐⭐⭐⭐⭐
- 官网: https://dbdiagram.io/
- 定价: 免费 + Pro $9/月
核心特点
- 纯文本定义: DBML语法
- 实时预览: 边写边看
- 导出SQL: 多数据库DDL
- 团队协作: 分享和评论
DBML语法
// 表定义
Table users {
id bigint [pk, increment]
username varchar(50) [not null, unique]
email varchar(100) [not null]
password_hash varchar(255) [not null]
created_at timestamp [default: `now()`]
updated_at timestamp
Indexes {
email [unique]
(username, email) [name: 'idx_user_identity']
}
}
Table posts {
id bigint [pk, increment]
user_id bigint [not null, ref: \> users.id]
title varchar(200) [not null]
content text
status varchar(20) [default: 'draft']
published_at timestamp
created_at timestamp [default: `now()`]
Indexes {
user_id
status
published_at
}
}
Table comments {
id bigint [pk, increment]
post_id bigint [not null, ref: \> posts.id]
user_id bigint [not null, ref: \> users.id]
content text [not null]
created_at timestamp [default: `now()`]
}
Table post_tags {
post_id bigint [ref: \> posts.id]
tag_id bigint [ref: \> tags.id]
Indexes {
(post_id, tag_id) [pk]
}
}
Table tags {
id bigint [pk, increment]
name varchar(50) [not null, unique]
}
// 关系定义
Ref: posts.user_id \> users.id [delete: cascade]
Ref: comments.post_id \> posts.id [delete: cascade]
Ref: comments.user_id \> users.id
导出功能
- Export to SQL:
* PostgreSQL
* MySQL
* SQL Server
* SQLite
- Export to PDF/PNG
- Import from:
* SQL DDL
* Rails Schema
* Django Models
优势
✅ 纯文本,易版本控制 ✅ 快速高效 ✅ 导出多种格式 ✅ 免费够用
劣势
❌ 复杂图形能力有限 ❌ 在线工具,需网络
2. DrawDB ⭐⭐⭐⭐⭐
- GitHub: https://github.com/drawdb-io/drawdb (⭐18k+)
- 官网: https://drawdb.vercel.app/
核心特点
- 完全免费开源
- 离线使用: PWA应用
- 可视化拖拽: 图形化设计
- 导出SQL: 多数据库
优势
✅ 完全免费开源 ✅ 可离线使用 ✅ 界面现代美观 ✅ 快速上手
3. DBeaver ER图
DBeaver内置ER图生成,之前已介绍。
📈 数据库监控工具
1. Prometheus + Grafana ⭐⭐⭐⭐⭐
Exporters
PostgreSQL:
# postgres_exporter
docker run -d \
-p 9187:9187 \
-e DATA_SOURCE_NAME="postgresql://user:password@localhost:5432/postgres?sslmode=disable" \
prometheuscommunity/postgres-exporter
MySQL:
# mysqld_exporter
docker run -d \
-p 9104:9104 \
-e DATA_SOURCE_NAME="user:password@(localhost:3306)/" \
prom/mysqld-exporter
Grafana仪表盘:
- PostgreSQL Dashboard: ID 9628
- MySQL Dashboard: ID 7362
2. PMM (Percona Monitoring) ⭐⭐⭐⭐
MySQL/PostgreSQL监控专家
docker run -d \
-p 443:443 \
--name pmm-server \
percona/pmm-server:2
# 添加MySQL监控
pmm-admin add mysql --username=root --password=secret
🛠️ SQL查询构建工具
1. Prisma Studio ⭐⭐⭐⭐⭐
核心特点
- Prisma配套: ORM可视化
- 图形化CRUD: 无需写SQL
- 关系导航: 点击跳转关联数据
npm install -D prisma
# 启动Studio
npx prisma studio
2. Querybook ⭐⭐⭐⭐
- GitHub: https://github.com/pinterest/querybook (⭐1.8k+)
- 开发: Pinterest
SQL协作平台:
- SQL编辑器
- 查询历史
- 团队共享
- 数据文档
💾 备份与恢复工具
1. pg_dump / pg_restore
# 备份
pg_dump -h localhost -U postgres -Fc dbname \> backup.dump
# 恢复
pg_restore -h localhost -U postgres -d dbname backup.dump
# 备份为SQL
pg_dump -h localhost -U postgres dbname \> backup.sql
2. mysqldump
# 备份
mysqldump -u root -p dbname \> backup.sql
# 备份压缩
mysqldump -u root -p dbname | gzip \> backup.sql.gz
# 恢复
mysql -u root -p dbname < backup.sql
3. Percona XtraBackup ⭐⭐⭐⭐⭐
MySQL热备份工具:
# 全量备份
xtrabackup --backup --target-dir=/backup/full
# 增量备份
xtrabackup --backup --target-dir=/backup/inc1 \
--incremental-basedir=/backup/full
# 恢复
xtrabackup --prepare --target-dir=/backup/full
xtrabackup --copy-back --target-dir=/backup/full
📊 工具对比
GUI工具对比
| 工具 | 价格 | 数据库支持 | 平台 | 特色 |
|---|---|---|---|---|
| TablePlus | $89一次 | 15+ | Mac/Win/Linux | 颜值高,速度快 |
| DBeaver | 免费 | 80+ | 全平台 | 功能最全,开源 |
| DataGrip | $99/年 | 主流全支持 | 全平台 | 智能重构 |
| Sequel Ace | 免费 | MySQL | macOS | 轻量专精 |
| Beekeeper | 免费 | 10+ | 全平台 | 简洁开源 |
终端工具对比
| 工具 | 数据库 | 特色 |
|---|---|---|
| mycli | MySQL | 自动补全,语法高亮 |
| pgcli | PostgreSQL | Schema感知 |
| litecli | SQLite | 轻量快速 |
| usql | 20+ | 统一体验 |
迁移工具对比
| 工具 | 格式 | 回滚 | 特色 |
|---|---|---|---|
| Flyway | SQL | 手动 | 简单可靠 |
| Liquibase | XML/YAML/SQL | 自动 | 数据库无关 |
| Atlas | HCL | 自动 | 现代化,Schema as Code |
🎯 选型建议
根据使用场景
个人开发者
GUI: TablePlus (Mac) / DBeaver (全平台)
终端: mycli / pgcli
迁移: Flyway
ER图: dbdiagram.io
备份: 原生工具
小团队(5-10人)
GUI: TablePlus团队版 / DBeaver
终端: pgcli / usql
迁移: Flyway
同步: Airbyte开源版
ER图: DrawDB
监控: Prometheus + Grafana
中大型团队(10+人)
GUI: DataGrip企业授权
终端: usql统一
迁移: Liquibase
同步: Airbyte云版
ER图: DBeaver + dbdiagram.io
监控: PMM / Prometheus
备份: Percona XtraBackup
查询平台: Querybook
根据数据库
PostgreSQL
GUI: TablePlus / DataGrip
终端: pgcli ⭐
迁移: Flyway / Atlas
监控: postgres_exporter + Grafana
备份: pg_dump / pgBackRest
MySQL
GUI: TablePlus / Sequel Ace
终端: mycli ⭐
迁移: Flyway
监控: PMM ⭐
备份: Percona XtraBackup ⭐
MongoDB
GUI: TablePlus / MongoDB Compass
终端: mongosh + mongocli
迁移: migrate-mongo
备份: mongodump
SQLite
GUI: TablePlus / DB Browser
终端: litecli
备份: 文件拷贝
根据预算
零预算
DBeaver (全能)
mycli/pgcli (终端)
Flyway (迁移)
DrawDB (ER图)
Airbyte开源 (同步)
小预算($100-500/年)
TablePlus ($89一次)
Flyway ($200/年)
+ 开源工具组合
充足预算
DataGrip团队版
Liquibase企业版
Airbyte云版
PMM Enterprise
全套商业工具
📝 最佳实践
1. 数据库版本控制
- 使用Flyway/Liquibase管理Schema
- 迁移脚本纳入Git
- 向后兼容原则
- 分步骤迁移数据
2. 备份策略
- 全量备份(每天)
- 增量备份(每小时)
- 异地备份
- 定期恢复演练
3. 监控指标
- QPS/TPS
- 慢查询
- 连接数
- 缓存命中率
- 磁盘I/O
- 复制延迟
4. 安全
- 最小权限原则
- SSH隧道连接生产
- 敏感数据脱敏
- 审计日志
最后更新: 2025年1月 工具数量: 30+ 重点推荐: TablePlus、DBeaver、pgcli、Flyway、Airbyte、dbdiagram.io