DB
-
[DB] ETL이란DB 2018. 12. 22. 21:53
ETL은 Extract, Transform, Load 의 앞글자를 딴 용어입니다. 즉 데이터를 추출, 변환, 적재를 한다는 것입니다. 내용은 그렇게 어렵지가 않습니다.예를 들어, calendar라는 테이블에 년/월/일/시/분/초 형태로 각 컬럼이 존재합니다. 이러한 데이터를 사용하여 통계를 내는 어떤 프로그램을 실행하려고 확인 했더니 해당 프로그램은 년월일/시분초 와 같은 컬럼형태를 요구하고 있을 때 작업을 하는 것을 ETL이라 합니다.예시Extract대상이 되는 calendar 테이블에서 년/월/일/시/분/초 형태의 데이터를 전부 추출합니다.Transform추출한 데이터를 요구하는 형태인 년월일/시분초 형태로 변경을 합니다.Load변경이 된 데이터를 새로운 테이블에 적재합니다.요약간단하게 위와 같은 단..
-
[DB] CDC란DB 2018. 12. 22. 21:42
Change Data Capture의 약어로 마지막으로 추출한 이후 변경된 데이터만 골라내는 기술을 의미합니다. 흔히 데이터 백업이나 통합 작업을 할 경우 방대한 데이터를 다뤄야 하는데 원본 소스 데이터 가운데 최근 변경된 데이터들만 골라 다른 시스템으로 옮기게 되면 시스템 로드도 줄이고 전체적인 작업 생산성을 향상시킬 수 있습니다. 특히 한 시스템에 있는 대량의 데이터를 정기적으로 추출해 다른 시스템으로 이동하는 데이터 통합이나 데이터 웨어하우스 업무의 경우 CDC 기술을 이용하면 데이터를 추출, 이동하는 시간을 크게 줄일 수 있습니다. 또한 24시간 운영해야 하는 필수적인 업무 시스템의 경우 CDC 기술을 이용하면 다운타임 없이 실시간 백업과 데이터 통합이 가능합니다.
-
[PostgreSQL] 조회조건 그대로 정렬하기 (Custom order by)DB/PostgreSQL 2018. 7. 28. 23:10
정렬을 사용자가 원하는대로 하길 원하거나, WHERE절에 건 조건 그대로 정렬이 되기를 원할 때, 아래와 같은 방법으로 처리할 수 있습니다. 1. array_position 사용하기PostgreSQL의 버전이 9.5 이상일 경우 array_position 함수를 사용하여 구현할 수 있습니다. SELECT * FROM test WHERE pk IN (1, 3, 4, 6, 2) ORDER BY ARRAY_POSITION(ARRAY[1, 3, 4, 6, 2], pk)위 구문을 사용할 때 주의할 점은 array에 들어가는 데이터 타입과 조회를 하고자 하는 컬럼의 타입이 동일해야 합니다.ARRAY_POSITION(ARRAY[1::bigint, 3::bigint], 1::int) - 에러 array_position..
-
[PostgreSQL] 현재 실행 중인 쿼리 확인 및 쿼리 종료DB/PostgreSQL 2017. 10. 18. 22:56
쿼리를 실행했다가 에러가 발생했다던지 너무 오래걸려 강제종료를 했다던지 등의 행동을 했는데 쿼리가 계속 돌고 있어서 테이블에 대한 transaction lock이 걸린 경우, 실행 중인 쿼리를 종료해야 할 때 유용하게 쓰입니다.현재 실행 중인 쿼리 및 pid 확인SELECT * FROM pg_stat_activity ORDER BY query_start ASC;실행 중인 쿼리 종료SELECT pg_cancel_backend(pid값); -- 성공하면 true, 실패하면 false 반환
-
[PostgresSQL] foreign key (constraint) 걸린 테이블 목록 확인DB/PostgreSQL 2017. 10. 18. 22:52
검색하고자 하는 테이블을 참조하고 있는 테이블 및 컬럼 리스트 확인SELECT kcu.table_name AS child_table, kcu.table_schema AS child_schema, kcu.column_name AS child_column, kcu.constraint_name AS child_constraint FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.co..
-
[PostgreSQL] 중복된 row 중 이전 데이터, 다음 데이터 확인하기DB/PostgreSQL 2017. 2. 22. 15:42
컬럼을 지정한 다음 중복된 데이터라면 그 이전 데이터의 값과 다음 데이터의 값을 확인하려고 할 때 사용할 수 있습니다.테스트 데이터먼저 테스트 대상 테이블입니다.Client | Rate | StartDate|EndDate A | 1000 | 2005-1-1 |2005-12-31 A | 2000 | 2006-1-1 |2006-12-31 A | 3000 | 2007-1-1 |2007-12-31 B | 5000 | 2006-1-1 |2006-12-31 B | 8000 | 2008-1-1 |2008-12-31 C | 2000 | 2006-1-1 |2006-12-31 다음은 원하고자 하는 결과 테이블입니다.Client | Rate | StartDate|EndDate |Pre Rate | Pre StartDate ..
-
[PostgreSQL] window functionDB/PostgreSQL 2017. 2. 22. 15:31
window function은 aggregate function처럼 어떤 계산을 도와줍니다. 하지만 aggregate function의 결과가 하나의 row로 보여진다면, 이 window function은 row마다 결과를 보여줍니다. 결과적으로 동작이 조금 달라서 이름을 다르게 지었다고 보면 됩니다. 실제로 PostgreSQL에서 Aggregate function을 만들고, 그녀석을 window function처럼 사용할 수 있습니다.예제avg()SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary;위의 sql 을 해석하면 아래와 같습니다.empsalary table 에서 salary에 대한 avg() ..