Tablume

v0.9.0 · macOS · Windows · 웹 · MIT

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을 실행해야 합니다.

MariaDB 연결을 연 Tablume 화면. 왼쪽은 스키마 트리, 오른쪽은 WHERE와 ORDER BY로 거른 테이블 탭.

콘솔 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가 합니다.

테이블 행 위의 WHERE, ORDER BY 입력칸

고친 셀, 추가하거나 지운 행은 적용하기 전까지 화면에 표시만 해 두고, 적용하면 트랜잭션 하나로 실행합니다. UPDATE나 DELETE 중 하나라도 딱 한 행이 아닌 행을 건드리면 전부 롤백합니다. PK가 다 들어 있지 않은 결과는 “읽기 전용”과 그 이유를 보여 줍니다.

구조 탭에서는 컬럼 타입, 기본값, 코멘트, 인덱스를 그 자리에서 바꿉니다. 실행 전에 ALTER 문을 먼저 보여 주고, DDL을 롤백할 수 없는 DB(MySQL, Oracle)라면 그 점도 알려 줍니다.

스키마 트리 찾기

연결, 스키마, 테이블, 컬럼 순서입니다. 키 표시와 코멘트가 이름 옆에 붙고, 행 수와 크기는 DB 통계에서 가져옵니다. 옵션을 켰을 때만 가져옵니다.

스키마가 이백 개 있는 서버라면 실제로 쓰는 몇 개만 골라 둘 수 있습니다. 연결마다 따로 저장되고 HR_* 같은 패턴도 됩니다.

프로시저와 함수는 그대로 다시 실행할 수 있는 소스로 열립니다. DELIMITER, GO, /까지 붙여서요.

연결

SSH 터널은 비밀번호나 키 파일로 연결합니다. 서버 호스트 키는 처음 연결할 때 저장하고, 바뀐 키는 거부합니다. 비밀번호는 설정 파일이 아니라 macOS 키체인이나 Windows 자격 증명 관리자에 들어갑니다.

스키마 트리. MariaDB 연결을 orders 테이블의 컬럼까지 펼쳤고, 아래에 PostgreSQL, Oracle, SQL Server, SQLite 연결이 있음

웹 버전 같은 앱을 서버에서

-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에서 돌아갑니다.

버그를 찾았거나 매일 쓰는 기능이 빠져 있다면 이슈로 알려 주세요.