Database
데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법
백엔드 유성
2023. 12. 26. 18:41
프로시저와 함수 뷰의 차이점을 설명드리겠습니다.
1. 프로시저
- 프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.
- 비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.
프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다.
2. 함수
- 함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.
- 함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.
- 함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합니다. 예를 들어, 날짜 형식을 변경하거나 숫자 값을 처리하는 데 함수를 사용할 수 있습니다.
- 함수는 데이터베이스 내에서 데이터를 직접 조작하지 않으며, 주로 데이터의 변환 또는 가공에 중점을 두고 있습니다.
함수는 호출 시 미리 작성된 쿼리문으로 계산하여 결과를 return 합니다. 프로시저와는 다르게 데이터를 조작하는 것 보다 쿼리를 미리 작성해서 해당 쿼리의 결과를 return하기 위해서 사용됩니다.
3. 뷰
- 뷰(View)는 함수와 같이 값을 계산하거나 가공하기 위해 사용됩니다.
- 뷰는 return 값으로 가상의 테이블을 제공하는 것이 일반적입니다.
- 함수와 다른점이 있다면 함수는 단일값(스칼라값)을 return 하지만 뷰는 테이블값을 return 한다는 차이점이 있습니다.
- 값이 가공되는 시점에 대해서는 아래 한번 더 언급하겠습니다.
가상의 테이블을 만들어 사용하며, 쿼리 실행 시 실시간으로 데이터를 계산하여 결과를 제공합니다. 미리 계산된 결과를 저장하지 않고, 동적으로 생성합니다.
간단하게 위과 같이 역할을 나눌 수 있고, 각각의 특징과 주의할점을 알아보겠습니다.
1. 프로시저 특징 / 주의할점
- 일반적으로 복잡한 쿼리를 프로시저로 사용하는 만큼 사용 전 테스트 및 커밋 롤백등의 트랜잭션을 올바르게 적용해야 합니다.
- 트랜잭션을 지원합니다.
- 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)
2. 함수 특징 / 주의할점
- 기존 테이블 값을 변경하지 않도록 주의해야합니다.
3. 뷰 특징 / 주의할점
- 가상 테이블을 생성하여 데이터를 표현합니다.
- 뷰를 통한 데이터 변경시 기본 테이블에 영향을 줄 수 있으니 조심해야 합니다.
- 쿼리가 너무 복잡할 경우 부하가 발생할 수 있습니다. (주의)
- 뷰는 return할 가상 테이블을 가지고 있는데 가상테이블에는 "계산된 결과"가 아닌 "계산할 식"을 가지고 있습니다. 뷰가 호출되면 "계산할 식"을 계산하여 "계산된 결과"를 return합니다.
모든 기능이 다 그렇듯 사용하기 전 테스트 및 실행계획을 통해 성능을 미리 테스트 해보시고 사용해주세요.
기능/특징 | 프로시저(Procedure) | 함수(Function) | 뷰(View) |
목적 | 데이터 조작 및 관리 | 값 계산 및 반환 | 데이터 조회 및 가상 테이블 조회 |
반환 값 | 일반적으로 반환값이 없음 | 일반적으로 단일값을 반환 | 일반적으로 테이블을 반환 |
호출 방식 | `CALL` 명령어 사용 | 쿼리 내에서 호출 | 쿼리 내에서 호출 |
변수 사용 | 로컬 변수 및 매개변수 사용 | 로컬 변수 및 매개변수 사용 | 없음 |
데이터 수정 가능 | 가능 | 불가능 | 불가능 |
트랜잭션 관리 | 가능 | 불가능 | 불가능 |
보안 및 권한 관리 | 가능 | 가능 | 가능 |
예시 | 데이터 업데이트, 비즈니스 룰 검증 | 날짜 및 숫자 계산, 문자열 조작 | 복잡한 조회 쿼리 |