[ 기타 ]/오픈소스 라이브러리

[SchemaSpy] DB 스키마 분석, 시각화 Tool 사용 방법

2024. 7. 2. 16:38
목차
  1. SchemaSpy 
  2. 결과물 examples
  3. 실 사용 방법
  4. 1. 필요 소프트웨어 설치
  5. 2. 설치 확인
  6. 3. SchemaSpy 실행
  7. 4. 최종 명령어
  8. 5. 결과물
  9. 트러블 슈팅
  10. * postgresql database_type
  11. * 한글 깨짐 문제 해결

SchemaSpy 


📁SchemaSpy Github > https://github.com/schemaspy/schemaspy

 

SchemaSpy는 오픈소스 데이터베이스 메타데이터 분석 Tool이다. 

DB접속 정보만 입력하면 간편하게 HTML 기반 보고서를 생성해 준다.

생성된 HTML는 아래와 같은 기능을 갖고 있다.

  • ERD, 테이블 명세, Relation 조회
  • 메타 데이터를 분석 - constraints, row 수 조회
  • 테이블 명세를 excel, pdf, csv 형식의 파일로 다운
  • 컬럼 또는 테이블을 클릭하여 링크를 타고 연관된 테이블로 이동 가능

처음 보는 DB에 붙었을 때, 연관 관계를 파악하고, DB 명세를 작성하는 등 여러 방면에서 유용하게 사용할 수 있을 것 같다.

결과물 examples

결과물 examples 캡쳐본

 

아래는 SchemaSpy에서 제공하는 결과물 example이다.

💡example > http://schemaspy.org/sample/index.html

 

실 사용 방법


WSL(Windows Subsystem for Linux) Ubuntu를 이용했습니다. 

1. 필요 소프트웨어 설치

SchemaSpy.jar 파일, Graphviz 설치, Java 8 이상, DB driver 가 필요하다.

 

1) Java 

SchemaSpy는 Java 기반 Tool이므로 Java를 설치해야 한다.

Java version을 확인하고, 없다면 설치하도록 하자.

java --version

 

2) SchemaSpy

SchemaSpy github에서 SchemaSpy.jar 파일을 다운로드할 수 있다.

Schemaspy-6.2.4.jar > https://github.com/schemaspy/schemaspy/releases/tag/v6.2.4

 

3) Graphviz

Graphviz는 DB 관계를 시각화하기 위한 Tool이다. 

Debian, Ubuntu에서는 아래와 같은 명령어로 설치가 가능하다.

sudo apt install graphviz

 

4) DB JDBC Driver 

분석하고자 하는 DB에 맞는 Driver jar 파일을 다운받아야한다.

필자는 PostgreSQL DB를 테스트에 사용했기 때문에, Postgresql JDBC Driver를 다운로드하였다.

이 부분은 구글링 하면 쉽게 다운로드할 수 있다.


2. 설치 확인

위의 과정을 잘 따라서 왔다면, 아래와 같이 여러 파일들이 잘 설치되어 있을 것이다.

 

  • DB Driver : postgresql -42.7.3.jar
  • schemaspy jar 파일 : schemaspy-6.2.4.jar
  • java 버전 확인 명령어 : java --version
  • graphviz 설치 확인 명령어 : dot -v

3. SchemaSpy 실행

기본 명령어

java -jar schemaspy-6.2.4.jar -t <database_type> -dp <path_to_jdbc_driver> -db <database_name> -host <host> -port <port> -u <username> -p <password> -o <output_directory>

 

꺽쇠 '< >' 부분에 DB 접속 정보를 입력하면 된다.

  • -t <database_type> : 사용할 데이터베이스 유형 ex) mysql, oracle, pgsql 등 (postgresql이 아니라 pgsql이다.)
  • -dp <path_to_jdbc_driver> : JDBC 드라이버 경로 ex) /home/hsryu/schemaspytest/postgresql-42.7.3.jar
  • -db <database_name> : 데이터베이스 이름 ex) mydatabase
  • -host <host> : 호스트명 또는 IP 주소 ex) localhost, 192.168.xxx.xxx 
  • -port <port> : 포트 번호 ex) 5432
  • -u <username> : 사용자 이름 ex) myuser
  • -p <password> : 비밀번호 ex) mypassword123
  • -o <output_directory>  : 분석 결과 파일들이 저장될 디렉터리 ex) /home/hsryu/schemaspytest/output

명령어 예시

java -jar schemaspy-6.2.4.jar -t pgsql -dp /home/hsryu/schemaspytest/postgresql-42.7.3.jar -db mydatabase -host 192.168.xxx.xxx -port 5432 -u myuser -p mypassword123 -o /home/hsryu/schemaspytest/output

 

 

