Skip to content

Developer Guide Kor

Qgis-Tr-kr edited this page Nov 19, 2014 · 24 revisions

Tadpole DB HUB 개발자 가이드

올챙이는 웹 기반 DB 관리 도구입니다. 웹 브라우저에서 올챙이를 통해 다양한 DB로 접속할 수 있고, 권한을 조절 할 수 있습니다. 올챙이의 최종 지향은 DB HUB 입니다.

목차

올챙이에 사용 된 외부 라이브러리

  1. Eclipse RAP & GEF Port, EMF, FileUpload etc
  2. Amazon AWS java SDK(http://aws.amazon.com/en/sdkforjava/)
  3. Java Simplified Encryption(http://www.jasypt.org/)
  4. Apache Hadoop, DBCP, iBatis, Commons, Mail, HttpComponents-client, log4j, slf4j.. etc
  5. Java Excel API(http://jexcelapi.sourceforge.net/)
  6. JSqlParser(https://github.com/JSQLParser/JSqlParser)
  7. SQLFormatter(?)
  8. Gson(https://code.google.com/p/google-gson/)
  9. Cubrid JDBC Driver
  10. Apache TAJO JDBC Driver
  11. Apache Hive JDBC Driver
  12. MariaDB JDBC Driver
  13. MongoDB JDBC Driver
  14. MSSQL JDBC Driver(jtds, http://jtds.sourceforge.net/)
  15. MySQL JDBC Driver
  16. Oracle JDBC Driver
  17. PostgreSQL JDBC Driver
  18. SQLite JDBC Driver
  19. ACE Editor (http://ace.c9.io/#nav=about)
  20. Google Auth(https://github.com/wstrange/GoogleAuth)
  21. Quartz Schedule(http://quartz-scheduler.org/)
  22. opencsv(http://opencsv.sourceforge.net/)

개발 환경 소스 내려 받기.

  1. 개발 툴은 Eclipse 4.3 Kepler 버전 혹은 4.4 Luna 버전 Eclipse RCP and RAP Developers를 사용합니다.
  2. 소스는 Eclipse의 Git Repositories Perspective를 이용해 github의 다음(https://github.com/hangum/TadpoleForDBTools/) 위치의 소스를 받아오시면 됩니다.
  3. 이클립스 워크스페이스 encoding 타입을 UTF-8로 수정하세요.(Window -> Preference -> General -> Workspace -> UTF-8)
  4. Master Branch 소스를 로컬에 내려 받으세요. 소스를 github에서 받을 때 Clone Git Repository 대화상자의 마지막 단계인 Local Destination 부분의 Projects 부분의 'Import all existing projects after clone finishes' 옵션을 선택하고 [Finish]를 누르면 받은 소스가 자동으로 Workspace에 들어옵니다.

현재 사용하는 플러그인 EGit, Log4E, WindowBuilder, Subclipse, ResourceBundle Editor 0.8.0 등입니다.

Target Platform 설정합니다.

  1. Git 홈을 이클립스 변수로 등록합니다. Window -> Preference -> Run/Debug -> String Substitution 에 git-tadpole 변수를 설정하고 올챙이 소스를 내려받은 git-home 폴더를 값으로 설정합니다. 저는 C:\dev\eclipse-SDK-4.3\eclipse\workspace-tadpole\TadpoleDBHub 로 설정 되어 있습니다.
  2. 올챙이 타겟 파일은 ${workspace}/targetProject/tadpolea-rap-2.0.0-emf-standalone.target을 입니다. 해당 파일을 더블 클릭하십시오. 오른쪽 상단 Set as Target Platform을 클릭합니다.
  3. API Baselines을 설정합니다. Window -> Preference -> Plug-in Development -> API Baselines를 클릭합니다.
    Add Baseline..을 클릭한 후 적당한 이름을 입력한 후 Reset을 누르고 Finish을 누릅니다.
  4. Project -> Clean.. 을 눌러 전체 컴파일 합니다. 여기 까지하면 올챙이 프로젝트에 에러가 없어야 맞습니다.

target platform

실행

간단한 방법

  1. com.hangum.tadpole.application.start 프로젝트의 TadpoleDBHub_executer_configuration.launch 를 클릭 하세요. 마우스 오른쪽 버튼을 누르고 Run As -> TadpoleDBHub_executer_configuration 를 클릭하시면 올챙이가 시작됩니다.
  2. 그런데 대부분 바로 시작 안되고 'Could not resolve module' 오류가 발생하는 경우가 많습니다. 이는 Eclipse가 Bundle을 정상적으로 찾지 못하는 것입니다. 이를 해결하기 위해 메뉴 -> Run -> Debug Configuration 을 선택합니다.
  3. 다일로그 화면이 열리면 Bundle 탭을 선택합니다. 이 대화상자에서 [Add Required Bundles] 버튼을 눌러야 하는데, 보통 창이 작아 이 버튼이 안 보입니다.
  4. 대화상자의 오른쪽 테두리를 잡고 늘리면 [Add Required Bundles] 버튼이 보이고, 이 버튼을 누른 후 Bundle 들이 다 찾아지면 [Apply] 버튼을 눌러 적용합니다. 이 과정은 개발환경 구성 후 한 번만 실행하면 됩니다.
  5. 이제 다시 처음 시도했던 대로 TadpoleDBHub_executer_configuration.launch 를 Run As로 실행하면 정상 실행이 될 것입니다.

복잡한 방법

  1. com.hangum.tadpole.application 프로젝트의 plugin.xml 파일을 더블클릭 합니다. Launch a RAP Application 버튼을 클릭하여 시작합니다. 처음실행시 대부분 실패하게 됩니다.
  2. 이클립스 안에서의 실행 환경을 설정해야합니다. 메뉴 -> Run -> Debug Configuration 을 선택합니다.
  3. 다이얼로그 화면이 오픈되는데, RAP Application이름으로 실행될 것입니다. Main 텝에서 Servlet path 에는 /tadpole를 입력합니다. eclipse launch
  4. Bundle 텝에서 Deselect All을 클릭합니다. 다시 com.hangum.tadpole.application.start, org.eclipse.equinox.http.jetty, org.eclipse.equinox.console, org.apache.felix.gogo.shell의 체크 박스를 클릭해 줍니다. 그 후에 Add Required Bundle번튼을 클릭합니다.
  5. 브라우저가 오픈되고 404 not found가 나올텐데 리프레쉬 버튼을 눌러서 페이지가 정상 오픈되는 것을 확인합니다.
  6. 좀더 편하게 사용하기 위해서는 Debug Configuration의 RAP Application에서 Argument tab에서 Program Argument항목 제일 뒤에 -test -debuglog를 추가합니다. -test의 옵션은 테스트 환경을 동작하라, -debuglog는 로그 옵션을 deblog로 하라는 말입니다.

이 비디오를 보세요. http://www.youtube.com/watch?v=qTL24cQ6ISc

플러그인 설명

  • com.hangum.tadpole.application.start : 프로젝트 시작과 종료 부분
  • com.hangum.tadpole.rdb.core : Database 리스트와 Table, Column 리스트 화면 및 RDB 메인 에디터 창 부분
  • com.hangum.tadpole.application : 퍼스팩티브 설정 및 로그인 화면 부분
  • com.hangum.tadpole.commons.libs : 공통 라이브러리 정의
  • com.hangum.tadpole.commons.sql : SQL관련 공통 코드 정의(엔진과 업부 공통)
  • com.hangum.tadpole.commons.sql.test : com.hangum.db.commons.sql 관련 테스트 플러그인
  • com.hangum.tadpole.commons : 공통 코드 유틸
  • com.hangum.tadpole.editor.core : Editor 관련 공통 코드 정의
  • com.hangum.tadpole.sql.parser : SQL Parser, Formatter 관련 코드
  • com.hangum.tadpole.build.war : WAR로 배포하기위한 플러그인
  • com.hangum.tadpole.rdb.model : RDB 모델 정의(현재는 ERD 프로젝트에서만 사용)
  • com.hangum.tadpole.rdb.erd.core : RDB ERD 부분
  • com.hangum.tadpole.feature : 올챙이 feature
  • com.hangum.tadpole.feature.site : buckminster관련 코드 포함된 feature
  • com.hangum.tadpole.manager.core : 유저 관리 코드
  • com.hangum.tadpole.mongodb.core : 몽고디비 관련 메인(디비 및 콜렉션 리스트는 rap.core에서 사용)
  • com.hangum.tadpole.mongodb.core.test : 몽고디비 테스트 코드
  • com.hangum.tadpole.mongodb.model : Mongodb 모델 정의(현재는 ERD 프로젝트에서만 사용)
  • com.hangum.tadpole.mongodb.erd.core : Mongodb ERD
  • com.hangum.tadpole.preference : 프리퍼런스 코드
  • com.hangum.tadpole.secret.util : 올챙이 확장을 위한 코드
  • com.hangum.tadpole.importdb : Data Import 관련 코드
  • com.hangum.tadpole.cipher.core : Data 보안관련 코드
  • com.hangum.tadpole.aws.rds.commons.core : Amazon rDS 관련 코드
  • targetProject : target platform 관련 코드 및 도큐 먼트

dependience

UI 시작

  1. com.hangum.db.browser.rap.Application#createUI() : Session 설정 합니다.
  2. com.hangum.db.browser.rap.ApplicationWorkbenchAdvisor : 올챙이 홈 페이지 오픈 합니다.
  3. com.hangum.db.browser.rap.ApplicationWorkbenchWindowAdvisor : 초기 UI정의, 디비에 테이블이 없다면 테이블 및 기초 유저 생성 후에 로그인 다이얼로그 오픈 합니다.
  4. 3.정상이라면 com.hangum.db.browser.rap.Perspective 에 정의된 Database View와 Object Explorer view 오픈합니다.
  5. Database view(com.hangum.db.browser.rap.core.viewers.connections.ManagerViewer)가 오픈될 때 #init()에서 사용자에게 초기 할당된 디비 리스트를 등록하고 초기 작업을 마무리합니다.

시작시 아규먼트 설명은 다음을 참고합니다. https://github.com/hangum/TadpoleForDBTools/blob/master/targetProject/docs/engine%20argument%20options.txt

엔진 디비

  1. data_security : 컬럼 암호화 정보
  2. executed_sql_resource
  3. executed_sql_resource_data
  4. security_class : 암호화 알고리즘 정보
  5. account_ext : 외부 계정 추가 정보
  6. ssh_info : ssh 연결정보
  7. tadpole_system : 시스템 기본정보
  8. user : 사용자 정보
  9. user_db : 데이터 베이스
  10. user_db_ext : 데이터 베이스 확장 정보
  11. user_db_filter : 데이터 베이스 정보 필터
  12. user_db_resource : 사용자 리소스 헤더
  13. user_db_resource_data : 사용자 리소스 데이터
  14. user_group : 사용자 그룹
  15. user_info_data : 사용자 데이터
  16. user_role : 사용자 권한

디비의 스크립트는

  • 시스템 DB 생성스크립트는 다음을 참조하세요.
  • 시스템 DB 쿼리는 다음을 참조하세요.

EngineERD

엔진에서 사용하는 Database 별 쿼리는 다음과 같습니다.

Database의 기본 기능은 iBatis Framework(http://ibatis.apache.org/)을 사용했습니다. iBatis 에 매핑하는 DAO의 기준은 MySQL입니다. 올챙이는 다음 DB를 지원합니다. 각 DB에 대한 시스템 Query는 다음을 참고하세요.

  1. Amazon RDS:
  2. Cubrid : 8.4.1.2032 기준으로 작업.
  3. MsSQL : 2000 기준으로 작업.
  4. MySQL : 5.4.x로 기준으로 작업.
  5. MariaDB: 5.5.x기준으로 작업.
  6. Oracle : 10g - 11g로 기준으로 작업.
  7. Postgre: 9.1 기준으로 작업.
  8. SQLite : 3.7.2 기준으로 작업.
  9. MongoDB : 2.0.5 기준으로 작업

배포

배포는 크게 Desktop Application 타입과 WAR타입 두가지 모드가 존재합니다. Buckminster(com.hangum.tadpole.feature.site)로 자동화 하는 작업이 있겠으나 수동으로 하는 방법을 설명합니다.

  1. Desktop Application : com.hangum.tadpole.application 프로젝트 안에 tadpole-standalone.product 을 선택합니다. Eclipse Product export wizard를 클릭하여 배포 합니다.
  2. WAR : com.hangum.tadpole.build.war 안에 tadpole.war.product.warproduct 를 선택합니다. Eclipse WAR Product export wizard를 선택하여 배포 합니다.