1. DBMS 접속의 개요
- 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것
- 응용 시스템은 사용자로부터 매개 변수를 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할을 수행
- 인터넷을 통해 구동되는 웹 응용 프로그램은 웹 응용 시스템을 통해 DBMS에 접근
- 웹 응용 시스템
- 웹 서버와 웹 애플리케이션 서버(WAS)로 구성
- 웹 서버 : 웹 페이지, 저용량 자쵸 등의 처리를 담당
- WAS : DBMS와 통신하여 대용량 파일이나 복잡한 로직 등의 처리를 담당
- 서비스 규모가 작은 경우 웹 서버와 웹 애플리케이션 서버를 통합하여 하나의 서버만으로 운용
- 웹 응용 시스템의 구조
- 사용자는 웹 서버에 접속하여 데이터를 주고받음
- 웹 서버는 많은 수의 서비스 요청을 처리하기 때문에 사용자가 대용량의 데이터를 요청하면 직접 처리하지 않고 WAS에게 해당 요청을 전달
- WAS는 수신한 요청을 트랜잭션 언어로 변환한 후 DBMS에 전달하여 데이터를 받음
- 받은 데이터는 처음 요청한 웹 서버로 다시 전달되어 사용자에게까지 도달
- 웹 서버와 웹 애플리케이션 서버(WAS)로 구성
- 웹 응용 시스템
2. DBMS 접속 기술
- DBMS에 접근하기 위해 사용하는 API, API의 사용을 편리하게 도와주는 프레임워크 등
- API : 응용 프로그램 개발 시 운영 체제, DBMS 등을 이용할 수 있도록 규칙 등에 대해 정의해놓은 인터페이스
- 프레임워크 : 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체
- DBMS 접속 기술의 종류
- JDBC Java DateBase Connectivity
- Java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL문을 수행할 때 사용되는 표준 API
- 1997년 2월 썬 마이크로시스템에서 출시
- Java SE (Standard Edition)에 포함되어 있음
- Java SE
- Java 표준안
- Java의 문법과 기능을 정의하는 명세서
- JDK에 포함되어 사용
- JDBC의 기능들을 정의하는 클래스 파일을 포함
- Java SE
- JDBC 클래스는 java, sql, javax, sql에 포함되어 있음
- 접속하려는 DBMS에 대한 드라이버가 필요
- ODBC Open DataBase Connectivity
- 데이터베이스에 접근하기 위한 표준 개방형 API
- 개발 언어에 관계없이 사용할 수 있음
- 1992년 9월 마이크로스프트에서 출시
- 프로그램 내 ODBC 문장을 사용하여 MS-Access, DBase, DB2, Excel, Text 등 다양한 데이터베이스에 접근 가능
- 접속하려는 DBMS에 맞는 드라이버가 필요하지만 접속하려는 DBMS의 인터페이스를 알지 못하더라도 ODBC 문장을 사용하여 SQL을 작성하면 ODBC에 포함된 드라이버 관리자가 해당 DBMS의 인터페이스에 맞게 연결해주므로 DBMS의 종류를 몰라도 됨
- MyBatis
- JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크
- SQL Mapping : SQL로 호출되는 테이블이나 열 데이터를 개발하려는 언어의 객체에 맞도록 변환하여 연결하는 것
- JDBC에 비해 간소화된 메소드와 강화된 접속 기능
- SQL 문장을 분리하여 XML 파일을 만들고 Mapping을 통해 SQL 실행
- SQL을 거의 그대로 사용할 수 있어 SQL 친화적인 국내 환경에 적합하여 많이 사용
- JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크
- JDBC Java DateBase Connectivity
3. 동적 SQL (Dynamic SQL)
- 개발 언어에 삽입되는 SQL 코드를 문자열 변수에 넣어 처리하는 것
- 조건에 따라 SQL 구문을 동적으로 변경하여 처리 가능
- 사용자로부터 SQL문의 일부 또는 전부를 입력받아 실행할 수 있음
- 값이 입력되지 않을 경우 사용하는 NVL 함수를 사용할 필요가 있음
- NVL 함수
- NVL(A, B) 형태의 함수
- A가 NULL 인 경우 B를 반환하고 아니면 A를 반환
- 동적 SQL에서는 원하는 조건에 따라 자유롭게 SQL문을 바꿀 수 있으므로 NVL 함수 없이 SQL문을 구성하는 것이 가
- NVL 함수
- 응용 프로그램 수행 시 SQL이 변형될 수 있으므로 프리컴파일할 때 구문 분석, 접근 권한 확인 등을 할 수 없음
- 프리컴 파일 Precompile
- 고급언어를 기계어로 번역하는 컴파일 Compile 전에 수행하는 작업
- 필요한 라이브러리를 불러오거나 코드에 삽입된 SQL문을 DB와 연결하는 작업을 수행
- 프리컴 파일 Precompile
- 정적 SQL에 비해 속도가 느리지만, 상황에 따라 다양한 조건을 첨가하는 등 유연한 개발이 가능
정적 SQL (Static SQL) | 동적 SQL (Dynamic SQL) | |
SQL 구성 | 커서 Cursor를 통한 정적 처리 * 커서 Cursor : SQL문의 실행 결과로 반환된 복수 개의 튜플들에 접근할 수 있도록 해주는 기능 |
문자열 변수에 담아 동적 처리 |
개발 패턴 | 커서의 범위 안에서 반복문을 활용하여 SQL 작성 | NVL 함수 없이 로직을 통해 SQL 작성 |
실행 속도 | 빠름 | 느림 |
사전 검사 | 가능 | 불가능 |
4. ORM Object-Relational Mapping의 개요
- 객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터를 연결하는 기술
- 객체지향 프로그래밍에서 사용할 수 있는 가상의 객체지향 데이터베이스를 만들어 프로그래밍 코드와 데이터를 연결
- ORM의 생성된 가상의 객체지향 데이터베이스는 프로그래밍 코드 또는 데이터베이스와 독립적이므로 재사용 및 유지보수가 용이
- SQL 코드를 직접 입력하지 않고 선언문이나 할당 같은 부수적인 코드가 생략되기 때문에 직관적이고 간단하게 데이터 조작 가능
5. 쿼리 성능 최적화의 개요
- 데이터 입출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것
- 쿼리 성능을 최적화하기 전에 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리를 선정
- 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하고 SQL 코드와 인덱스를 재구성
RBO (Rule Based Optimizer) | CBO (Cost Based Optimizer) | |
규칙 기반 옵티마이저 | 비용 기반 옵티마이저 | |
최적화 기준 | 규칙에 정의된 우선 순위 | 액세스 비용 |
성능 기준 | 개발자의 SQL숙련도 | 옵티마이저의 예측 성능 |
특징 | 실행 계획 예측이 쉬움 | 성능 통계치 정보 활용, 예측이 복잡 |
고려사항 | 개발자의 규칙 이해도, 규칙의 효율성 | 비용 산출 공식의 정확성 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 데이터 전환 - 091. 데이터 전환 방안 (0) | 2025.02.17 |
---|---|
[정보처리기사 필기] 데이터 전환 - 090. 데이터 전환 (0) | 2025.02.17 |
[정보처리기사 필기] SQL 활용 - 088. 사용자 정의 함수 (0) | 2025.02.16 |
[정보처리기사 필기] SQL 활용 - 087. 트리거 Trigger (0) | 2025.02.16 |
[정보처리기사 필기] SQL 활용 - 086. 프로시저 Procedure (0) | 2025.02.16 |