코딩공작소
DB application programming 본문
<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 query result and sets cursor to a position before first row in result. 커서가 현재의 row가 된다. 1
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를 허락하는 뷰를 통해서 제공되는 모델링 파워를 향상시킨다.
- 가져오다 [본문으로]
'어플리케이션개발 > 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 |