2. • 조현종
• 테드폴허브 대표 (tadpolehub.com)
• 이클립스 플러그인/RCP 카페 시샵 (http://cafe.naver.com/eclipseplugin)
• 오픈소스 올챙이 개발 및 커뮤니티 운영
(https://github.com/hangum/TadpoleForDBTools/)
3. Tadpole DB Hub는
• 웹 브라우저에서 동작하는 데이터베이스 협업 플렛폼
• OS에 의존하지 않음
• 다양한 디비 지원
• 사용자 설치 불필요
• 보안 및 감사 기능
4. 기술 - 구성
• 운영환경
• Java 1.7.x , Tomcat 7.0 이상
• MySQL 5.6 이상
• 배포
• Docker, WAR, 각 OS 바이너리 재공
5. 기본기능
• 다국어 지원
• 유니코드 지원
• 멀티, 서브 쿼리 지원
• 에디터에서 테이블 자동완성
• 에디터에서 컬럼 자동 완성
• 쿼리 결과 내보내기 및 다중 비교
• 셈플데이터 생성 지원
• PLSQL 에디터 및 실행 지원
• ERD 뷰어 지원
• 세션 모니터링 지원
• RDB to NoSQL 임포트
7. DB Client tool에서 테이블 가져오는 방법
• JDBC API 를 이용하는 방법?
• Java에서 DB를 사용에 필요한 표준 인터페이스를 재공
• 표준 인터페이스를 각 DB 밴더들이 구현 한 것이 JDBC Driver
• JSR-221(JDBC 4.0)의 스팩
• PostgreSQL JDBC Driver
8. DB Client tool에서 테이블 가져오는 방법
이름 내용
DriverManager class
Driver interface
Connection interface
Statement interface
ResultSet interface
SQLException class
DatabaseMetaData 테이블, 컬럼 목록을 가져온다.
http://ecomputernotes.com/servlet/servlet-with-mysql-database/jdbc-api
올챙이는 데이터 베이스 협업 툴입니다.
웹브라우저를 사용해서 데이터 베이스를 사용하는 툴입니다.
MySQL, Oracle, PostgreSQL, SQLServer, CUBRID, ALTIBASE, MongoDB, TAJO 등을 지원하고요.
1.7.1버전에는 티맥스 티베로가 추가 될것으로 예상합니다.
이런 개발툴을 만들려면 테이블 목록,
테이블의 컬럼 목록을 가져와야 하구요.
컬럼도 어떤것은 프라이머리 인지, 센컨더리 키인지, 널인지도 가져와야 합니다.
뷰나 프로시저, 함수, 트리거도 마찬가지이구요.
데이터베이스에 어떤 항목이 있는지 가져와서 보여주도록 해야합니다.
테드폴허브는 자바로 만들어져 있어서..
자바에서는 jdbc api(jsr-221)라는 표준 스펙이 있습니다.
오라클에서 스팩을 만들고 데이터베이스를 만드는 곳에서 그 스팩대로 구현한 것이지요.
Postgresql의 경우는 postgresql jdbc driver가 있습니다.
이것의 실제 구성요소는 위와 같은데요
실제 디비를 연결할때는 디비와 연결하면 DatabaseMetaData 클래스에서 테이블 목록, 컬럼 목록등을 조회 해 볼수 있습니다.
장점은 디비마다 모두 동일한 인터페이스를 구현했을 것이므로(물런 그렇지 않습니다. 구현의 책임은 디비 밴더에 있습니다) 사용하는 입장에서 간단(?, 물런 그리 간단하지는 않습니다만) 합니다.
아시는 것 처럼 표준 인터페이스다 보니까 모든데이터베이스에 맞추어 구현해야 합니다.
즉, postgresql 만의 독자적인 것을 넣을 수 없다는 이야기 이고, 이것은 일반적으로는 쓸만할지 몰라도 정교하게 쓰려면 아쉽다라고 표현할 수도 있겠습니다.
물런 내부 구현체에 정교하게 사용할 수 있습니다만, 독자 클래스를 쓰기에는 약간의 위험(사라지면, 동적인 확장은)을 감수해야하므로 선택해야 합니다.
두번째 방법은 디비마다 시스템 칼탈로그 테이블이 있고 이것을 조회해 오는 방법입니다.
아래는 테드폴디비허브에서 테이블 목록 조회해 오는 쿼리입니다.
디비의 모든 정보를 다 끌어 올수 있구요.
장점이라고 한다면, postgresql에 맞게 가져오고 싶은 정보를 다 끌어 올수 있습니다.
단점은 각 디비마다 틀려서 모든 쿼리를 다 정의해야 하고, 디비 버전이 바뀌면서 조금씩…
테드폴허브에서는 두 가지 방법 중에 시스템 카탈로그에서 쿼리를 하는 방법을 취하고 있습니다.
Ui나 뒤에서 필요한 모든 데이터의 인터페이스를 정의하고 그것에 맞추어 쿼리를 정의하고 사용할 수 있도록 하였습니다.
Jdbc api 흉내도 내면서 디테일한 쿼리로 데이터를 조회할 수 있도록 하여서 확장성과 안정성을 유지하도록 하였습니다.
물런 mongodbd와 같은 jdbc가 없는 친구들도 이것때문에 가능한 것이구요.
그러면 시스템 카탈로그 의 쿼리를 가져와야하는데 pg에서는 어떻게 가져오냐면.
Pgadmin3라는 훌륭한 툴에 보면 다음과 같은 기능이 있습니다.
툴에서 재공하는 모든 액션을 로깅할 수있는데요.