전체 글

전체 글

    DynamicSQL와 StaticSQL의 차이

    Static SQL이란, 어떻게 데이터베이스에 접근할지가 미리 정의되는 형태의 SQL으로, SQL 구문이 정적으로 컴파일 시점에 정의되기 때문에 precompile시 Syntax, Sematics체크가 가능하다. Dynamic SQL이란, 런타임에서 사용자의 입력 값에 따라 동적으로 SQL 구문을 생성하여 실행하는 방식의 SQL로, 동적으로 처리하기 위해 문자열 변수를 활용하고 런타임 시 구문이 확정된다는 특징을 가지고 있다. Static SQL과 달리 런타임 시에 사용자로부터 SQL문의 일부 혹은 전체를 입력 받아 실행할 수 있기 때문에 precompile시 Syntax, Sematics체크가 불가능하고 바인드 변수를 사용할 수 있다는 특징을 가지고 있다. 각 방식은 서로 다른 장단점을 가지고 있다. ..

    오라클의 조인 타입 / 표준 조인과 비표준 조인의 차이점

    0. 조인의 정의 및 개요 조인은 두 개 이상의 테이블을 합치는 테이블 단위 연산으로 표준 조인과 비표준 조인으로 크게 나뉜다. 표준 조인은 서로 다른 DBMS를 통일하고자 ANSI/ISO에서 제정한 표준 SQL의 조인으로 Inner join과 Left join과 Right join과 Full joind이 표준 조인이 존재한다. 이외의 조인은 비표준 조인이다. 각 조인마다 특성이 다르기 때문에 이에 대해서 정리해보고자 한다. 1. 조인의 종류 1. Equi-joins (등가 조인) // 비표준 조인 조인 조건에 “=”연산을 포함하는 조인으로, 조건이 정확히 일치하는 행들을 연결하는 조인이다. Cartesian Product를 통해 만들어진 릴레이션 중 실제 있는 것만 필터링한 것과 같다. 2. Self ..

    오라클의 데이터 타입 VS MySQL의 데이터 타입

    데이터 타입은 크게 문자형, 숫자형, 날짜형, 이진형 데이터로 나눌 수 있다. MySQL과 오라클의 데이터 타입은 표현하는 데이터는 유사하지만 데이터 크기와 등 디테일이 조금씩 다르다. 아래에서 데이터의 카테고리를 바탕으로 그룹을 나누고 그 그룹 내에서도 데이터 타입을 소분하여 Oracle과 MySQL의 데이터 타입을 비교해보고자 한다. 1. 문자형 데이터 타입 문자형 데이터는 크게 고정 길이 데이터 타입과 가변 길이 데이터 타입과 대용량 텍스트 데이터 타입으로 나눌 수 있다. 1-1. 고정 길이 데이터 타입 : 문자형 데이터를 저장하는 데이터 타입, 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다. - Oracle / CHAR(n) 최대 2000byte - MySQL / CHAR(..

    와일드카드(like)기반 검색 / 강점 및 약점 / 주의점

    1. 와일드 카드란? 와일드 카드는 WHERE 절에서 와일드 카드 문자와 함께 사용되는 연산으로, 다양한 조합을 이용하여 패턴에 맞는 문자열을 찾는데에 사용될 수 있다. 와일드 카드는 정규형과 같이 정확한 값을 직접 제공하는 것이 아닌, 특정 패턴을 제공하여 패턴에 맞는 레코드들을 확인할 수 있다는 장점이 있다. 예를 들어서 a로 시작하는 문자열 패턴을 갖는 레코드를 검색하고 싶다면, 일반 WHERE 절에서 불가능하지만, 와일드 카드를 이용하여 WHERE XXXX LIKE ‘a%’로 검색하면 원하는 결과를 얻다. 2. 와일드 카드의 장점과 약점 / 주의점 와일드 카드는 패턴을 검색할 수 있다는 장점이 있지만, 이 패턴을 찾는 과정에서 리소스가 많이 필요하다는 단점이 존재한다. 일반적인 검색에 비해 오래걸..

    MySQL 인덱스 종류 / 스토리지엔진과의 연관성

    1. B+Tree MySQL의 대표적인 스토리지 엔진인 InnoDB의 기본 인덱스 타입으로, 직선으로의 탐색이 아닌 트리의 탐색으로 평균적으로 log(N)의 시간안에 참조가 가능하다는 장점이 있다. 하지만 트리이기 때문에 연속적인 값을 검색하는 range search를 위해서는 double linked list를 활용하는 등 추가적인 자료구조 및 연산이 필요하고 skew가 발생하면 효율이 떨어진다는 단점이 존재한다. 트리의 모든 노드가 레코드인 B Tree와는 다르게, 모든 레코드가 맨 하단 노드에 정렬되어 있고, 키들만이 내부 블록에 저장되는 형태로, 블록 지향적인 검색을 효율적으로 할 수 있다. 2. Hash Index Memory Engine의 기본 인덱스 타입으로, 해쉬 테이블을 이용하여 O(1)..

    1.트랜잭션의 4대 특징, ACID

    0. 트랜잭션이란? / 트랜잭션의 4대 특징 ACID란? 트랜잭션이란 DBMS (DB) 에서 데이터에 대한 하나의 논리적 실행단계를 의미한다. 여기서 트랜잭션의 4대 특징이란 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질으로, ACID (Atomicity[원자성] / Consistency[일관성] / Isolation[고립성] / Durability[지속성])로 표현된다. 은행과 같이 트랜잭션의 수행이 안전하게 수행됨을 보장해야 하는 시스템에 주로 사용되며, 각 특성들은 다음과 같은 의미를 갖는다. 1. Atomicity(원자성) 원자성은 마치 원자와 같이 데이터 베이스 연산들이 나눌 수도, 줄일 수 없는 하나의 유닛으로써 취급됨을 의미하는데, 모든 연산이 완전하게 적용되거나 아무것도 적용되지 ..