ERP-node/docs/외부_DB_연결_관리_기능_가이드.md

5.9 KiB

외부 DB 연결 관리 기능 가이드

개요

외부 DB 연결 관리 기능은 다양한 외부 데이터베이스와의 연결을 설정하고 관리하는 기능을 제공합니다. 이 기능을 통해 PostgreSQL, MySQL, MariaDB 등 다양한 데이터베이스에 연결하여 데이터를 조회하고 저장할 수 있습니다.

주요 기능

1. 연결 관리

  • 새 연결 생성
  • 기존 연결 수정
  • 연결 삭제
  • 연결 활성화/비활성화
  • 연결 테스트

2. 지원하는 데이터베이스 타입

  • PostgreSQL
  • MySQL
  • MariaDB
  • Oracle
  • SQL Server
  • SQLite

3. 연결 설정 항목

기본 정보

  • 연결명 (필수)
  • DB 타입 (필수)
  • 설명 (선택)

연결 정보

  • 호스트 (필수)
  • 포트 (필수)
  • 데이터베이스명 (필수)
  • 사용자명 (필수)
  • 비밀번호 (필수)

고급 설정

  • 연결 타임아웃 (기본값: 30초)
  • 쿼리 타임아웃 (기본값: 60초)
  • 최대 연결 수 (기본값: 10)
  • SSL 사용 여부
  • SSL 인증서 경로 (SSL 사용 시)

사용 방법

1. 새 연결 생성

  1. "외부 DB 연결 관리" 화면에서 "새 연결 추가" 버튼 클릭
  2. 기본 정보 입력
    • 연결명: 고유한 식별자로 사용
    • DB 타입: 연결할 데이터베이스 종류 선택
    • 설명: 연결에 대한 부가 설명 (선택사항)
  3. 연결 정보 입력
    • 호스트: 데이터베이스 서버 주소
    • 포트: DB 타입에 따라 기본값 제공
    • 데이터베이스명: 연결할 데이터베이스 이름
    • 사용자명: 데이터베이스 접속 계정
    • 비밀번호: 계정 비밀번호
  4. 필요한 경우 고급 설정 구성
  5. "연결 테스트" 버튼으로 연결 가능 여부 확인
  6. "생성" 버튼으로 연결 저장

2. 연결 수정

  1. 연결 목록에서 수정할 연결의 "편집" 버튼 클릭
  2. 필요한 정보 수정
    • 비밀번호는 변경 시에만 입력
    • 비밀번호 필드를 비워두면 기존 비밀번호 유지
  3. "연결 테스트"로 수정된 정보 확인
  4. "수정" 버튼으로 변경사항 저장

3. 연결 테스트

  • 새 연결 생성 시: 임시 연결을 생성하여 테스트 후 삭제
  • 기존 연결 수정 시: 현재 연결로 테스트 실행
  • 테스트 결과에 서버 버전, 응답 시간 등 상세 정보 표시
  • 실패 시 상세한 오류 메시지 제공

4. 연결 삭제

  1. 연결 목록에서 삭제할 연결의 "삭제" 버튼 클릭
  2. 확인 대화상자에서 "삭제" 선택
  3. 해당 연결과 관련된 모든 설정 제거

보안 고려사항

  1. 비밀번호 관리

    • 비밀번호는 AES-256-CBC로 암호화하여 저장
    • 비밀번호는 UI에 표시되지 않음
    • 수정 시 비밀번호 필드를 비워두면 기존 비밀번호 유지
  2. SSL 연결

    • SSL 사용 옵션 제공
    • 인증서 경로 설정 가능
    • 자체 서명 인증서 지원
  3. 접근 제어

    • 회사 코드별 연결 관리
    • 활성/비활성 상태 관리
    • 연결별 최대 연결 수 제한

문제 해결

일반적인 문제

  1. 연결 테스트 실패

    • 호스트/포트 접근 가능 여부 확인
    • 데이터베이스명 정확성 확인
    • 사용자 계정 권한 확인
    • 방화벽 설정 확인
  2. 타임아웃 발생

    • 연결 타임아웃 값 조정
    • 네트워크 상태 확인
    • 데이터베이스 서버 부하 확인
  3. SSL 연결 오류

    • 인증서 파일 경로 확인
    • 인증서 유효성 확인
    • SSL 설정 일치 여부 확인

오류 메시지 해석

  1. "ECONNREFUSED"

    • 원인: 호스트/포트에 연결할 수 없음
    • 해결: 호스트/포트 정확성 확인, 방화벽 설정 확인
  2. "password authentication failed"

    • 원인: 사용자명/비밀번호 불일치
    • 해결: 계정 정보 정확성 확인
  3. "database does not exist"

    • 원인: 데이터베이스가 존재하지 않음
    • 해결: 데이터베이스명 정확성 확인

모범 사례

  1. 연결명 작성

    • 용도를 명확히 알 수 있는 이름 사용
    • 회사/환경 정보 포함 권장
    • 예: "운영_회계DB", "개발_테스트DB"
  2. 보안 설정

    • 가능한 SSL 사용
    • 최소 권한의 계정 사용
    • 연결 타임아웃 적절히 설정
  3. 성능 최적화

    • 필요한 최소한의 최대 연결 수 설정
    • 쿼리 타임아웃 적절히 설정
    • 주기적인 연결 테스트 수행

API 참조

ExternalDbConnectionAPI

연결 관리

// 연결 목록 조회
getConnections(filter: ExternalDbConnectionFilter): Promise<ExternalDbConnection[]>

// 연결 상세 조회
getConnectionById(id: number): Promise<ExternalDbConnection>

// 새 연결 생성
createConnection(data: ExternalDbConnection): Promise<ExternalDbConnection>

// 연결 수정
updateConnection(id: number, data: ExternalDbConnection): Promise<ExternalDbConnection>

// 연결 삭제
deleteConnection(id: number): Promise<void>

연결 테스트

// 연결 테스트
testConnection(connectionId: number, password?: string): Promise<ConnectionTestResult>

데이터 조회/저장

// 테이블 목록 조회
getTables(connectionId: number): Promise<string[]>

// 테이블 컬럼 정보 조회
getTableColumns(connectionId: number, tableName: string): Promise<ColumnInfo[]>

// 테이블 데이터 조회
getTableData(connectionId: number, tableName: string, options?: QueryOptions): Promise<any[]>

// 테이블 데이터 저장
saveTableData(connectionId: number, tableName: string, data: any[], options: SaveOptions): Promise<{ affected_rows: number }>

향후 계획

  1. 기능 개선

    • 연결 풀 모니터링
    • 연결 통계 대시보드
    • 쿼리 실행 이력 관리
  2. 지원 예정 기능

    • 연결 복제
    • 연결 설정 임포트/익스포트
    • 연결 그룹 관리
  3. 보안 강화

    • 역할 기반 접근 제어
    • 감사 로그 강화
    • 연결 암호화 강화