일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 트라이
- 그리디
- ERD
- 그래프 탐색
- Prisma
- Github
- Next
- ccw 알고리즘
- JavaScript
- 백준 9527번
- 이분 탐색
- 게임 서버 아키텍처
- Keys
- html5
- pm2
- string
- vector insert
- PROJECT
- MongoDB
- 자바스크립트
- localstorage
- Express.js
- branch
- router
- insomnia
- DP
- MySQL
- HTTP
- map
- trie
Archives
- Today
- Total
dh_0e
[Database] SQL 확장 본문
SQL procedural extensions
- SQL 표준은 SQL에 절차적인 확장을 지원하며 이를 SQL/PSM이라 하며 사용자는 이를 이용하여 데이터 베이스의 임의 연산을 수행하는 procedure(or function)를 개발할 수 있음
External Language Functions/Procedures
- SQL 표준은 함수나 procedure를 외부 언어를 사용하여 개발할 수 있게 함
- 외부언어를 사용하여 함수/procedure를 개발하는 경우 DBS 보안에 문제가 발생할 수 있음
- 사용자가 작성한 프로그램의 오류가 DBS의 오류가 되어 심각한 문제를 야기할 수 있음
- 즉 외부 언어를 사용하는 함수는 효율적으로 실행되어 성능향상은 기대할 수 있지만, 시스템 보안 문제로 잘 사용 X
Security Issue
- 보안 이슈를 해결하는 방식은 다음과 같다
- Use sandbox techniques: 자바나 C#과 같이 안전한 언어로 외부 함수를 작성하는 방법
- Run external language functions/procedures in a separate process with no access to the database process' memory: 독립된 프로세스로 사용자 함수를 실행하고 그 결과를 IPC를 이용하여 주고받는 방식
- IPC 방식에는 Shared memory(공유 메모리), Message(메시지), Pipe(파이프), Signal(신호) 등이 있음
Stored procedures
- DBS이 제공하는 보편화된 기능으로, 개발자는 DB 비즈니스 로직 연산을 SQL 확장 방식(SQL/PSM)으로 저장 프로시저를 개발하고 일반 사용자가 필요시에 이를 호출하여 수행
PL/SQL
- PL/SQL은 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어이다
- 쿼리문은 Delcare, body, exception 3 block으로 이루어져 있음
Cursor
- Select 문장이 하나 이상의 튜플을 반환하는 경우, 사용자는 커서를 사용해야 함
- 커서를 사용하는 5가지 단계
- 1. Select 문장이 반환하는 속성을 저장하는 변수를 선언
- 2. 커서 Declare
- 3. 커서 Open
- 4. 커서로부터 튜플을 Fetch
- 5. 커서 Close
Procedure VS Function
항목 | Procedure (프로시저) | Function (함수) |
목적 | 작업 수행 (처리 중심) | 결과 반환 (값 중심) |
반환값 | ❌ RETURN문 없음 (단순 종료용) | ✅ 반드시 하나의 값 반환 (RETURN 필수) |
호출 위치 | SQL 문 안에서는 직접 호출 불가 | SQL 문 안에서도 호출 가능 (SELECT, WHERE 등) |
사용 예 | 데이터 처리, INSERT/UPDATE, 트리거 내 로직 등 | 계산, 포맷 처리, 조건 로직 등 |
파라미터 타입 | IN, OUT, IN OUT 모두 가능 | 보통 IN만 씀 (OUT은 거의 안 씀) |
호출 방식 예시 | EXEC myProc(100, 'A'); | SELECT myFunc(100) FROM dual; |
Procedure: 뭔가를 "해라" (명령)
Function: 뭔가를 "계산해라, 그리고 결과를 줘라" (값 반환)
'Database' 카테고리의 다른 글
[Database] DB 설계 이론 (1) | 2025.06.10 |
---|---|
[Database] Entity-Relationship Data Model (0) | 2025.06.02 |
[Database] 응용 개발 (0) | 2025.05.20 |
[Database] 오라클 실습 II (0) | 2025.05.20 |
[Database] 데이터베이스 시스템 주요 기능 (0) | 2025.05.19 |