TECH ARTICLE

SQL로 제니퍼 데이터 조회하기

제니퍼 API서버 활용하기

제니퍼는 1초 단위의 수집 데이터를 자체로 제작한 파일 시스템에 저장합니다.
이 파일 시스템은 대용량의 데이터를 고속으로 처리하는데 초점을 맞추어 개발되었고 실제 고객사의 대용량 인스턴스의 데이터를 안정적으로 수집하여 처리하고 있습니다. 다만 직접 제작한 파일 시스템이기에 사용자가 원하는 가공 형태의 데이터를 조회하는데 어려움이 있습니다.

이에 많은 고객분들이 SQL로 제니퍼의 데이터를 자유롭게 조회해서 사용하고 싶다는 의견을 주셨고 제니퍼 R&D팀에서는 개선방향을 지속적으로 연구해서 새롭게 기능을 추가해 왔습니다.

현재 제니퍼는 2가지 방식의 SQL 조회방법을 제공하고 있습니다. 이번 글에서는 제니퍼 API 서버와 JDBC 드라이버를 이용한 데이터 조회 방법을 살펴보겠습니다.

제니퍼 API 서버는 제니퍼 서버와 별도의 프로세스로 동작합니다.  
JDBC 드라이버가 사용자로부터 받은 요청을 API 서버에 전달하고 API 서버는 파일 DB를 읽어서 HTTP 응답 형태로 결과값을 전달해줍니다.

JENNIFER API Server구조

제니퍼 API를 사용하기 위해서는 다운로드 패키지에 아래의 파일이 있는지 확인이 필요합니다.


각 패키지는 다음 링크에서 다운받을 수 있습니다.

API 서버  https://github.com/jennifersoft/jennifer5-api-server

JDBC 드라이버  https://github.com/jennifersoft/jennifer5-jdbc-driver

jennifer-api-server-5.6.0.5.zip 제니퍼 API 서버 패키지 파일
jennifer-jdbc-5.6.0.5.zip 제니퍼 JDBC 드라이버 파일
api_server.conf 제니퍼 API서버 설정파일

제니퍼 API 서버의 설정 파일은 conf/api_server.conf 이며 yaml 포맷으로 작성되어 있습니다.

apiServer:
   host: "0.0.0.0"
   port: 8080               제니퍼 API 서버 연결포트 입니다.
   authentication:
     id: "jennifer"          접속아이디
     password: "jennifer"      접속패스워드
jennifer:
   dataServer:               데이터서버용 데이터 
     db:
       - {path: "/home/jennifer/server.data/db_data", name: "default"} dbName
   viewServer:               뷰서버용 데이터
     db:

{path: "/home/jennifer/jennifer5-server/db_view", name: "default"}

 여러 개의 데이터서버 (혹은) 뷰서버의 파일 DB 정보를 조회하고자 할 경우 사용하아래와 같이 디렉토리 경로를 추가로 설정합니다.

db:
  - {path: "/home/jennifer/server.data/db_data", name: "default"}
  - {path: "/home/jennifer/server.data/db_data1", name: "data1"}
  - {path: "/home/jennifer/server.data/db_data2", name: "data2"}

이제 제니퍼 API 서버를 실행하여 간단히 활용하는 방법을 살펴보겠습니다.

먼저 jennifer-api-server-{version}.zip 파일의 압축을 해제 후 conf/api_server.conf 파일에 뷰서버 혹은 데이터 서버의 경로를 사용자의 제니퍼 디비 경로에 맞게 수정합니다.

bin/api-server (or api-server.bat) 실행하면 아래와 같은 로그를 확인할 수 있습니다.

실행 예) 제니퍼 API서버 실행화면

제니퍼 API 서버가 실행 되었으니 이제 데이터를 조회해 보겠습니다.

표준 JDBC 로 제작 되었기 때문에 거의 모든 디비 관련 툴에서 이용가능합니다. 본 글에서는 드라이버 자체 내장된 CLI 를 이용한 방법, 별도 애플리케이션을 개발하는 방법, 오픈소스 디비 관리 도구인 DBeaver 의 사용방법을 알아봅니다.

먼저 제니퍼 JDBC 드라이버에서 제공하는 CLI기능을 사용해서 접속하는 방법입니다.
아래와 같이 제니퍼 JDBC 드라이버를 실행하면 제니퍼 DB에 간단하게 연결할 수 있습니다.

