• 조현종
• 테드폴허브대표 (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 임포트
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
#4 올챙이는 데이터 베이스 협업 툴입니다.
웹브라우저를 사용해서 데이터 베이스를 사용하는 툴입니다.
MySQL, Oracle, PostgreSQL, SQLServer, CUBRID, ALTIBASE, MongoDB, TAJO 등을 지원하고요.
1.7.1버전에는 티맥스 티베로가 추가 될것으로 예상합니다.
#7 이런 개발툴을 만들려면 테이블 목록,
테이블의 컬럼 목록을 가져와야 하구요.
컬럼도 어떤것은 프라이머리 인지, 센컨더리 키인지, 널인지도 가져와야 합니다.
뷰나 프로시저, 함수, 트리거도 마찬가지이구요.
데이터베이스에 어떤 항목이 있는지 가져와서 보여주도록 해야합니다.
#8 테드폴허브는 자바로 만들어져 있어서..
자바에서는 jdbc api(jsr-221)라는 표준 스펙이 있습니다.
오라클에서 스팩을 만들고 데이터베이스를 만드는 곳에서 그 스팩대로 구현한 것이지요.
Postgresql의 경우는 postgresql jdbc driver가 있습니다.
#9 이것의 실제 구성요소는 위와 같은데요
실제 디비를 연결할때는 디비와 연결하면 DatabaseMetaData 클래스에서 테이블 목록, 컬럼 목록등을 조회 해 볼수 있습니다.
장점은 디비마다 모두 동일한 인터페이스를 구현했을 것이므로(물런 그렇지 않습니다. 구현의 책임은 디비 밴더에 있습니다) 사용하는 입장에서 간단(?, 물런 그리 간단하지는 않습니다만) 합니다.
아시는 것 처럼 표준 인터페이스다 보니까 모든데이터베이스에 맞추어 구현해야 합니다.
즉, postgresql 만의 독자적인 것을 넣을 수 없다는 이야기 이고, 이것은 일반적으로는 쓸만할지 몰라도 정교하게 쓰려면 아쉽다라고 표현할 수도 있겠습니다.
물런 내부 구현체에 정교하게 사용할 수 있습니다만, 독자 클래스를 쓰기에는 약간의 위험(사라지면, 동적인 확장은)을 감수해야하므로 선택해야 합니다.
#10 두번째 방법은 디비마다 시스템 칼탈로그 테이블이 있고 이것을 조회해 오는 방법입니다.
아래는 테드폴디비허브에서 테이블 목록 조회해 오는 쿼리입니다.
디비의 모든 정보를 다 끌어 올수 있구요.
장점이라고 한다면, postgresql에 맞게 가져오고 싶은 정보를 다 끌어 올수 있습니다.
단점은 각 디비마다 틀려서 모든 쿼리를 다 정의해야 하고, 디비 버전이 바뀌면서 조금씩…
#11 테드폴허브에서는 두 가지 방법 중에 시스템 카탈로그에서 쿼리를 하는 방법을 취하고 있습니다.
Ui나 뒤에서 필요한 모든 데이터의 인터페이스를 정의하고 그것에 맞추어 쿼리를 정의하고 사용할 수 있도록 하였습니다.
Jdbc api 흉내도 내면서 디테일한 쿼리로 데이터를 조회할 수 있도록 하여서 확장성과 안정성을 유지하도록 하였습니다.
물런 mongodbd와 같은 jdbc가 없는 친구들도 이것때문에 가능한 것이구요.
#12 그러면 시스템 카탈로그 의 쿼리를 가져와야하는데 pg에서는 어떻게 가져오냐면.
Pgadmin3라는 훌륭한 툴에 보면 다음과 같은 기능이 있습니다.
툴에서 재공하는 모든 액션을 로깅할 수있는데요.