자격증/정보처리기사 📌 데이터 입, 출력 구현 - 데이터 입, 출력/절차형 SQL
  • 728x90
    반응형

     

     

    목차

       

      데이터 입/출력의 개요

      📌 데이터 입/출력은 소프트웨어의 기능 구현을 위해 데이터베이스에 데이터를 입력하거나 데이터베이스의 데이터를 출력하는 작업을 의미한다.

       

      • 데이터 입/출력은 단순 입력과 출력뿐만 아니라 데이터를 조작하는 모든 행위를 의미하며, 이와 같은 작업을 위해 SQL(Structured Query Language)을 사용한다.
      • 데이터 입/출력을 소프트웨어에 구현하기 위해 개발 코드 내에 SQL 코드를 삽입하거나, 객체와 데이터를 연결하는 것을 데이터 접속(Data Mapping)이라고 한다.
      • SQL을 통한 데이터베이스의 조작을 수행할 때 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 트랜잭션(Transaction)이라고 한다.

       

       

      SQL (Structured Query Language)

      📌 SQL은 1974년 IBM 연구소에서 개발한 SEQUEL에서 유래한다. 국제표준 데이터베이스 언어로, 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택하고 있다.

       

      • 관계형 데이터베이스(RDB, Relational DataBase)는 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스이다.
      • 관계대수와 관계해석을 기초로 한 혼합 데이터 언어이다.
      • 질의어지만 질의 기능만 있는 것이 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다.
      • SQL은 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분된다.
        • 데이터 정의어(DDL: Data Define Language) : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제 할 때 사용하는 언어이다.
        • 데이터 조작어(DML : Data Manipulation Language) : 데이터베이스 사용자가 응용프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어이다.
        • 데이터 제어어(DCL : Data Control Language) : 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용되는 언어이다.

       

      💡 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이고 관계해석은 관계 데이터의 연산을 표현하는 방법으로 원하는 정보를 정의할 때는 계산 수식을 사용한다.

       

       

       

      데이터 접속 (Data Mapping)

      📌 데이터 접속은 소프트웨어의 기능 구현을 위해 프로그래밍 코드와 데이터베이스의 데이터를 연결(Mapping)하는 것을 말하며, 관련 기술로 SQL Mapping과 ORM이 있다.

       

      • SQL Mapping : 프로그래밍 코드 내에 SQL을 직접 입력하여 DBMS의 데이터에 접속하는 기술로, 관련 프레임워크에는 JDBC, ODBC, MyBatis 등이 있다.
      • ORM(Oblject-Relational Mapping) : 객체지향 프로그래밍의 객체(Object)와 관계형(Relational) 데이터베이스의 데이터를 연결(Mapping)하는 기술로, 관련 프레임 워크에는 JPA, Hibernate, Django 등이 있다.

       

      💡 JDBC(Java Database Connectivity) : Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다.
      JDBC는 Java 애플리케이션에서 데이터베이스에 접근하기 위해 JDBC API를 사용하여 데이터베이스에 연동할 수 있으며, 데이터베이스에서 자료를 쿼리(Query)하거나 업데이트하는 방법을 제공한다.

      💡 ODBC(Open Database Connectivity) : 어떤 응용프로그램을 사용하는지에 관계없이, 데이터베이스를 자유롭게 사용하기 위하여 MS사에서 만든 응용프로그램의 표준방법을 말한다. DBMS에 관계없이 어떤 응용 프로그램에서나 모두 접근하여 사용할 수 있도록 하기 위하여, 응용 프로그램과 DBMS 중간에 데이터베이스 처리 프로그램을 두어 이를 가능하게 한다.

      💡 MyBatis : 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프래임워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거한다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있다.

      💡 JPA(Java Peristence API) : 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다.

      💡 Hibernate : JPA 인터페이스를 구현한 대표적인 오픈 소스

      💡 Django : 파이썬으로 만들어진 무료 오픈 소스 웹 애플리케이션 프레임워크(Web application framework)이다.

       

       

       

      트랜잭션 (Transaction)

      📌 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 생되어야 할 일련의 연산들을 의미한다.

       

      • 트랜잭션을 제어하기 위해서 사용하는 명령어를 TCL(Transaction Control Language)이라고 하며, TCL의 종류에는 COMMIT, ROLLBACK, SAVEPOINT가 있다.
        • COMMIT : 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영하는 명령어
        • ROLLBACK : 하나의 트랜잭션 처리가 비정상으로 종료되어 데이터베이스의 일관성이 깨졌을 때 트랜잭션이 향한 모든 변경 작업을 취소하고 이전 상태로 되돌리는연산
        • SAVEPOINT(=CHECKPOINT)  : 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정하는 명령어, SAVEPOINT로 저장점을 지정해 두면 해당 위치까지만 ROLLBACK을 수행하여 저장점 이전에 수행한 작업에는 영향을 주지 않고 저장점 이후에 수행한 작업만을 취소하고 이전 상태로 되돌릴 수 있다.

       

       

      절차형 SQL의 개요

      📌 절차형 SQL은 C, JAVA 등의 프로그래밍 언어와 같이 연속적인 실행이나 분기, 반복 등의 제어가 가능한 SQL을 의미한다. DBMS 벤더 별로 PL(Procedural Language)/SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공하고 있다.

       

      • 절차형 SQL은 일번적인 프로그래밍 언어에 비해 효율은 떨어지지만 단일 SQL 문장으로 처리하기 어려운 연속적인 작업들을 처리하는데 적합하다.
      • 절차형 SQL을 활용하여 다양한 기능을 수행하는 저장 모듈을 생성할 수 있다.
      • 절차형 SQL은 DBMS 엔진에서 직접 실행되기 때문에 입/출력 패킷이 적은 편이다.
      • BEGIN END 형식으로 작성되는 블록(Block)구조로 되어 있기 때문에 기능별 모듈화가 가능하다.
      • 절차형 SQL의 종류에는 프로시저, 트리거, 사용자 정의 함수가 있다.
        • 프로시저(Procedure) : 특정 기능을 수행하는 일종의 트랜잭션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업을 수행한다.
        • 트리거(Trigger) : 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트(Event)가 발생할 때마다 관련 작업이 자동으로 수행된다.
        • 사용자 정의 함수 : 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하며, 종료 시 예약어 Return을 사용하여 처리 결과를 단일 값으로 반환한다.

       

      절차형 SQL의 테스트와 디버깅

      📌 절차형 SQL은 디버깅을 통해 기능의 적합성 여부를 검증하고, 실행을 통해 결과를 확인하는 테스트 과정을 수행한다.

       

      • 절차형 SQL은 테스트 전에 생성을 통해 구문 오류(Syntax Error)나 참조 오류의 존재 여부를 확인한다.
      • 많은 코드로 구성된 절차형 SQL의 특성상 오류 및 경고 메시지가 상세히 출력되지 않으므로 SHOW 명령어를 통해 내용을 확인하고 문제를 수정한다.
      • 정상적으로 생성된 절차형 SQL은 디버깅을 통해 로직을 검증하고, 결과를 통해 최종적으로 확인한다.
      • 절차형 SQL의 디버깅은 실제로 데이터베이스에 변화를 줄 수 있는 삽입 및 변경 관련 SQL문을 주석으로 처리하고, 출력문을 이용하여 화면에 출력하여 확인한다.

       

      💡 SHOW는 데이터베이스 목록이나, 테이블 목록 등 다양한 정보를 보기 원할 때 사용하는 명령어이다.

      💡 테스트와 디버깅의 목적 : 테스트(Test)를 통해 오류를 발견한 후 디버깅(Debugging)을 통해 오류가 발생한 소스 코드를 추적 하며 수정한다.

      💡 구문 오류(Syntax Error) : 구문 오류란 잘못된 문법으로 작성된 SQL문을 실행하면 출력되는 오류를 말한다.

       

       

       

      쿼리 성능 최적화

      📌 쿼리 성능 최적화는 데이터 입/출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것이다.

       

      • 쿼리 성능을 최적화하기 전에 성능 측정 도구인 APM을 사용하여 최적화 할 쿼리를 선정해야 한다.
      • 최적화 할 쿼리에 대해 옵티마이저가 수립한 실행 계획을 검토하고 SQL 코드와 인덱스를 재구성한다.

       

      💡 SQL을 통해 데이터베이스에 정보를 요청하는 것을 질의 또는 쿼리라고 한다.

      💡 APM(Application Performance Management/Monitoring) : APM은 애플리케이션의 성능 관리를 위해 접속자, 지원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구이다.

      💡 옵티마이저(Optimizer) : 옵티마이저는 DBMS에 내장되어 작성된 SQL이 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈이다.

       

       

       

       

      728x90
      반응형
    상단으로