본문 바로가기

Tech/Database32

Transaction의 이해 - PostgreSQL 트랜잭션이란? 아주 심플하게 보통 일의 최소 단위를 트랜잭션이라고 정의한다. 즉, 여러 개의 수정작업이 하나의 작업처럼 전부 처리되거나 아예 전부 처리가 안 되도록 하기 위한 것이다. 계좌이체를 할 때, 현금잔고를 확인하고 이체 비밀번호와 보안카드 코드값을 입력받아 최종 이체가 완료되는 순간까지를 트랜잭션 단위라고 할 수 있다. 트랜잭션은 다음과 같은 특징을 가진다. 원자성(Atomicity) : 더 이상 분해 불가능한 최소한의 업무단위를 말한다.일관성(Consistency) : 트랜잭션이 실행을 성공적으로 완료했다면, 언제나 일관성 있는 데이터베이스 상태로 변환한다. 격리성(Isolation) : 트랜잭션이 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없다.영속성(Durabilit.. 2018. 7. 4.
PostgreSQL - greatest, least, SIGN함수 PostgreSQL의 최대값, 최소값을 구하는 함수는 greatest, least 이다. 다른 dbms의 MAX함수나 MIN함수처럼 함수명이 직관적이긴 한데, 굳이 이렇게 네이밍을 했어야 하나하는 생각은 든다.정정 : 다시 확인해봤는데, postgreSQL에서 MAX, MIN과 GREATEST, LEAST의 사용법은 엄연히 다르다. MAX, MIN은 레코드중에서 최대/최소값을 구하는 것이고, GREATEST, LEAST는 여러 컬럼 값 중에서 최대/최소값을 구하는 것이다. --3을 반환한다. select greatest(1, 2, 3) ; --quart_sales의 분기2 레코드의 최대/최소값을 반환한다. select MAX(분기2), MIN(분기2) from quart_sales; SIGN 함수는 매개.. 2018. 7. 3.
PostgreSQL - COALESCE 함수 활용 쿼리를 만들 때, null 값을 특정 데이터로 가공해서 추출이 필요할 때가 있다. 뿐만 아니라, application layer에서 데이터가 아닌 null 을 리턴할 때, NullPointerException을 초래할 수도 있고, 집계 쿼리를 만들 때도, Null 데이터의 연산은 Null을 반환하므로, 데이터 변환이 필요하다. PostgreSQL에는 Oracle 의 nvl 함수와 같이 COALESCE라는 함수가 있다. 아래와 같은 데이터가 있다. CREATE TABLE purchase_log ( purchase_id varchar(255) , amount integer , coupon integer ); INSERT INTO purchase_log VALUES ('10001', 3280, NULL) , .. 2018. 7. 3.
PostgreSQL - 도메인 추출 쿼리 로그를 저장한 테이블에서 도메인만 추출해야할 때가 있다.access_log 테이블에 아래와 같은 데이터가 있다고 가정하자. CREATE TABLE access_log ( stamp varchar(255) , referrer text , url text ); INSERT INTO access_log VALUES ('2017-08-26 12:02:00', 'http://www.korea.com/path1/index.php?k1=v1&k2=v2#Ref1', 'http://www.augustine.com/video/detail?id=001') , ('2017-08-26 12:02:01', 'http://www.germany.net/path1/index.php?k1=v1&k2=v2#Ref1', 'http://ww.. 2018. 7. 3.
반응형