SQL의 모든 것/SQL의 이론 및 기초 5

실무 ETL

데이터를 추출하고 변환하여 적재한다.ETL, 말 그대로 EXTRACT, TRANSFORM, LOAD의 약자이다. 해석하자면 "추출 후 변환하여 적재한다"이다.필자는 국내 솔루션 기업인 어느 한 기업의 ETL 툴과, APACHE NIFI, SSIS 등을 다루어 봤다.솔직히 말하자면, 어떤 ETL 툴을 써도 완벽하다는 말은 죽어도 입 밖으로 나오지 않는다.다만, 국내외 기업을 떠나서 일정한 비용을 지불하고 사용하는 것이 정신건강에 이롭다는 것만 깨닫게 되었다. 물론, DB 스펙이나 환경에 따라 속도 측면에서는 영향을 받겠지만, UI 혹은 기능적인 측면에서 확연히 차이가 난다. 쉽게 비교하자면 NIFI에서 만들어진 하나의 ETL 프로세스가 솔루션 기업에서 제공하는 ETL 툴에서는 단 3블록이면 끝난다. 하지만..

오라클 WHERE절의 다중연산

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.    저번 포스팅에서는 SQL의 기초 중에서도 아주 기초들을 배웠습니다. 하지만 실무영역에서 배운 내용들을 사용하기엔 2%가 부족합니다.그래서 이번 포스팅에서는 그 2%를 채워볼 예정입니다. 다양한 조건으로 데이터 추출하기 저번 포스팅에서 우린 조건을 검색할 때 WHERE을 사용한다는 것을 배웠습니다. 하지만 모든 조건이 equal(=)은 아닙니다. 유사한 데이터를 찾아야 할 때나 사이의 있는 값들을 추출해야 할 경우들도 있습니다. 그럼 WHERE 절에서 쓸 수 있는 연산자들은 어떤 것들이 있을까요?비교연산자라는 단어를 쓸 수도 있지만 익숙하지 않은 단어는 이해를 돕지 않습니다. 그러므로 예시로 설명하며, 실무에서 가장 많이 쓰이는 ..

오라클 SELECT~GROUP BY

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 데이터 분석가로 사회에 발을 딛은 지 벌써 3년이 되어갑니다. 작은 경험이나마 도움이 되길 바라는 마음으로 본 글을 작성하였습니다. SQL의 기본을 알고 싶어요.SQL을 공부하면서 과연 이런 걸 실무에서 사용할까? 하는 의문보다는 이런 것도 쓰는구나, 어렵겠다 싶었습니다. 경험이 많진 않으나 경험해 본 바, 늘 쓰이는 핵심들이 있더군요. 하지만 그 전에 기초를 알아야겠지요? 이번 포스팅에서는 그 기본만 알려드릴려 합니다. 1. SELECT COLUMN FROM TABLE 가장 쉬운 예시를 들어봅시다. 내가 구매한 쇼핑몰 사이트에서 구매내역을 "조회" 합니다. 이 말은 곧, "내가 구매한 내역(컬럼)을 쇼핑몰(테이블)로 부터 조회(SE..

PL/pgSQL - SQL 프로시저 언어

1. 소개 PL/pgSQL은 PostgreSQL 데이터베이스 시스템에서 로드가능한 프로시저 언어다. PL/pgSQL의 설계 목적은 다음과 같은 특징을 가지는 로드가능한 절차적 언어다. 함수, 프로시져, 트리거를 만들기 위해 사용할 수 있다. SQL 언어에 제어 구조를 추가한다. 복잡한 연산을 할 수 있다. 모든 사용자정의 타입, 함수, 프로시져, 연산자를 상속한다. 서버를 신뢰할 수 있게 정의할 수 있으며, 사용하기 쉽다. 1.1 장점 SQL은 대부분의 DBMS에서 사용되는 질의 언어이다. 쉽긴 하나, 모든 SQL 구문은 데이터베이스 서버에서 반드시 구문마다 개별적으로 실행된다. 다시 말해, 클라이언트 애플리케이션은 데이터베이스 서버에 반드시 쿼리를 개별적으로 보내고, 각 쿼리가 처리될 때까지 기다린 다..

SQL 수행 아키텍처(INSERT, SELECT, UPDATE)

INSERT문 실행 시 내부동작 → SQL문 실행 1. 서버프로세스 ● 구문분석 ○ SQL문의 문법을 확인(키워드 검사) ○ 테이블명, 컬럼명, 데이터 타입 확인(의미 검사) ○ SQL문을 실행한 계정의 권한 확인(권한 검사) ● Shared Pool의 라이브러리 캐시에 해당 쿼리 저장(쿼리 재사용 위해) ● 입력할 데이터를 리두로그버퍼와 DB버퍼캐시에 기록 2. COMMIT 실행 ● 백그라운드 프로세스 LGWR (Log Writer) ○ 리두로그버퍼 데이터 → 리두로그파일로 저장 ○ DB버퍼캐시 상태 변경 (Pinned --> Dirty) ○ Checkpointer가 DBWR에게 데이터 저장 신호 전달 ○ DBWR가 DB버퍼캐시 데이터 --> 데이터파일로 저장 SELECT문 실행 시 내부동작 → SQL..