데이터베이스 검사용 오픈소스 CLI 도구 peepDB
요약
peepDB는 SQL 쿼리 작성 없이도 다양한 데이터베이스(MySQL, PostgreSQL, MongoDB 등)의 테이블을 빠르고 효율적으로 검사할 수 있도록 설계된 오픈 소스 CLI 도구입니다. 이 도구는 사용자 친화적인 명령줄 인터페이스와 다중 DB 지원, 그리고 대용량 데이터셋 처리를 위한 페이지네이션 기능을 제공합니다.
핵심 포인트
- SQL 지식 없이도 DB 테이블을 쉽게 검사 가능
- MySQL, PostgreSQL, MongoDB 등 8개 이상의 DB를 지원하는 CLI 도구
- 명령줄 인터페이스(CLI) 기반으로 개발자에게 최적화됨
- 보안 강화를 위해 환경 변수 사용 권장
peepDB는 SQL 쿼리를 작성할 필요 없이 데이터베이스 테이블을 빠르고 효율적으로 검사해야 하는 개발자 및 데이터베이스 관리자를 위해 설계된 오픈 소스 명령줄 도구(command-line tool)이자 Python 라이브러리입니다. MySQL, PostgreSQL, MariaDB, SQLite, MongoDB, Firebase, MSSQL, OracleDB를 지원합니다. peepDB는 가볍고(lightweight), 안전하며, 사용하기가 매우 쉽습니다.
다중 데이터베이스 지원 (Multi-Database Support): MySQL, PostgreSQL, MariaDB, SQLite, MongoDB, MSSQL, OracleDB, 그리고 Firebase와 함께 작동합니다.빠른 데이터 검사 (Quick Data Inspection): 간단한 명령으로 모든 테이블 또는 특정 테이블을 볼 수 있습니다.사용자 친화적인 CLI (User-Friendly CLI): Click 라이브러리를 기반으로 하는 사용하기 쉬운 명령줄 인터페이스입니다.안전한 로컬 저장소 (Secure Local Storage): 암호화를 통해 로컬 컴퓨터에 데이터베이스 연결 세부 정보를 안전하게 저장합니다.가벼움 (Lightweight): 최소한의 용량을 차지하며 속도를 위해 설계되었습니다.형식화된 출력 (Formatted Output): 데이터를 깨끗하고 형식화된 표 또는 JSON 형식으로 볼 수 있습니다.페이지네이션 (Pagination): 관리 가능한 청크(chunk) 단위로 데이터를 확인하여 대규모 데이터셋을 효율적으로 처리합니다.
다음은 peepDB의 간단한 데모입니다:
Note: 위 이미지는 공식 릴리스(v0.1.3)에서 사용된 명령어를 반영합니다.
peepDB는 PyPI에서 직접 설치할 수 있습니다:
pip install peepdb
peepDB는 더 쉽고 직관적인 사용을 위해 명령어 기반 구조를 사용합니다. 주요 명령어와 예시는 다음과 같습니다:
SQLite의 경우:
peepdb save mydb --db-type sqlite --host /path/to/mydb.sqlite --database mydb
다른 데이터베이스의 경우:
peepdb save <연결_이름> --db-type [mysql/postgres/mariadb/mongodb/mssql/firebase] --host <호스트> --user <사용자> --password <비밀번호> --database <데이터베이스>
암호 처리 시 중요 참고 사항:
비밀번호는 명령줄 인수로 필요합니다. 이는 스크립팅에 편리하지만, 이 방식은 비밀번호가 명령어 기록(command history)이나 화면 또는 프로세스 목록을 볼 수 있는 다른 사용자에게 노출될 수 있으므로 보안상 취약할 수 있다는 점에 유의해야 합니다.
예시:
peepdb save myapp_db --db-type mysql --host localhost --user root --password my_secure_password --database myapp
보안 강화를 위해 비밀번호와 같은 민감한 정보는 환경 변수나 설정 파일을 사용하는 것을 고려해 보세요.
peepdb list
예시 출력:
Saved connections:
- myapp_db (mysql)
- analytics_db (postgres)
모든 테이블 보기:
peepdb view <연결 이름>
특정 테이블 보기:
peepdb view <연결 이름> --table <테이블 이름>
예시:
peepdb view myapp_db --table users
출력:
Table: users
+----+----------+----------------+++
| id | username | email |
...
대용량 데이터셋 처리를 위해 페이지네이션 사용:
peepdb view <연결 이름> --table <테이블 이름> --page <페이지 번호> --page-size <페이지당 행 수>
예시:
peepdb view myapp_db --table users --page 2 --page-size 50
출력을 JSON 형식으로 받기:
peepdb view <연결 이름> --format json
예시:
peepdb view myapp_db --table users --format json
출력:
{
"users": {
"data": [
...
특정 연결 제거:
peepdb remove <연결 이름>
모든 연결 제거:
peepdb remove-all
peepDB는 데이터베이스 연결 상세 정보를 보호하기 위해 여러 보안 조치를 구현했습니다:
로컬 저장소 (Local Storage): 모든 연결 상세 정보는 원격 서버가 아닌 사용자의 로컬 장치에 저장됩니다.암호화 (Encryption): 연결 상세 정보는 암호화 라이브러리를 사용하여 저장되기 전에 암호화됩니다.비밀번호 주의 사항: 비밀번호는 편의를 위해 명령줄 인수로도 허용되지만, 사용자는 공유 환경이나 명령어 기록이 다른 사람에게 접근될 수 있는 상황에서 이 방법을 사용하는 것에 주의해야 합니다.
peepDB에 대한 기여를 환영합니다! 자세한 내용은 [Contributing Guide]를 참조해 주세요.
GNU General Public License Version 3 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 확인하세요.
더 상세한 문서는 GitHub Pages에서 방문할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기