개발

Oracle Stored Procedure에 대하여

piece5 2023. 11. 30. 16:48

Oracle Stored Procedure란?

오라클 저장 프로시저(Stored Procedure)는 데이터베이스 내에 저장된 미리 작성된 프로시저나 함수로, PL/SQL(Procedural Language/Structured Query Language)이라는 오라클의 프로그래밍 언어를 사용하여 작성됩니다. 이러한 저장 프로시저는 데이터베이스 내에서 실행되며, 자주 사용되는 작업이나 비즈니스 로직을 저장하여 호출할 수 있도록 도와줍니다.

저장 프로시저의 주요 특징과 기능:

  1. 재사용성: 반복적으로 사용되는 작업이나 쿼리를 프로시저로 작성하여 여러 곳에서 재사용할 수 있습니다.
  2. 코드의 보안성 강화: 사용자가 직접 접근하여 수정할 수 없으므로 코드의 보안성이 높아집니다.
  3. 성능 향상: 데이터베이스 내부에서 실행되기 때문에 네트워크 트래픽이 감소하고, 쿼리 최적화를 통해 성능이 향상됩니다.
  4. 트랜잭션 관리: 저장 프로시저 안에서 트랜잭션을 관리하고 제어할 수 있어 데이터 일관성을 유지할 수 있습니다.

저장 프로시저는 보통 데이터 조작, 업데이트, 삭제 등의 작업을 수행하거나 비즈니스 로직을 처리하는 데 사용됩니다. PL/SQL을 이용하여 작성되며, 데이터베이스에 저장되어 필요할 때마다 호출하여 실행됩니다.

 

ex)

재고 알림 프로시저 작성:

  • 재고 수량이 일정 수준 이하로 떨어질 때 관리자에게 알림을 보내는 프로시저를 작성할 수 있습니다. 이 프로시저는 재고 수량을 확인하고 일정 수준 이하인 제품을 관리자에게 알림 메시지를 보내거나 로그에 기록할 수 있습니다.

 

저장 프로시저의 장단점

장점:

  1. 보안 강화: 데이터베이스 내에 로직을 저장함으로써 보안성이 높아질 수 있습니다. 외부에서 직접적인 테이블 접근을 막고 저장 프로시저를 통한 접근만을 허용할 수 있습니다.
  2. 성능 향상: 일부 CRUD 작업은 저장 프로시저를 통해 데이터베이스 내에서 빠르게 실행될 수 있습니다. 특히 대량의 데이터를 처리해야 할 때 성능면에서 이점을 얻을 수 있습니다.
  3. 중복 코드 방지: 비슷한 로직이 여러 번 반복되는 것을 방지하고 데이터베이스 내에 중앙 집중적으로 유지할 수 있습니다.

단점:

  1. 유지 보수 어려움: 저장 프로시저가 복잡해질수록 유지보수가 어려워질 수 있습니다. 특히 로직의 변경이 필요할 때에는 데이터베이스에 직접적인 접근이 필요하고, 이는 개발자들에게 추가적인 부담을 줄 수 있습니다.
  2. 가독성과 이식성: 일부 개발자들은 데이터베이스에 로직을 저장하는 것이 코드의 가독성과 이식성을 해치는 것으로 보기도 합니다. 특히 저장 프로시저 언어에 대한 익숙함이 없는 경우에는 코드 이해가 어려울 수 있습니다.

따라서, CRUD 작업을 저장 프로시저로 구현할지 여부는 프로젝트의 특성과 개발자들의 선호도에 따라 다를 수 있습니다. 일반적으로 CRUD 작업 중에서 성능상 이점이 크거나 보안적인 측면에서 중요한 작업에 대해 저장 프로시저를 활용하는 것이 좋을 수 있습니다.하지만 모든 CRUD 작업을 저장 프로시저로 옮기는 것이 항상 최선의 선택은 아닙니다.

 

Sequelize와 저장프로시저

 

현재 Sequelize에서는 저장 프로시저를 직접 호출하는 기능을 공식적으로 지원하지 않습니다. 이는 Sequelize가 데이터베이스와의 ORM 매핑을 위해 객체와 데이터베이스 테이블 간의 매핑을 중심으로 설계되어 있기 때문입니다.

따라서 Sequelize를 사용하여 직접 저장 프로시저를 호출하는 것은 기본 기능으로 제공되지 않습니다. 그러나 Sequelize를 사용하는 동안 저장 프로시저를 호출해야 하는 경우, Sequelize의 query 메서드를 통해 직접 SQL 쿼리를 실행하여 저장 프로시저를 호출할 수 있습니다. 하지만 이 경우에는 Sequelize가 제공하는 모델과의 직접적인 매핑이 이루어지지 않습니다.