DB 여섯 가지를 다루는
가벼운 SQL 클라이언트
MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite를 35MB짜리 앱 하나로 씁니다. 화면은 OS에 이미 들어 있는 웹뷰로 그려서, 띄울 JVM도 따로 설치할 Oracle Instant Client도 없습니다.
macOS(Apple Silicon)·Windows용입니다. 아직 코드 서명이 없어서 Windows에서는 “추가 정보 → 실행”을 누르고, macOS에서는 처음 한 번 xattr -dr com.apple.quarantine Tablume.app을 실행해야 합니다.
콘솔 SQL 쓰고 실행하기
탭마다 연결과 세션이 따로라서 한 탭에서 연 트랜잭션이 다른 탭에 섞이지 않습니다. 앱을 다시 켜도 탭과 SQL이 그대로 있고, .sql 파일은 그냥 파일처럼 열고 저장합니다.
⌘/Ctrl + Enter로 커서가 있는 문장을, 또는 스크립트 전체를 실행합니다. 전체 실행은 오류가 난 곳에서 멈춥니다. 스크립트는 DB마다 원래 쓰는 규칙대로 나눕니다.
-- Oracle: PL/SQL 블록은 슬래시까지 CREATE OR REPLACE PROCEDURE touch_order(p_id NUMBER) AS BEGIN UPDATE orders SET updated_at = SYSDATE WHERE id = p_id; END; / -- SQL Server: GO에서 배치가 끝남 -- MySQL: DELIMITER, BEGIN … END 본문 -- PostgreSQL: $$로 감싼 함수 본문은 통째로
자동완성은 지금 스키마의 테이블과 컬럼을 압니다. 오래 걸리는 쿼리는 취소할 수 있고, 서버가 취소를 무시하면 그 탭의 연결을 새로 엽니다.
결과 돌아온 데이터 보기
결과는 500행씩 가져옵니다. 단순 SELECT는 LIMIT/OFFSET(또는 OFFSET … FETCH)으로 나눠 받기 때문에, 보는 동안 커서가 열린 채로 락을 잡고 있지 않습니다. 스크롤하면 다음 페이지가 이어집니다.
- 셀이나 범위를 골라 TSV로, 헤더와 함께, 또는
IN (…)목록으로 복사합니다. - 컬럼 너비·순서·숨김을 바꿀 수 있고, JSON 값은 접고 정렬해 주는 뷰어로 엽니다.
- FK 셀을
⌘-클릭하면 가리키는 행이 열립니다. - CSV, TSV, JSON, INSERT 문으로 내보냅니다.
테이블 거르고 고치기
테이블은 자기 탭으로 열리고, 그리드 위에 WHERE와 ORDER BY 입력칸이 있습니다. 조건을 쓰고 Enter를 누르면 거르기와 정렬은 DB가 합니다.
고친 셀, 추가하거나 지운 행은 적용하기 전까지 화면에 표시만 해 두고, 적용하면 트랜잭션 하나로 실행합니다. UPDATE나 DELETE 중 하나라도 딱 한 행이 아닌 행을 건드리면 전부 롤백합니다. PK가 다 들어 있지 않은 결과는 “읽기 전용”과 그 이유를 보여 줍니다.
구조 탭에서는 컬럼 타입, 기본값, 코멘트, 인덱스를 그 자리에서 바꿉니다. 실행 전에 ALTER 문을 먼저 보여 주고, DDL을 롤백할 수 없는 DB(MySQL, Oracle)라면 그 점도 알려 줍니다.
스키마 트리 찾기
연결, 스키마, 테이블, 컬럼 순서입니다. 키 표시와 코멘트가 이름 옆에 붙고, 행 수와 크기는 DB 통계에서 가져옵니다. 옵션을 켰을 때만 가져옵니다.
스키마가 이백 개 있는 서버라면 실제로 쓰는 몇 개만 골라 둘 수 있습니다. 연결마다 따로 저장되고 HR_* 같은 패턴도 됩니다.
프로시저와 함수는 그대로 다시 실행할 수 있는 소스로 열립니다. DELIMITER, GO, /까지 붙여서요.
연결
SSH 터널은 비밀번호나 키 파일로 연결합니다. 서버 호스트 키는 처음 연결할 때 저장하고, 바뀐 키는 거부합니다. 비밀번호는 설정 파일이 아니라 macOS 키체인이나 Windows 자격 증명 관리자에 들어갑니다.
웹 버전 같은 앱을 서버에서
-tags server로 빌드하거나 Dockerfile로 이미지를 만들어 리버스 프록시 뒤에 두면, 어느 브라우저에서든 열 수 있습니다. DB 연결은 서버가 맺기 때문에 그 서버가 닿는 DB라면 다 쓸 수 있습니다. 사내망 안에만 있는 DB에 붙을 때 편합니다.
로그인은 패스키(Touch ID, Face ID, Windows Hello)로 합니다. 추측하거나 유출될 비밀번호가 없습니다. SQLite 파일과 SSH 키는 지정한 폴더 하나에서만 읽고, SQL로도 그 밖에는 손댈 수 없습니다.
docker build -t tablume .
docker run -d -p 127.0.0.1:8080:8080 -v tablume:/data \
-e TABLUME_URL=https://db.example.com tablume
docker logs tablume # 첫 패스키 등록 링크
한눈에
- 버전
- 0.9.0
- DB
- MySQL, MariaDB, PostgreSQL, Oracle(11g 이상), SQL Server, SQLite
- 데스크톱
- macOS 12 이상(Apple Silicon), Windows 10·11
- 웹
- Docker나 정적 Linux 바이너리를 돌릴 수 있는 서버
- 크기
- 약 35MB, 파일 하나
- 언어
- English, 한국어
- 만든 것
- Go, Wails, Svelte, CodeMirror. 드라이버도 전부 Go
- 라이선스
- MIT. GitHub에서 소스 보기
아직 없는 것
- ERD. 지금 만들고 있습니다.
- 코드 서명. Windows·macOS 빌드 모두 서명이 없어서 처음 실행할 때 경고가 뜹니다.
- Linux 데스크톱 패키지는 없습니다. 웹 버전은 Linux에서 돌아갑니다.
버그를 찾았거나 매일 쓰는 기능이 빠져 있다면 이슈로 알려 주세요.