코딩공작소

DB application programming 본문

어플리케이션개발/DB

DB application programming

안잡아모찌 2018. 11. 21. 15:53

<Introducing SQL 프로그래밍 기술>


 - DB app

 :Host 언어 : 자바, C/C++/C#, COBOL, ...

 :SQL

 

- SQL 표준 각각 DBMS는 표준으로부터 다양한 형태의 언어를 가지고 있다.


 - Interactive interface : SQL명령어는 바로 DBMS에 type되고 결과가 스크린에 출력된다.


 - App programs or DB app : web interface를 이용한다.



<Approaches to DB programming>


 - Embedding DB commands : Host language 내부에 DB 문장을 내포시키는 방법.

 : 프리 컴파일러와 Preprocessor가 코드를 스캔한다. SQL command --> host languages(embedded)

 : 컴파일 시, 구문오류와 스키마 위반 여부를 동시에 검사 할 수 있다.

 : 질의 변경 시, 프로그램 전체를 재컴파일 해야 한다.

Called embedded SQL.


 - Using a library of DB functions  : Host language에서 DB호출을 위한 라이브러리 함수를 사용하는 방법

 : Library of functions는 host programming language로 이용가능하다.

   통로만 개설해서 그 안에서 작업하는 방식. 동적인 방식이다.  API ( Application Programmig Interface)

 : 질의를 생성할 수 있는 융통성을 제공한다.

 : 컴파일 시 어떠한 검사도 할 수 없음.


 - DB programming language : DB모델 및 질의어와 호환 가능한 DB프로그래밍 언어를 새로 개발하는 방법

 : 현재 구현중이지만 아직 완벽하지 않다. DB언어를 확장시키는 작업

 : 임피던스 불일치 문제가 발생하지 않는다.

 : 새롭게 언어를 배워야하는 어려움이 따른다.


<Impedance mismatch>


DB모델과 프로그래밍 언어모델의 차이 때문에 mismatch가 생긴다. --> DB언어와 program언어의 불일치.

DB에서는 set단위, C언어에서는 record단위로 일을 처리한다.

data type에도 차이가 있다.



<Typical sequence of interaction in DB programming>


1. DB서버와 연결한다.

2. 쿼리, 업데이트, 그리고 다른 DB언어를 통해 DB와 interact한다.

3. 연결을 종료한다.

-->DBMS마다 동시 사용 connect가 다르고 여러 제약사항들이 따른다.



Embedded SQL : C 언어 , 프로그래밍언어는 host language로 불린다.



<Retrieving single tuples with embedded SQL>


 - EXEL SQL : prefix . 약속된 기호로 Preprocessor가 컴파일러전에 미리 처리한다.

 : END-EXEC로 끝낸다.


 - Shared variables: : 씨언어와 임베디드 SQL언어 모두에서 사용 된다.

 : SQL명령어 앞에 :를 추가함으로써 인식해준다.


Embedded . Shared variables.






<Retrieving multiple tuples with embedded SQL using cursors>


 - DB의 속성 타입과 host language의 사용 데이터 타입이 다르며, 질의의 결과들은 튜플들의 set이고,

 이는 개별 속성들의 모임으로 구성된다. 그 때문에 데이터타입 및 자료구조를 호환 가능하도록 하기 위해 바인딩

 작업을 해주어야 한다. 튜플들에 개별적으로 접근하면서 루프하기 위해 커서를 사용한다.

Cursor : read/write분리. 동시성의 문제때문에. 쿼리의 결과로 부터 하나의 단일 튜플을 가리킨다.

OPEN CURSOR 명령어 : Fetches[각주:1] query result and sets cursor to a position before first row in result. 커서가 현재의 row가 된다.

FETCH 명령어 : 쿼리의 결과안에서 커서를 다음 row로 움직인다.



<DB programming with function calls: SQL/ CLI>


 - function calls의 사용 : DB프로그래밍을 위한 Dynamic 접근


 - functions 라이브러리 : API로 알려져있다. DB접근을 위해 사용


 - SQL Call Level Interface(SQL/CLI) : SQL표준의 부분




<3가지의 접근 법의 비교>


 - Functions calls 접근의 라이브러리 

 : flexible. 원하는 명령어를 string으로 보낸다.

 : 더욱 복잡한 프로그래밍이다 . DBMS가 컴파일 할때만 명령어의 오류를 발견할 수 있다.


 - DB programming 언어 접근(DB언어를 확장표현한다. 표현력, 기능을 개선)

 : impedance mismatch 문제를 겪지 않는다.

 : 프로그래머는 새로운 언어를 배워야한다.



<DB stored procedures and SQL/PSM>

 

- Stored procedures

 : DB서버에서 DBMS에 의해 저장된 프로그램 모듈

 : 기능과 절차가 될 수 있다.

 : 어떠한 DB프로그램을 여러 응용에서 요구하는 경우, 호출을 통한 효율성을 높이며 , 소프트웨어의 모듈성을 높임.

 : 특정 경우, 서버에서 프로그램을 실행시키면 서버와 클라이언트 간의 통신 비용 절감가능.

 : 복잡한 Derived data를 사용자가 사용가능하게 하며, view가 제공하는 모델링 기능 향상가능


 - SQL/PSM ( SQL/ Persistent Stored Modules )

 : SQL의 확장

 : general-purpose programming constructs를 SQL안에 포함한다.

 : DBMS에 의해 persistently stored.

 : useful!! --> 특정한 상황에서 서버와 클라이언트 간에 데이터 전송과 의사소통 cost를 줄인다. 

                   더욱 복잡한 타입의 derived data를 허락하는 뷰를 통해서 제공되는 모델링 파워를 향상시킨다.



 

  1. 가져오다 [본문으로]

'어플리케이션개발 > DB' 카테고리의 다른 글

함수적 종속성(FD)와 정규화  (2) 2018.11.28
형식 DB언어  (0) 2018.11.21
SQL DML  (0) 2018.11.15
기본 SQL  (0) 2018.11.09
데이터베이스물리설계  (0) 2018.11.07