DB
-
샤딩(sharding), 파티셔닝(partitioning)DB 2018. 12. 23. 16:14
샤딩(sharding)과 파티셔닝(partitioning)의 차이파티셔닝이란 퍼포먼스(performance), 가용성(availability) 또는 정비용이성(maintainability)를 목적으로 논리적인 데이터 엘리먼트들을 다수의 table로 쪼개는 행위를 뜻하는 일반적인 용어입니다.샤딩은 수평 파티셔닝(horizontal partitioning)과 동일합니다. 데이터베이스를 샤딩하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 샤드에 어떤 데이터가 저장될 지를 샤드 키를 기준으로 분리합니다. 수평 파티셔닝 (horizontal partitioning) = 샤딩 위 예시를 보면 1 ~ 5 번 고객의 정보는 하나의 샤드에 저장하고 6 ~ 10 번 고객의 정보는 다른 샤드에 저..
-
[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 ..