바닥코딩

PL/SQL 이란? 본문

데이터 베이스/오라클 PLSQL

PL/SQL 이란?

개발공부개발공부 2021. 2. 25. 14:18

PL/SQL?

 

  sql을 공부하신 분들이라면 다들 아시는 상식이 있을 겁니다. 관계형 데이터베이스 시스템(RDBMS) 에서 사용하는 표 준 언어인 SQL 은 절차형 언어가 아닙니다

 SQL의  DDL/DML/DCL 을 통해 데이터베이스를 정의 조작 제어 하는 것이 가능하지만 SQL은 결국 데이터의 처리 집합 만을 기술할 뿐  어떠한 절차를 걸쳐서 데이터 집합을 얻어야 하는지에대한 절차적 과정을 제공하지는 않습니다.  일반적인 SQL 로직을 작성하면 이 문장의 실행순서는 옵티마이저에 의해 이루어지는데 , 이는 여러가지 데이터베이스 통계를 기초로 실행 게획을 처리하기 때문에 데이터를 일반적으로 빠르게 다루어 주지만 결국 개발자 입장에서는 융통성 있는 데이터 처리는 불가능 합니다.

 이러한 단점을 극복하기 위한 대안으로 대부분의 상용 DBMS 는 절자척으로 작성이 가능한 PL/SQL을 제공합니다.  PL/SQ은 절차적 언어의 특성을 가지고 있기 때문에 원하는 결과, 제약조건, 처리 절차를 개발자가 작성해야 합니다.

 

PL/SQL 의 특징 

  1. 프로그래밍 언어와 데이터 처리의 통합 :  PL/SQL의 본질적은 목적은 데이터 처리를 보다 효울적으로 하는것에 있기 때문에  프로그래밍 언어 처럼 구성을 하지만 SELECT, DELETE, UPDATE, INSERT, MERGE와 같은 일반 SQL 문을 일반적따로 작업없이 사용할 수 있습니다 

 2. 블록 단위 구성 : PL/SQL 모두 블록 구조로 이루어져있습니다. 이 블록 구조는 선언부 , 실행부 , 예외처리 부로 나뉘며  DECLARE - BEGIN - EXCEPTION - END  가 이에 해당합니다.

 3. 순차 처리 지원 : 순차 처리를 지원하는 언어이기 떄문에 IF , LOOP, FOR WHILE 등과 같은 제어문, 반복문의 사용이 가능합니다

 4. 예외처리 지원 : PL/SQL은 강력한 예외처리기능을 가지고 있습니다. 실행중에 정상적인 흐름에 위반되는 상황ㅇ이 발생하면 예외 처리기가 동작하여 이를 처리할 수 있습니다.

 5. 서브프로그램지원 : 서브프로그램은 PL/SQL FUNCTION 과 프로시를 지원합니다 두개의 내용은 나중에 상세히 다른 포스트에서 다루겠습니다

 6. 패키지를 사용한 모듈화를 지원 : 패키지는 연관성을 가지는 타입, 상수, 변수 , 커서, 예외처리, 서브프로그램들을 역어서 하나의 응용 단위로 구성하는 것을 말하는데 PL/SQL은 이를 제공합니다.

 7. 트리거 : 트리거는 데이터 베이스에서 발생하는 이벤트를 처리하는 기능을 제공하며 이벤트 발생 시에 트리거는 자동으로 실행되어 작성된 PL/SQL 로직을 호출합니다.

 8. 객체 지향 프로그래밍 지원 : PL/SQL 은 JAVA ,C++ C# 같은 언어와 같이 객체 타입을 제공합니다.

 9. 다양한 내장 API : 오라클 DBMS 는 수많은 API를 제공하고 있습니다 이들은 패키지나 함수 , 프로시저 등으로 제공이 되는데  PL/SQL을 작성하는데 있어서 요긴하게 사용할 수 있는 내장API를 많이 지원 하고 있습니다.

10. 플랫폼 독립적 : PL/SQL은 어떤 운영체제인것과 별개로 같은 오라클 버전에선 관계없이 수행이 가능합니다.

 

PL/SQL의 필요성에 대해

  위 내용에서는 PL/SQL의 정의와 특징에 대해 알아보았습니다. PL/SQL은 결국 SQL의 단점을 보안하고 프로그래밍을 절차적으로 사용할 수 있으니 PL/SQL을 적극 활용하는 것이 좋은 개발이다? 라는 생각이 들 수 도 있겠지만 그거에 대한 저의 생각은 "글쎄..." 입니다. SQL 대비 PL/SQL은 좀더 비즈니스 로직의 처리 절차를 쉽게 이해할 수 있지만 결국 SQL  처럼 옵티마이저의 데이터 처리 절차 최적화를 받지 못한다는 단점이 있습니다. 빠른 처리속도를 중요하게 생각한다면 PL/SQL은 지양해야하는 것이 맞는 것이죠 그렇지만 SQL만을 사용하여 복잡한 업무를 처리하는 로직을 작성했을 때 그것을 유지보수 하는데에 있어서 발생하는 문제를 간과할 수는 없습니다.

 사실 정답은 모르겠습니다. 정답이 상황에 따라 다르다는게 정확한 답이겠네요. 데이터처리를 하는데 있어서 SQL , PL/SQL,  또는 프로그래밍(JAVA, , C# 등등)의 언어로 처리하던지 방법은 다양하지만 본인이 개발하는데 있어 , 성능을 중요하게 생각한다, 유지보수 환경을 중요하게 생각한다,데이터 안정성을 중요하게 생각한다.  이런 여러 회사의 가치관에 따른 판단이 필요한 것 같습니다. 이런 판단을 효과적으로 하기 위해선 공부ㅜㅜ 밖에 없는듯 하네요, 

 

'데이터 베이스 > 오라클 PLSQL' 카테고리의 다른 글

분기문  (0) 2021.02.25
PL/SQL에서 일반 SQL 실행  (0) 2021.02.25
변수, 상수 선언 방법  (0) 2021.02.25
앵커(%) 의 활용  (0) 2021.02.25
PL/SQL의 기본 구조  (0) 2021.02.25