왜 나는 또 다른 SQL 클라이언트를 만들었는가 (그리고 오픈소스로 만들었다)
Source: Dev.to

문제점
개발자로서 나의 전형적인 워크플로우는 다음과 같습니다:
- 데이터베이스에서 뭔가 확인해야 함
- SQL 클라이언트 열기
- 기다림… 계속 기다림… (플러그인을 로드하고 있나요?)
- 47개의 메뉴 옵션을 뒤져서 쿼리 창 찾기
- 간단한 쿼리 작성
SELECT * FROM users LIMIT 10;
- 툴바, 상태바, 사용하지 않는 패널 아래에 묻힌 결과 보기
매번 그렇습니다.
나는 기업용 데이터베이스 관리 도구가 필요했던 것이 아니라, 다음을 만족하는 것이 필요했습니다:
- 빠르게 열림 – 2초 이내, 20초가 아니라
- 방해되지 않음 – 쿼리 편집기가 바로 전면에
- 다중 데이터베이스 지원 – PostgreSQL, MySQL, SQL Server
- 키보드 단축키 제공 –
Cmd+Enter로 실행,Cmd+K로 탐색 - 보기 좋음 – 새벽 2시에도 눈을 피로하게 하지 않는 다크 모드
기존 옵션들
| 도구 | 빠른가? | 간단한가? | 다중 DB 지원? | 가격 |
|---|---|---|---|---|
| pgAdmin | ❌ | ❌ | ❌ | 무료 |
| DBeaver | ❌ | ❌ | ✅ | 무료 |
| DataGrip | ✅ | ❌ | ✅ | $229/년 |
| TablePlus | ✅ | ✅ | ✅ | $89 |
| Postico | ✅ | ✅ | ❌ | $50 |
패턴:
- 무료 도구 = 느리고 무겁다
- 빠른 도구 = 유료 (때로는 여전히 무겁다)
- 간단한 도구 = 단일 데이터베이스 전용
나는 네 가지를 모두 원했습니다: 빠르고, 간단하고, 다중 데이터베이스를 지원하며, 개인 사용에 한해 무료인 도구.
data‑peek 등장
그래서 직접 만들었습니다. 간단한 철학을 가진 SQL 클라이언트:
기능보다 단순함. 키보드 우선. 빠르게 열고 빠르게 쿼리.
모습
┌─────────────────────────────────────────────────────────────┐
│ [Connection ▾] [Settings] [AI] │
├──────────────┬──────────────────────────────────────────────┤
│ │ │
│ Schemas │ SELECT * FROM users │
│ └─ public │ WHERE created_at > '2024-01-01' │
│ └─ users │ ORDER BY id DESC │
│ └─ posts │ LIMIT 100; │
│ └─ ... │ │
│ │ [Cmd+Enter to execute] │
│ ├──────────────────────────────────────────────│
│ │ id │ name │ email │ created_at │
│ │ ───┼───────┼────────────────┼──────────── │
│ │ 42 │ Alice │ alice@test.com │ 2024-03-15 │
│ │ 41 │ Bob │ bob@test.com │ 2024-03-14 │
│ │ │
└──────────────┴──────────────────────────────────────────────┘
그게 전부입니다. 왼쪽에 스키마 브라우저, 위에 쿼리 편집기, 아래에 결과가 표시됩니다.
핵심 기능
포함된 내용
- 멀티‑탭 쿼리 편집기 (Monaco 사용, VS Code 편집기 엔진)
- PostgreSQL, MySQL, SQL Server 지원
- 스키마 탐색기 – 테이블, 뷰, 컬럼, 저장 프로시저 제공
- 쿼리 히스토리 – 실행 시간 및 행 수 표시
- 저장된 쿼리 – 자주 쓰는 SQL을 저장
- CSV·JSON 데이터 내보내기
- 인라인 편집 – 결과 테이블에서 직접 행 수정 가능
- ERD 시각화 – 테이블 관계 확인
- AI 어시스턴트 – 자연어를 SQL로 변환 (API 키 직접 제공)
- 다크 모드 – 당연히 포함
제외된 내용 (의도적)
- 데이터베이스 관리 도구
- 사용자 관리 UI
- 백업/복구 마법사
- 47개의 툴바 버튼
- 플러그인 시스템
- 시작 스플래시 화면
- 기능 과잉
왜 오픈소스인가?
1. 매일 오픈소스를 사용한다
내 경력은 PostgreSQL, React, TypeScript, Node.js, Linux 등으로 이루어졌습니다. 되돌려 주는 것이 자연스럽습니다.
2. 투명성을 통한 신뢰
데이터베이스 클라이언트는 자격 증명과 데이터를 다룹니다. 오픈소스이면 다음을 할 수 있습니다:
- 코드를 직접 감사
- 자격 증명이 어떻게 저장되는지 확인
- 텔레메트리나 데이터 수집이 없는지 검증
- 불안할 경우 소스에서 직접 빌드
3. 커뮤니티가 더 좋게 만든다
이미 풀 리퀘스트를 통해 내가 몰랐던 버그가 수정되고, 생각지도 못한 기능이 추가되었습니다.
4. 지속 가능한 비즈니스 모델
data‑peek은 개인 사용은 무료입니다. 상업적 사용은 라이선스가 필요해, 다음을 가능하게 합니다:
- 개인 개발자는 영원히 무료로 사용
- 혜택을 보는 기업은 금전적으로 기여
- 지속적인 유지보수와 개선
기술 스택 (미리보기)
- Electron – macOS, Windows, Linux 크로스‑플랫폼 데스크톱
- React 19 – 최신 훅과 concurrent 기능을 활용한 UI
- TypeScript – 엄격 모드, 런타임 오류를 방지
- Zustand – 눈물 없이 상태 관리
- Monaco – VS Code를 구동하는 편집기
- Tailwind CSS 4 – CSS 파일 혼란 없이 스타일링
앞으로의 계획
이번 포스트는 시리즈 첫 번째이며, 앞으로 다음을 다룰 예정입니다:
- 기술 스택 선택 이유와 결정 과정
- 다중 DB 지원을 위한 데이터베이스 어댑터 패턴
- 벤더 락인 없이 AI 기능 추가하기
- 충돌 감지를 포함한 ERD 시각화 구현
- 다양한 방언을 지원하는 SQL 파싱 (생각보다 어려움)
사용해 보기
data‑peek은 지금 바로 사용할 수 있습니다:
- GitHub:
- 다운로드: macOS, Windows, Linux 바이너리 (릴리즈)
- 라이선스: MIT (개인 사용 무료)
시도해 보신다면 피드백을 기다립니다. 이슈를 열거나, 토론을 시작하거나, 유용하다면 레포지토리에 ⭐️를 눌러 주세요.
다음 주제: data‑peek 뒤에 숨은 기술 스택 – 2025년 최신 데스크톱 개발
