개발환경 설치에 관하여
Tadpole DB Hub(올챙이) 의 설치에 관하여 설명한 문서 입니다.
본 문서는 Tadpole DB Hub v2.3.2 에 맞추어 작성 하고 있습니다.
Tadpole DB Hub(올챙이)에 사용 된 오픈소스 및 외부 라이브러리
- Eclipse RAP & RAP GEF Port, EMF, FileUpload etc(www.eclipse.org)
- Amazon AWS java SDK(http://aws.amazon.com/en/sdkforjava/)
AWS Toolkit for Eclipse(https://aws.amazon.com/eclipse) and Drivers - Java Simplified Encryption(http://www.jasypt.org/)
- Apache Hadoop, DBCP, iBatis, Commons, HttpComponents-client, log4j, slf4j.. etc
- Java Excel API(http://jexcelapi.sourceforge.net/)
- JSqlParser(https://github.com/JSQLParser/JSqlParser)
- SQLFormatter(?)
- Gson(https://code.google.com/p/google-gson/)
- Cubrid JDBC Driver
- Apache Hive JDBC Driver
- MariaDB JDBC Driver
- MongoDB JDBC Driver
- MSSQL JDBC Driver(jtds, http://jtds.sourceforge.net/)
- MSSQL JDBC Driver(https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15)
- MySQL JDBC Driver
- Oracle JDBC Driver
- PostgreSQL JDBC Driver
- SQLite JDBC Driver
- Apache Tajo JDBC Driver
- Elasticsearch Java driver
- Redis java driver(https://lettuce.io/)
- Hadoop lib
- ACE Editor (https://ace.c9.io/)
- LDAP library for Java(http://www.ldaptive.org/)
- OneLogin's SAML Java Toolkit(https://github.com/onelogin/java-saml)
- MongoDb JDBC Driver(https://bitbucket.org/dbschema/mongodb-jdbc-driver)
- Rhino javascript (https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino)
- Native Operating System and Hardware Information(https://github.com/oshi/oshi)
- Zip4j - A java library for zip files/streams(https://github.com/srikanth-lingala/zip4j)
- sql-formatter(https://github.com/vertical-blank/sql-formatter)
- jdbc-redis(https://github.com/mtpettyp/jdbc-redis) Driver
- libetl/curl (https://github.com/libetl/curl)
개발 환경 소스 내려 받기
- 최신 Java 설치를 하세요(http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html)
- 개발 툴은 이클립스 최신버전(4.4.1 Luna 버전)을 Eclipse RCP and RAP Developers를 사용합니다.
- 반드시 이클립스 워크스페이스 encoding 타입을 UTF-8를 사용해야 합니다.(Window -> Preference -> General -> Workspace -> UTF-8)
- 소스는 github의 다음(https://github.com/hangum/TadpoleForDBTools/) 위치에 존재 합니다.
- Master Branch 소스를 로컬에 내려 받으세요. (맴버들의 최신 소스를 다운로드 하려면 제일 최상위 버전을 다운로드 하십시오. 현재는 1.6.3 입니다)
현재 사용하는 플러그인 EGit, Log4E, WindowBuilder, Subclipse, ResourceBundle Editor 0.8.0 등입니다.
Target Platform 설정합니다.
- Git 홈을 이클립스 변수로 등록합니다. Window -> Preference -> Run/Debug -> String Substitution 에 git-tadpole 변수를 설정하고 git-home을 설정합니다.
저는 C:\dev\eclipse-SDK-4.3\eclipse\workspace-tadpole\TadpoleDBHub 로 설정 되어 있습니다. - 올챙이 타겟 파일은 ${workspace}/targetProject/tadpolea-rap-2.0.0-emf-standalone.target을 입니다.
- 해당 파일을 더블 클릭하십시오.
- 오른쪽 상단 Set as Target Platform을 클릭합니다.
- API Baselines을 설정합니다. Window -> Preference -> Plug-in Development -> API Baselines를 클릭합니다.
Add Baseline..을 클릭한 후 적당한 이름을 입력하고 Reset을 누르고 Finish을 누릅니다. - Project -> Clean.. 을 눌러 전체 컴파일 합니다. 여기 까지하면 올챙이 프로젝트에 에러가 없어야 맞습니다.
실행
간단한 방법
- com.hangum.tadpole.application.start 프로젝트의 TadpoleDBHub_executer_configuration.launch 를 클릭 하세요.
마우스 오른쪽 버튼을 누르고 Run As -> TadpoleDBHub_executer_configuration 를 클릭하시면 올챙이가 시작하겠습니다. - 정상적으로 실행이 안된다면 메뉴 -> Run -> Debug Configuration을 선택합니다.
- TadpoleDBHub_executer_configuration -> Bundles 탭을 선택합니다.
- Add Required Bundles 를 클릭후 Debug를 눌러 실행합니다.
복잡한 방법
- com.hangum.tadpole.application 프로젝트의 plugin.xml 파일을 더블클릭하여 합니다. Launch a RAP Application 버튼을 클릭하여 시작합니다.
처음실행시 대부분 실패하게 됩니다. - 이클립스 안에서의 실행 환경을 설정해야합니다. 메뉴 -> Run -> Debug Configuration 을 선택합니다.
- 다이얼로그 화면이 오픈되는데, RAP Application이름으로 실행될 것입니다. Main 텝에서 Servlet path 에는 /tadpole를 입력합니다.
- Bundle 텝에서 Deselect All을 클릭합니다.
다시 com.hangum.tadpole.application.start, org.eclipse.equinox.http.jetty, org.eclipse.equinox.console, org.apache.felix.gogo.shell의 채크 박스를 클릭해 줍니다.
com.hangum.tadpole.application 의 체크박스도 클릭해 줍니다.
그 후에 Add Required Bundle번튼을 클릭합니다. - 브라우저가 오픈되고 404 not found가 나올수 있습니다. 브라우저의 리프레쉬 버튼을 눌러서 페이지가 정상 오픈되는것을 확인합니다.
- 좀더 편하게 사용하기 위해서는 Debug Configuration의 RAP Application에서 Argument tab에서 Program Argument항목 제일 뒤에 -test -debuglog를 추가합니다.
-test 옵션을 지정하면 테스트 환경으로 올챙이를 시작하며 로그인 화면에서 관리자와 손님으로 로그인을 할 수 있는 버튼이 로그인 창에 표시됩니다.
- 사용자 메뉴얼의 관련 내용을 참조 하십시오.
-debuglog 옵션을 지정하면 디버깅을 위한 로그를 로그파일에 작성하도록 합니다.
-디버그 및 실행설정에 사용되는 옵션에 대한 설명을 사용자 메뉴얼을 참조 하십시오.
이 비디오를 보세요. 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.engine | SQL관련 공통 코드 정의(엔진과 업부 공통) | |
com.hangum.tadpole.commons.engine.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 관련 코드 및 도큐 먼트 | |
com.hangum.tadpole.hive.core | Apache Hive 관련 코드 | |
com.hangum.tadpole.tajo.core | Apahce Tajo 관련 코드 |
UI 시작
- com.hangum.db.browser.rap.Application#createUI() : Session 설정 합니다.
- com.hangum.db.browser.rap.ApplicationWorkbenchAdvisor : 올챙이 홈 페이지 오픈 합니다.
- com.hangum.db.browser.rap.ApplicationWorkbenchWindowAdvisor : 초기 UI정의, 디비에 테이블이 없다면 테이블 및 기초 유저 생성 후에 로그인 다이얼로그 오픈 합니다.
- 3.정상이라면 com.hangum.db.browser.rap.Perspective 에 정의된 Database View와 Object Explorer view 오픈합니다.
- 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
엔진 디비
- data_security : 컬럼 암호화 정보
- executed_sql_resource
- executed_sql_resource_data
- security_class : 암호화 알고리즘 정보
- account_ext : 외부 계정 추가 정보
- ssh_info : ssh 연결정보
- tadpole_system : 시스템 기본정보
- user : 사용자 정보
- user_db : 데이터 베이스
- user_db_ext : 데이터 베이스 확장 정보
- user_db_filter : 데이터 베이스 정보 필터
- user_db_resource : 사용자 리소스 헤더
- user_db_resource_data : 사용자 리소스 데이터
- user_group : 사용자 그룹
- user_info_data : 사용자 데이터
- user_role : 사용자 권한
디비의 스크립트는
엔진에서 사용하는 Database 별 쿼리는 다음과 같습니다.
Database의 기본 기능은 iBatis Framework(http://ibatis.apache.org/)을 사용 했습니다.
iBatis 에 매핑하는 DAO의 기준은 MySQL입니다. 올챙이는 다음 DB를 지원합니다. 각 DB에 대한 시스템 Query는 다음을 참고하세요.
- Amazon RDS:
- Cubrid : 8.4.1.2032 기준으로 작업.
- MsSQL : 2000 기준으로 작업.
- MySQL : 5.4.x로 기준으로 작업.
- MariaDB: 5.5.x기준으로 작업.
- Oracle : 10g - 11g로 기준으로 작업.
- Postgre: 9.1 기준으로 작업.
- SQLite : 3.7.2 기준으로 작업.
- MongoDB : 2.0.5 기준으로 작업
배포
배포는 크게 Desktop Application 타입과 WAR타입 두가지 모드가 존재합니다.
Buckminster(com.hangum.tadpole.feature.site)로 자동화 하는 작업이 있겠으나 수동으로 하는 방법을 설명합니다.
- Desktop Application : com.hangum.tadpole.application 프로젝트 안에 tadpole-standalone.product 을 선택합니다. Eclipse Product export wizard를 클릭하여 배포 합니다.
- WAR : com.hangum.tadpole.build.war 안에 tadpole.war.product.warproduct 를 선택합니다. Eclipse WAR Product export wizard를 선택하여 배포 합니다.
<span id="pageNum"/>