자기 서버에 올리는 오픈소스 DB 클라이언트 LibreDB Studio, 46개 엔진을 직접 띄워서 재봤습니다
안녕하세요. LibreDB Studio를 만드는 팀에서 글을 올립니다. 제품 홍보로 읽히지 않도록, 저희가 직접 잰 숫자와 깨진 부분을 같이 적겠습니다.
LibreDB Studio는 자기 서버에 올려 브라우저로 쓰는 오픈소스 데이터베이스 클라이언트입니다. 라이선스는 MIT이고 유료 버전은 없습니다.
보통 DB 클라이언트는 각자 노트북에 깔립니다. 그러면 노트북마다 DB까지 가는 길이 하나씩 생기고, 결국 DB 포트를 바깥으로 열게 됩니다. 이건 반대로, 도구가 DB와 같은 네트워크 안에 컨테이너로 떠 있고 사람은 브라우저로 붙습니다. 한 번 설치하면 팀 전체가 씁니다. 연결을 읽기 전용으로 표시해 두면 쓰기 구문은 엔진에 닿기 전에 거부됩니다.
0.17.0 기준으로 46개 엔진에 닿습니다.
전용 드라이버 18개: PostgreSQL, MySQL, SQLite, libSQL, DuckDB, Oracle, SQL Server, ClickHouse, Druid, Trino, Cassandra, Elasticsearch, OpenSearch, MongoDB, Couchbase, Redis, Prometheus, Kafka.
같은 드라이버의 프로토콜을 쓰는 28개: MariaDB, TiDB, Vitess, Percona Server, TimescaleDB, Citus, YugabyteDB, CockroachDB, AlloyDB Omni, ParadeDB, OrioleDB, Cloudberry, Materialize, RisingWave, Valkey, KeyDB, DragonflyDB, Garnet, FerretDB, ScyllaDB, Redpanda, VictoriaMetrics, StarRocks, Apache Doris, SingleStore, OceanBase, Databend, QuestDB.
"46개 지원"이라고 쓰기 전에 숫자를 어떻게 냈는지 밝히는 게 맞다고 봅니다. 저장소에 있는 compose 파일로 엔진을 전부 도커에 띄우고, 연결, 객체 트리, 쿼리, 모니터링 화면을 똑같이 통과시켰습니다. 안 되는 것도 그대로 적습니다. 두 가지만 예로 들면, Databend는 객체 트리가 깨집니다. MySQL 드라이버가 prepared statement를 쓰는데 Databend가 "Prepare is not support"를 돌려줍니다. QuestDB는 쿼리가 거부됩니다. 파서가 예약어에 큰따옴표를 요구합니다. 그리고 18개 중 다섯 개(Druid, Elasticsearch, OpenSearch, Prometheus, Kafka)는 설계상 읽기 전용이라 "완전 지원"에 넣지 않습니다. 엔진마다 어느 버전에서 쟀는지 저장소에 문서가 따로 있습니다.
그 외에 자동완성이 있는 쿼리 편집기, 객체 트리, 내보내기, ERD 다이어그램, 연결과 느린 쿼리를 보는 모니터링 화면이 있습니다. 에이전트 모드도 있는데 Ollama로 띄운 로컬 모델을 쓸 수 있어서 스키마가 밖으로 나가지 않습니다.
설치는 한 줄입니다.
docker run -p 3000:3000 ghcr.io/libredb/libredb-studio:0.17.0
코드는 공개되어 있습니다: https://github.com/libredb/libredb-studio
여기 계신 분들 중에 위 엔진을 운영하시는 분이 있으면, 무엇이 모자란지 듣고 싶습니다. 질문은 이 글에서 다 답하겠습니다.

