DMBS 접속 기술
1. DBMS 접속 기술
응용프로그램에서 데이터베이스에 접근하기 위해서 SQL의 대화형 인터페이스의 한계로 데이터 베이스 프로그래밍을 통해 해결
1.1 종류
1.1.1 내장 SQL(embedded SQL)
- SQL을 내장한 프로그래밍 언어(Host Language)
- Cursor(반복자) 이용해서 여러 튜플을 처리, 튜플에 대한 포인터 기능함
- 주언어 변수(호스트 변수), DB 필드의 이름은 같아도 됨
- 데이터 타입은 DB 필드의 SQL 데이터 타입과 일치
- Host Program의 컴파일 시 선행 처리기에 의해 분리되어 컴파일
-에. EXCE SQL <query> ;
1.1.2 라이브러리 함수 호출 방식
데이터베이스 호출을 지원하는 API 또는 API를 편리하게 사용하도록 하는 프레임워크
웹 응용 시스템의 구조
사용자 ←→ 웹 서버 ←→ WAS(웹 애플리케이션 서버) ←→ DBMS(데이터베이스관리시스템)
- 사용자 ←→ 웹 서버: 접속해 데이터를 주고받음
- 웹 서버 ←→ WAS :WAS에게 해당 요청을 전달
- WAS ←→ DBMS : WAS는 수신한 요청을 트랜잭션 언어로 변환한 후 DBMS에 전달해 데이터를 음
- WAS → 웹서버 → 사용자 : 이 데이터를 다시 웹 서버로 전달해 사용자에게 도달하게 함
데이터 사용을 위해 응용 시스템을 통해 데이터 베이스 관리 시스템에 접근하는 기술
SQL Mapping
프로그래밍 코드 내 SQL을 직접 입력하여 DBMS의 데이터에 접속하는 기술
(1) JDBC(Java Database Connectivity)
-1997년 썬 마이크로시스템에서 출시, JAVA 언어로 다양한 종류의 DB 접속, SQL문을 수행 표준 API
-접속하려는 DBMS에 대한 드라이버가 필요
-동적 SQL의 API
(2) ODBC(Open Database Connectivity)
-1992년 MS에서 출시, 데이터베이스에 접근하기 위한 표준 개방형 API로 개발 언어에 관계없이 사용 가능
-ODBC도 접속하려는 DMBS에 맞는 드라이버가 필요하지만, 접속하려는 DBMS의 인터페이스를 알지 못하더라도 ODBC 문장을 사용해 SQL을 작성하면 ODBC에 포함된 드라이버 관리자가 해당 DBMS의 인터페이스에 맞게 연결
- DBMS의 종류를 몰라도 됨
(3) MyBatis
- 동적 SQL의 예로 JDBC 를 간소화함
JDBC로 데이터베이스에 접속하려면 다양한 메서드를 호출하고 해제해야 하는데, MyBatis는 이를 간소화했고 접속 기능을 더욱 강화함.
- SQL 매핑 기반 오픈소스 접속 프레임워크
- XML 파일 생성
- SQL Mapper를 통해 자바의 메서드와 SQL을 맵핑하여 실행
정적/내장 SQL vs 동적 SQL
정적 SQL(Static SQL) SQL문을 변수에 담지 않고 코드상에서 섞어서 기술 |
동적 SQL(Dynamic SQL) SQL구문을 동전 변경, 처리 |
|
SQL 구성 | 커서(Cursor)를 통한 정적 처리 | 문자열(String) 변수에 담아 동적 처리 |
개발 패턴 | 커서의 범위 안에서 반복문을 활용해 SQL 작성 | NVL 함수를 사용할 필요없이 로직을 통해 SQL 작성 다양한 조건을 추가하여 유연한 개발이 가능 쿼리문의 일부, 전부 입력 받아 실행 가능 |
실행 속도 | 빠름 | 느림 |
사전 검사 | 가능 | 불가능 → SQL 변형 위험 |
1.2.3. 새로운 언어 개발
Orcle PL/SQL (이전 발행글 참고)
[정보처리기사]3.데이터베이스 구축/SQL 활용/절차형 SQL
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]3.데이터베이스 구축/SQL 활용/쿼리성능 최적화 (0) | 2022.06.18 |
---|---|
[정보처리기사]3.데이터베이스 구축/SQL 활용/ORM(Object-Relational Mapping) (0) | 2022.06.17 |
[정보처리기사]3.데이터베이스 구축/SQL 활용/절차형 SQL (0) | 2022.06.15 |
[정보처리기사]3.데이터베이스 구축/SQL응용/조인, 집합연산 (0) | 2022.06.14 |
[정보처리기사]3.데이터베이스 구축/SQL응용/DML:SELECT , WHERE (0) | 2022.06.13 |