300 likes | 543 Views
CORBA 기반에서 멀티–데이터베이스 시스템의 설계 및 구현. A Design and Implementation of a Multi-database System Based on CORBA. 원광대학교 컴퓨터공학과 DC & DB Lab 안 길 수. 목 차. 서 론 연구 배경 연구 목적 관련 연구 멀티 데이터베이스 시스템의 설계 구조 특징 시스템 구현 구현 환경 컴포넌트들의 기능 시스템 구현 화면 시스템 동작 예 결 론 결론 및 향후 연구 방향. . 언어 표현.
E N D
CORBA 기반에서 멀티–데이터베이스 시스템의 설계 및 구현 A Design and Implementation of a Multi-database System Based on CORBA 원광대학교 컴퓨터공학과 DC & DB Lab 안 길 수
목 차 • 서 론 • 연구 배경 • 연구 목적 • 관련 연구 • 멀티 데이터베이스 시스템의 설계 • 구조 • 특징 • 시스템 구현 • 구현 환경 • 컴포넌트들의 기능 • 시스템 구현 화면 • 시스템 동작 예 • 결 론 • 결론 및 향후 연구 방향
언어 표현 데이터 표현 정보의 불일치 서 론 • 연구 배경 • 데이터베이스 시스템 환경의 변화 통합된 사용자 뷰 이 질 성 중앙 집중된 데이터베이스 시스템 분산된 데이터베이스 시스템
서 론 • 연구 배경 • 기존의 연구 동향 CORBA 기반의 C++ 언어를 이용한 3계층 C/S 구조 위치 투명성 제공 확장성과 유연성 제공 • 특정 DBMS 라이브러리에 종속 • 일관된 인터페이스 부재 이질성 극복 제한 JAVA API인 JDBC를 이용한 MDBS 연동에 대한 연구
Global User Local User Local User Multi DBMS DBMS 1 DBMS n DBMS 2 DBMS 3 Database 2 Database 1 Database 3 Database n 서 론 • 연구 배경 • 멀티-데이터베이스 시스템
Web Browser html Applet HTTP HTTPD JDBC Driver JDBC O R B Driver Driver JDBC Manager Names IIOP classes Driver JDBC OWDJ TCP / IP TCP / IP TCP / IP : Applet : CORBA Servant : Java Database : RDBMS Applet : Global Schema : html page : Java Object : COS O R B 서 론 • 연구 목적
관련 연구 • 객체지향 미들웨어 CORBA • 네트워크 투명성 - 확장 가능한 서버 기반구조 제공 • JAVA & 데이터베이스 미들웨어 JDBC • 구현 투명성 - 운영체제에 의존하지 않는 이식 가능한 객체의 기반구조를 제공 • ObjectWeb • 분산 환경에서 동적이고 상호작용이 가능한 3-계층 웹 환경으로 변화 ObjectWeb CORBA JAVA
관련 연구 • UML(Unified Modeling Language) • 기존의 객체지향 모델링 방법의 통합 • Grady Booch의 Booch 기법, Jim Rumbaugh의 OMT 기법, Jocobson의 OOSE 기법 등 • 4 종류의 View Use Case View Deployment View Logical View Component View
: administrator 1: ServerApplication() 2 : xCon() 3 : Set Global DB Name 4 : Set Global Schema 5 : create Next Item 6 : GDB Name Text get Text(db_name) 7 : Global Schema(String, String, String, String) 8 : Push data(String, String, String, String , String , String , String) 9 : marshall Meta Data(GSL, String) xCon 멀티 데이터베이스 시스템의 설계 • Sequence 다이어그램 : 전역 데이터 생성 : Server Application :xCon :Global Schema :GSI
멀티-데이터베이스 시스템의 설계 • Sequence Diagram : 전역 데이터 검색 : Server Application :xCon :Global Schema :GSI : Table Details : administrator 1: ServerApplication() 2 : xCon() 3 : db SelectChoice.addItem(dname) 4 : Select GDBName 5 : GDBNameText.getText(db_name) 6 : GlobalSchema() 7 : Table Details() 8 : viewResult(db_name) 9 : GSI(Vector) 10 : TableDetails() 11 : fetchMetaData(GSI, Vector, String) Return TableDetails 12 : viewResultSet()
멀티-데이터베이스 시스템의 설계 • Sequence Diagram : 콜백을 이용한 메시지 호출 : xGui DBServant : Client Applet : Call Back Impl :Transmit Helper :Call Back : Server Application :DB Interface :Transmit 1: Call BackImpl(ClientApplet) 2 : orb.connect(CallBackImpl) 3 : TransmitHelper.narrow(DBServant) 4 : transQuery(CallBack, String) 5 : DBInterface(String, String, Sting, String, String, String, xGuiDBServant) 6 : createTable(String) 7 : exeQuery(String) 8 : setHead(String) 9 : xGrid.setHead(String) 10 : addRow(String) 11 : xGrid.addRow(String) 12 : repaint() 13 : xGrid.repaint()
멀티-데이터베이스 시스템의 설계 • Collaboration Diagram : 콜백을 이용한 메시지 호출 2 : orb.connect(CallBackImpl) 3 : TransmitHelper.narrow(DBServant) : Client Applet :Transmit Helper : Server Application 1: Call BackImpl(ClientApplet) 4 : transQuery(CallBack, String) :Transmit 9 : xGrid.setHead(String) 8 : setHead(String) 11 : xGrid.addRow(String) 10 : addRow(String) 13 : xGrid.repaint() 12 : repaint() : xGui DBServant : Call Back Impl 5 : DBInterface(String, String, Sting, String, String, String, xGuiDBServant) 6 : createTable(String) 7 : exeQuery(String) :Call Back :DBInterface
멀티-데이터베이스 시스템의 설계 • Sequence Diagram : 멀티 데이터베이스 검색 : Client Applet : Call Back Impl :Transmit Helper : Server Application : xGui DBServant :Global Schema :DB Interface : user : administrator : RDBMS 1: ServerApplication() 2 : orb.bind(DBServant) 3 : xGuiDBServant() 4 : init() 5 : narrow(DBServant) 6 : CallBackImpl(ClientApplet) 7 : ClientApplet() 8 : transQuery(CallBack, String) 9 : fetchMetaData(GSI, Vector, String) 10 : DBInterface(String, String, String, String, String, String, String, xGuiDBServant) 11 : run() 12 : executeQuery(String) 13 : createTable(String) 14 : exeQuery(String) 15 : executeQuery(String) 16 : setHead(String) 17 : xGrid.setHead(String) 18 : addRow(String) 19 : xGrid.Row(String) 20 : repaint() 21 : xGrid.repaint()
멀티-데이터베이스 시스템의 설계 • IDL 설계 module xCon3 { interface CallBack { typedef sequence <string> hdSeq; typedef sequence <string> dtSeq; oneway void setHead(in hdSeq head); oneway void addRow(in dtSeq data); oneway void repaint( ); oneway void sendMsg(in string message); }; interface Transmit { oneway void transQuery(in CallBack cliRef, in string msg); }; };
<< Actor >> RDBMS (from Use Case View) xGuiDBServant (from ServerApp) ClientApplet (from ClientApp) ServerApplication (from ServerApp) CallBackImpl (from ClientApp) << Interface >> Transmit (from IDLFiles) DBInterface (from ServerApp) << Interface >> CallBack (from ClientApp) xCon (from ServerApp) GlobalSchema (from ServerApp) xGrid (from ClientApp) GSI (from ServerApp) LogFrame (from ClientApp) TableDetails (from ServerApp) 멀티-데이터베이스 시스템의 설계 • 3계층 서비스 모델 User Service Business Service Data Service
Panel (from awt) xGrid bDrag:boolean xDrag:int cDrag:int iFirst : int xGrid() setHead() reshape() repaint() addRow() adjustScroll() paint() CallBackImpl update() LogFrame CallBackImpl() fComponetsAdjusted:boolean setHead() addRow() repaint() sendMsg() Naming Context (from IDLFiles) xGrid() setHead() reshape() repaint() addRow() LogFram_WindowClosing() Class Diagram : 사용자 서비스 계층 Applet (from applet) <<Interface>> CallBack (from applet) setHead() addRow() repaint() sendMsg() _deref() ClientApplet $iMaxRecent:int iRecent:int _Call BackImplBase (from IDLFiles) iRecentCount:int 2 gResult init() gRecent _CallBackImplBase() butLog_MouseClicked() _CallBackImplBase() butExecute_MouseClicked() _CallBackImplBase() action() _CallBackImplBase() setRecent() ClientApplect() _deref() +cliRef logFrame orb +cliRef -this$0 rootContext xConContext ORB (from CORBA) 2 srvRef <<Interface>> Transmit (from IDLFiles) -this$0 transQuery() SymWidow SymMouse _deref()
ServerApplication <<Interface>> Transmit Frame (from awt) (from IDLFiles) main() Thread xCon ServerApplication() (from lang) transQuery() $ table_number : int _deref() $ base_time : long _TransmitImplBase (from IDLFiles) xCon() NamingContext main() _TransmitImplBase() quitXCon() (from CosNaming) _deref() createSchemaButton() DBInterface createCommitButton() dropShcemaButton() xGuiDBServant DBInterface() run() xGuiDBServant() exeQuery() createTable() GlobalSchema transQuery() GlobalSchema() GlobalSchema() viewResult() Serializable marshallMetaData() (from io) fetchMetaData() hConnection Connection (from hSql) (from sql) GSI DataInputStream <<Interface>> (from io) pushData() Statement CallBack GSI() (from sql) (from IDLFiles) TableDetails setHead() addRow() TableDetails() ResultSet repaint() hDatabase Vector sendMsg() (from sql) (from hSql) _deref() (from util) Class Diagram : 비즈니스 서비스 계층 +adminFrame +orb $rootContext $xConContext ORB (form CORBA) +DBServant 1..3 +adminFrame +gsm +DB +gsm +con +$dbServant +stmt +cli Ref gsi is +rs $d Database +rows +tds +tds rows
JDBC R-DBMS JDBC Data service Tier 3 Tier 3 R-DBMS R-DBMS R-DBMS R-DBMS R-DBMS TCP / IP : Server Application : DBInterface : DBInterface : DBInterface : DBInterface : Server Application : xCon (System Manager GUI) : DBInterface : DBInterface : xCon (System Manager GUI) Business service Tier 2 : hSql : xGuiDBServant : GlobalSchema : G S I : TDS CORBA / IIOP : xGuiDBServant : GlobalSchema CORBA / IIOP : G S I : TDS TCP / IP : hSql User service :xGrid :xGrid : Log Frame : Client Applet : Client Applet : Log Frame : CallBackImpl : CallBackImpl Tier 1 멀티-데이터베이스 시스템의 설계 • 멀티-데이터베이스 시스템 배치도
멀티-데이터베이스 시스템의 설계 • 시스템 설계상의 특징 • TCP/IP 기반에서 ORB간 통신을 위해 IIOP 프로토콜 사용 • ORB간의 상호 운용성 증대 • 플랫폼(ORB)에 독립적인 애플리케이션 생성 • 데드록과 블록된 메소드 호출 방지 • 클라이언트에 콜백 객체 사용 • 각 지역 데이터베이스로부터 질의 결과는 비즈니스 서비스 계층에 존재하는 메모리 상주 데이터베이스에 테이블로 보관 • 전역 데이터는 자바의 직렬화 가능한 객체를 사용 • 파일 시스템 상에 영속 객체(Persistent Object) 상태로 보관
Informix Oracle Oracle 시스템 구현 • 구현환경 • IONA OrbixWeb 3.1 • JDK 1.2 • tinyweb • JDBC • Informix • Oracle Windows NT 4.O Windows NT 4.O HP UX 10.20
시스템 구현 • 컴포넌트들의 기능 - Business Service 계층 • ServerApplication : CORBA 서버 객체 • Servant인 xGuiDBServant를 네이밍 서비스에 등록 • xGuiDBServant를 초기화 • xCon(Cross Connector) • MDBS의 전역 데이터 관리를 위한 사용자 인터페이스 • hSql • 메모리 상주 데이터베이스 • 지역 데이터베이스들의 쿼리 실행 결과를 수집 및 재 가공 • DBInterface • 자바의 쓰레드를 구현 - 지역 데이터베이스 동시 접속 • 질의 처리결과를 hSql에 전송할 쿼리 스트링으로 생성 • 지역 데이터베이스의 질의 처리 결과를 xGuiDBServant 객체의 메시지에 쿼리 스트링으로 전송하여 hSql에 입력
Server Remote Server Server Table Name Table Name Table Name Driver Name Driver Name Driver Name User Name User Name User Name Passwd Passwd Passwd Sub- protocol Sub- Protocol Sub- protocol Sub- Name Sub- Name Sub- Name 시스템 구현 • 컴포넌트들의 기능 - Business Service 계층 • GSI(Global Schema Information) • 전역 데이터베이스의 이름을 파일 이름으로하여 파일 시스템상에 전역 데이터를 보관 • SIM(Schema Information Manager) • 전역 데이터 관리 • GSI 객체를 파일 상태로 변환(Marshalling) • 파일 상태의 GSI를 개체화 - 자료 입력/삭제/검색 • TDS(TableDetailS) • GSI의 데이터인 전역 데이터를 xCon 객체에 전달하기 위한 매개 객체 전역 데이터의 구조
시스템 구현 • 컴포넌트들의 기능 - Business Service 계층 • xGuiDBServant • 전역 질의문 분해 및 재 조합 • SQL 키워드 사이의 스트링을 추출하여 토큰화 테이블 이름을 이용하여 지역 질의문으로 조합 • 전역 질의문 파싱시 지역 데이터베이스는 3개까지로 제한 • 전위 처리 • 전역 질의문으로부터 지역 질의문을 재조합 • 후위 처리단계에서 hSql의 테이블을 검색하기 위한 질의문 조합 • DBInterface 객체에 지역 질의문을 전달하고 쓰레드를 실행 • 후위 처리 • 전위 처리단계에서 조합된 질의문을 이용해 hSql 검색 • 클라이언트 콜백 객체의 메시지를 호출하여 전달
시스템 구현 • 컴포넌트들의 기능 - User Service 계층 • ClientApplet • CORBA 클라이언트 • CallBackImpl 객체를 초기화 • 서버 객체에게 전역 질의문과 콜백의 객체 참조를 전달 • CallBackImpl • DBServant로부터 최종 결과를 전달받기 위한 코바 객체 • DBServant는 CallBackImpl 객체의 메시지를 호출하여 xGrid 컴포넌트에 결과를 출력 • xGrid • 사용자에게 결과를 보이기 위한 Grid 패널
시스템 구현 • 시스템 구현 화면 OrbixWeb Daemon 실행 화면 Servant 초기화 화면
1 Gil_sou Ahn Chonbuk Kimje 2 Eun_sun Ryu Chonnam Mokpo CUSTOMER 3 Hyon_chol Lee Chonbuk Iksan 4 Chang_won Jung Chonbuk Kunsan c_bal 5 Dong_hun Cho Chonbuk Iksan green c_id balance c_inf 1 10000 yklee c_id name address 2 20000 c_job amigo. Hdsys.co.kr 3 30000 c_id job sex age company 4 40000 5 50000 Amigo 1 Sails man male 28 SS 2 janitor male 49 HD 3 guide female 28 NB 4 House keeping female 36 5 Sails man male 39 SS Informix Oracle Oracle green Amigo.hdsys.co.kr yklee 시스템 구현:수직 분할된 전역 데이터베이스 스키마의 구조
전역 스키마 관리를 위한 윈도우 시스템 구현 • 시스템 동작 지역 데이터베이스를 위한 지역 질의문 생성 과정
시스템 구현 • 결과 화면
결 론 • 3-계층 멀티-데이터베이스 시스템 구축 • 지역 데이터베이스에 대한 통합된 뷰 제공 • 콜백 수신을 위한 객체 구현 • 클라이언트측에서 서버의 메시지 호출을 수신 • 클라이언트 객체와 서버 객체간 메시지 호출시 블록킹 방지 • 비동기 메시지 호출을 사용한 데드록 방지 • 메모리 상주 데이터베이스 사용 • 성능 향상과 데이터 처리의 일관성 유지 • 지역 데이터베이스를 위한 데이터 캐쉬 서버로 활용 가능 • 전역 데이터 관리 모듈 설계 • 관리의 효율성과 성능 향상 • 전역 질의문 파싱 로직 구현 • 하나 이상의 시스템에서 관리하는 데이터베이스에 대한 전역 질의문 파싱 가능
결 론 • 향후 연구 내용 • 전역 질의문 파싱을 위한 알고리즘에 관한 연구 • C++과 OTS를 이용한 비즈니스 서비스 계층 구현 • 관찰자 패턴을 이용한 CORBA 객체의 부하균형에 관한 연구