실행 예) 제니퍼 JDBC드라이버를 통해 CLI 환경실행하기

CLI가 실행된 상태에서 SQL문을 사용해서 제니퍼 데이터를 조회해 볼 수 있습니다.

실행 예) CLI환경에서 제니퍼 트랜잭션 테이블 리스트 보기

사용자가 제니퍼 디비를 관리하거나 조회하여 별도의 기능을 구현하고자 하는 경우 아래와 같이 DriverManager 를 이용하여 데이터를 조회할 수 있습니다.


//HTTP 생략 가능

  • DriverManager.getConnection(“jdbc:jennifer://host:port”)

// port 80 일 경우 

  • DriverManager.getConnection(“jdbc:jennifer://host”)
  • DriverManager.getConnection(“jdbc:jennifer:http://host:port”)

// dbName 구분시

  • DriverManager.getConnection(“jdbc:jennifer:http://host:port;dbName=jennifer”)

// View Server DB 조회시

  • DriverManager.getConnection(“jdbc:jennifer:http://host:port;dbType=view;dbName=jennifer”)

다음으로 SQL 클라이언트를 활용하는 방법입니다.
여러가지 도구들이 있으나 널리 사용되는 오픈소스인 DBeaver를 사용하면서 설명드리겠습니다.

1.제니퍼 JDBC 드라이버를 Driver Manager 메뉴로 이동하여 등록합니다.

2. 접속을 위한 Class Name, Host, Port 정보를 입력합니다.

3. 프로퍼티 탭에서는 접속을 위한 dbType, dbName 항목을 등록합니다. API 서버 설정에 추가한 각 dbPath 정의와 매칭되며 단일 디비 경로를 지정한 경우 생략할 수 있습니다. 이 경우 “default” 라는 이름을 가진 dbPath 가 선택됩니다.

4. 새 데이터베이스 연결에서 Jennifer5 드라이버를 검색하여 선택합니다.

5. 접속에 필요한 정보를 입력합니다. 아이피 패스워드는 API 서버 설정 파일의 authenticate 영역에 기입한 내용을 입력합니다.

6. 새 SQL 편집기를 선택하세요.

7. 사전 준비된 SQL(select * from all_tables)로 조회 가능한 테이블 목록을 확인할 수 있습니다. 물론 스키마 이름을 선택해도 정보 확인이 가능합니다.

8. 확인된 테이블을 대상으로 원하는 SQL 을 실행할 수 있습니다.

실행 예) 원하는 테이블을 대상으로 SQL작성 후 실행해 볼 수 있습니다.
트랜잭션 데이터 조회 예) select * from transaction_1004_20210401;

현재 조회할 수 있는 테이블 종류는 아래와 같습니다.

APPLICATION_STATISTIC_도메인_날짜
TRANSACTION_도메인_날짜
INSTANCE_METRIC_도메인_날짜
DOMAIN_METRIC_도메인_날짜
INSTANCE_도메인dbType=view

제니퍼 JDBC 드라이버는 표준 SQL 에 맞게 제작되었습니다. 사용가능한 SQL 함수, 문법에 대한 스펙은 아래 링크를 참고하세요.

SQL language (apache.org)

이상으로 제니퍼 API 서버와 JDBC 드라이버를 이용하여 데이터를 조회하는 방법에 대한 소개를 마칩니다.
다음 글에서는 “SQL로 제니퍼 데이터 활용하기” 2번째 기능을 소개해 드리도록 하겠습니다.

Next

Contact Us

안녕하세요? 제니퍼소프트입니다.
기술 문의의 경우 질문자의 회사/이름/연락처를 본문에 기술해 주셔야만 원할한 지원이 가능합니다.
보내주신 문의 사항을 검토하여 빠른 시일 내에 답변해 드리겠습니다.

  • Chris
  • Irene

메일을 보냈습니다.

메일 전송이 완료되었습니다.
빠른 시일 내에 답변드리겠습니다.
감사합니다.
제니퍼소프트 웹사이트는 쿠키를 사용합니다. 쿠키에 대한 자세한 정보 및 삭제 방법은 제니퍼소프트의 개인정보처리방침을 참고하시기 바라며 본 사이트를 계속해서 이용하는 것은 제니퍼소프트의 쿠키 사용에 동의함을 의미합니다.