위의 명령어를 입력하면 아래와 같이 로고가 뜨며 동작을 시작한다.


4. 최종 명령어

debug, 한글 깨짐 현상 해결을 포함한 최종 명령어이다.

java -Dfile.encoding=UTF-8 -jar schemaspy-6.2.4.jar -t pgsql -dp /home/hsryu/schemaspytest/postgresql-42.7.3.jar -db mydatabase -host 192.168.xxx.xxx -port 5432 -u myuser -p mypassword123 -o /home/hsryu/schemaspytest/output -debug -gvargs '-Gfontname=NanumGothic'

 


5. 결과물

실행이 완료되면 이전에 지정한 output 폴더가 생성되고, 아래 그림과 같은 결과물들이 만들어진다.

 

index.html을 open 하면, 분석 결과를 확인할 수 있다.

 

 

트러블 슈팅


* postgresql database_type

명령어 중, <database_type>에 postgresql을 입력하니 문제가 발생했다.

명령어에 추가로 -debug 옵션을 추가하니 database_type - 'postgresql'에 문제가 있다는 로그를 확인할 수 있었다.

 

SchemaSpy docs를 확인해 보니, postgresql은 pgsql로 단축되어 있는 것을 확인했고, -t pgsql로 바꿔서 실행하니 정상적으로 동작했다.

SchemaSpy docs

💡https://schemaspy.readthedocs.io/en/v6.2.0/index.html

 


* 한글 깨짐 문제 해결

아래와 같이 그림으로 된 테이블에서 한글 컬럼명이 깨지는 문제가 발생했다.

1) jar 파일 실행 시 인코딩 지정

java -Dfile.encoding=UTF-8 -jar schemaspy-6.2.4.jar ...~

문제가 해결되지 않았다.

HTML을 까보니, 해당 부분은 이미지로 되어있어서, graphviz에서 생성하는 부분인 것으로 파악했다.

 

2) graphviz 폰트 옵션 지정

java -Dfile.encoding=UTF-8 -jar schemaspy-6.2.4.jar /* 생략 */ -debug -gvargs '-Gfontname=NanumGothic'

문제가 해결되지 않았다.

 

3) ubuntu에 폰트 설치

sudo apt-get install fonts-nanum

graphviz에서 사용할 폰트는 지정했으나, 해당 폰트를 다운받지 않아서 문제가 됐었다.

폰트를 설치하고 실행하니 정상적으로 동작했다.

 

반응형
저작자표시 (새창열림)

'[ 기타 ] > 오픈소스 라이브러리' 카테고리의 다른 글

[Java / Playground] Rest API 호출 모듈 만들기 / RestTemplate  (0) 2024.12.15
[SonarQube] 오픈소스 정적분석 Tool 소나큐브 사용법  (0) 2024.09.19
[java/Playground] Apache POI 엑셀 파일 다루기  (0) 2024.09.04
[Apache POI] Java 코드로 엑셀(.xlsx) 파일 생성하기 - Java로 Excel 다루기  (0) 2024.07.18
  1. SchemaSpy 
  2. 결과물 examples
  3. 실 사용 방법
  4. 1. 필요 소프트웨어 설치
  5. 2. 설치 확인
  6. 3. SchemaSpy 실행
  7. 4. 최종 명령어
  8. 5. 결과물
  9. 트러블 슈팅
  10. * postgresql database_type
  11. * 한글 깨짐 문제 해결
'[ 기타 ]/오픈소스 라이브러리' 카테고리의 다른 글
  • [Java / Playground] Rest API 호출 모듈 만들기 / RestTemplate
  • [SonarQube] 오픈소스 정적분석 Tool 소나큐브 사용법
  • [java/Playground] Apache POI 엑셀 파일 다루기
  • [Apache POI] Java 코드로 엑셀(.xlsx) 파일 생성하기 - Java로 Excel 다루기
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (231)
    • Java (24)
    • Spring (25)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (48)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (6)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • HTTP
  • vue3
  • 개발자
  • SQL
  • Linux
  • 기술면접
  • Spring
  • Redisson
  • MySQL
  • web
  • 리눅스
  • Database
  • SpringBoot
  • cleancode
  • 클린코드
  • 백준
  • Redis
  • Nuxt3
  • springsecurity
  • 자료구조
  • 트랜잭션
  • 백엔드스쿨
  • Java
  • 백엔드
  • JPA
  • mybatis
  • 제로베이스
  • TechInterview
  • 백엔드기술면접
  • 백엔드공부

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
[SchemaSpy] DB 스키마 분석, 시각화 Tool 사용 방법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.