TL;DR

  • DragonflyLibreDB Studio를 같은 Docker 네트워크에서 실행하면 별도 Dragonfly 설정이나 코드 변경 없이 Redis 호환 방식으로 연결되어 데이터베이스 관리가 가능함.
  • LibreDB Studio는 브라우저에서 실행되는 MIT 라이선스 오픈소스 데이터베이스 IDE로 쿼리 편집기, 키 브라우저, 모니터링 대시보드를 제공함.
  • LibreDB Studio는 데스크톱 애플리케이션 대신 컨테이너, Helm 차트, npm 패키지로 제공되어 Dragonfly 인스턴스 옆에서 실행되는 구조임.
  • 연결 유형을 Redis로 선택하고 Dragonfly 컨테이너 이름과 포트 6379를 입력하면 키 탐색, 명령 실행, 모니터링이 가능함.
  • Redis 드라이버 기반 연결로 인해 버전, 연결 제한, 사용자, 세션 명령·플래그 정보 일부는 Dragonfly의 INFOCLIENT LIST가 제공하는 범위로 제한됨.

소개

  • LibreDB Studio는 브라우저에서 실행되는 MIT 라이선스 오픈소스 데이터베이스 IDE임.
  • 쿼리 편집기, 키 브라우저, 모니터링 대시보드를 통해 Redis를 포함한 다양한 데이터베이스 엔진을 지원함.
  • 데스크톱 다운로드 대신 컨테이너, Helm 차트, npm 패키지로 제공되어 노트북이 아니라 Dragonfly 인스턴스와 나란히 실행되는 방식임.
  • Dragonfly는 Redis 와이어 프로토콜을 사용하므로 LibreDB Studio는 ioredis 드라이버를 통해 Redis와 동일한 방식으로 연결됨.
  • Dragonfly 전용 설정, 플래그, 코드 변경은 필요하지 않음.

TL;DR

  • Dragonfly와 LibreDB Studio를 같은 Docker 네트워크에서 실행하고, Dragonfly 컨테이너 이름과 포트를 가리키는 Redis 유형 연결을 추가하면 Redis에서와 같은 방식으로 쿼리 편집기, 키 브라우저, 모니터링 대시보드를 사용할 수 있음.
  • 실행 구성은 libredb-studio Docker 네트워크 생성, dragonfly 컨테이너 실행, 포트 3000으로 LibreDB Studio 컨테이너 실행 순서임.

Dragonfly에서 LibreDB Studio 실행

  • 이 구성에서는 Dragonfly와 LibreDB Studio가 모두 컨테이너로 실행되므로 두 컨테이너가 공통으로 사용하는 Docker 네트워크가 필요함.
  • Docker 기본 네트워크에서는 컨테이너가 이름으로 다른 컨테이너에 접근할 수 없음.

1. 네트워크 생성

  • libredb-studio라는 Docker 네트워크를 생성함.

2. Dragonfly 시작

  • dragonfly라는 이름으로 Dragonfly 컨테이너를 libredb-studio 네트워크에 연결해 실행함.
  • 컨테이너 실행 시 --ulimit memlock=-1 설정과 docker.dragonflydb.io/dragonflydb/dragonfly:latest 이미지를 사용함.

3. LibreDB Studio 시작

  • LibreDB Studio 컨테이너를 libredb-studio 네트워크에 연결하고 호스트 포트 3000을 컨테이너 포트 3000에 매핑해 실행함.
  • 사용하는 이미지는 ghcr.io/libredb/libredb-studio:latest임.
  • Helm 차트와 npm 패키지인 npx @libredb/studio도 제공되며, 자세한 내용은 LibreDB Studio 저장소에서 확인 가능함.

4. 연결 생성

  • 브라우저에서 LibreDB Studio를 열고 로그인함.
  • + 버튼을 눌러 새 연결을 추가함.
  • 연결 유형으로 Redis를 선택함.
  • Dragonfly 인스턴스의 호스트에 dragonfly를 입력함. 이는 앞서 지정한 컨테이너 이름임.
  • 포트에 6379를 입력함.
  • Test Connection으로 연결을 확인한 뒤 Establish Connection을 선택함.
  • 연결은 사이드바에 redis 유형으로 표시되며, 이후 브라우저에서 키 탐색, 명령 실행, 모니터링 데이터 확인이 가능함.

수행 가능한 작업

  • 키 탐색: 키 브라우저가 첫 번째 : 앞의 모든 내용을 접두사로 보고 키를 그룹화함. 이에 따라 user:1user:2가 하나의 user:* 항목 아래에 표시되며, Redis에서 사용하는 것과 같은 그룹화 방식임.
  • 명령 실행: 쿼리 편집기에서 일반 Redis 명령인 HGETALL user:1, SCAN 0 MATCH user:* COUNT 50 등을 입력하거나 JSON 명령 객체를 사용할 수 있음.
  • Redis 제공자가 제공하는 것과 동일한 오른쪽 클릭 Generate Command 치트시트도 제공됨.
  • 서버 모니터링: 모니터링 대시보드가 INFO, SLOWLOG GET, CLIENT LIST를 읽어 개요, 성능 지표, 느린 쿼리 로그, 활성 세션 표를 제공함.

제한 사항

  • LibreDB Studio의 Dragonfly 지원은 Dragonfly 전용 드라이버가 아니라 Redis 드라이버를 통해 제공됨.
  • 이에 따라 일부 패널은 전체 정보가 아니라 Dragonfly의 INFOCLIENT LIST가 실제로 게시하는 정보를 표시함.
  • 개요의 버전 필드는 Dragonfly 자체 버전이 아니라 INFOredis_version으로 보고하는 Redis 호환성 수준을 표시함.
  • Dragonfly 자체 버전은 같은 INFO 응답에서 dragonfly_version이라는 별도 필드로 게시됨.
  • 연결 카드에는 숫자 대신 no limit published가 표시됨.
  • Dragonfly의 INFO가 드라이버가 연결 제한을 읽는 데 사용하는 것과 같은 필드 이름으로 값을 게시하지 않기 때문임.
  • 활성 세션 표의 모든 행에서 사용자 열이 default로 표시됨.
  • Dragonfly의 CLIENT LIST가 연결 인증에 사용된 ACL 사용자와 관계없이 세션별 사용자 필드를 게시하지 않기 때문임.
  • 활성 세션 표의 모든 행에서 쿼리 열이 idle, 상태 열이 N으로 표시됨.
  • Dragonfly의 CLIENT LIST가 세션별 명령 또는 플래그 필드도 게시하지 않기 때문임.
  • 이러한 제한은 쿼리 편집기, 키 브라우저, 명령 실행에는 영향을 주지 않음.
  • docker.dragonflydb.io/dragonflydb/dragonfly:latest를 대상으로 한 테스트에서 해당 기능들은 Redis와 동일하게 응답함.

유용한 자료

  • LibreDB Studio 홈페이지 및 GitHub 저장소.
  • 드라이버: ioredis.