DB 19

Hive - index, partition 비교 및 정리

Apache Hive Index 정리Hive에서 Index(색인) 는 테이블에서 데이터를 빠르게 검색할 수 있도록 도와주는 기능이다일반적인 RDBMS의 인덱스와 비슷하지만, Hive는 대량의 데이터를 다루기 때문에 작동 방식이 약간 다르다.1. Hive Index의 필요성Hive는 기본적으로 테이블을 풀 스캔(Full Table Scan) 하기 때문에, 데이터 양이 많아지면 쿼리 속도가 느려질 수 있다.Index를 사용하면 검색 범위를 줄여서 성능을 향상시킬 수 있다.사용 예시:특정 컬럼에 대한 빠른 조회WHERE 절을 자주 사용하는 컬럼 최적화조인(Join) 성능 향상2. Hive Index 종류ex)Compact IndexHive 기본 제공 인덱스. 별도의 테이블에 인덱스 저장단순 조회 최적화Bitm..

DB 2025.03.09

Postgresql - Sharding

Postgresql의 샤드Sharding은 성능, 확장성 및 가용성을 향상시키기 위해 여러 서버 (또는 노드)에 데이터를 배포하는 데이터베이스 파티셔닝 기술모든 데이터를 단일 데이터베이스 인스턴스에 저장하는 대신 Sharding은 이를 더 작고 관리하기 쉬운 청크로 나s눈다.샤드의 주요 구성 요소샤드 key샤드 (예 : 사용자 ID, 지역 등)에 데이터를 배포하는 데 사용되는 열 (또는 열 세트).코디네이터 (라우터)샤드 키를 기반으로 쿼리를 올바른 샤드로 구동. (수동 / pgbouncer / citus 와 같은 관리 툴)샤드 노드각 노드 (데이터베이스 서버)는 데이터의 일부를 저장노드는 쿼리를 처리하기 위해 독립적으로 작동샤드 전략해시 기반 샤딩샤드 키 값은 해시되어 샤드 위치를 결정데이터 배포를 보..

DB/Postgresql 2025.02.23

DB - Hive (msck repair table)

1. MSCK REPAIR TABLE 기본 사용법MSCK REPAIR TABLE table_name; HDFS에는 존재하지만 Hive의 Metastore에 등록되지 않은 파티션을 인식하여 추가.외부에서 데이터를 직접 HDFS에 로드한 경우.ALTER TABLE 없이 수동으로 HDFS 경로에 파티션을 추가한 경우. 2. MSCK REPAIR TABLE 동작 과정Hive는 HDFS 경로를 스캔하여 테이블의 디렉터리를 확인한다.기존에 등록되지 않은 새로운 파티션을 감지합니다.발견된 파티션을 Hive Metastore에 추가합니다.이후 SHOW PARTITIONS로 추가된 파티션을 확인할 수 있다.✅ 예제: 파티션 추가 후 MSCK REPAIR TABLE 실행hdfs dfs -mkdir /user/hive/wa..

DB 2025.02.16

DB - partition 접근

업무 중 같은 쿼리라도 파티션 조건을 어떻게 하냐에 따라 쿼리 속도가 달라 접근법을 찾아 보았다. 1 . etl_ymd like '202301%'etl_ymd가 문자열로 분할되면 (예 :varchar 또는text ') 일반적으로 범위 또는 목록과 함께 작동하기 때문에 모든 파티션 풀스캔하여 속도가 느려질 수 있다.2 . etl _ymd between '20230101' and '20230131' etl_ymd가 이 조건은 파티션 가지 치기가 효율적으로 발생할 가능성이 높다. etl_ymd가 문자열로 저장되면, 명확한 범위를 정의하기 때문에 접근이 빠름. 하이브 파티셔닝을위한 모범 사례 고전성 열에서 분할 사용 (예 : '국가'대신 '날짜')✅ 너무 많은 파티션을 피한다. (작은 파티션 = 높은 메타 데이..

DB 2025.02.16

Hive - UDF

HIVE UDF (User Defined Function)란?Hive UDF(User Defined Function)는 사용자가 직접 정의하여 Hive에서 사용할 수 있는 함수. 기본적으로 Hive는 다양한 내장 함수(Built-in Functions)를 제공하지만, 특정한 데이터 변환이나 복잡한 로직이 필요할 때는 UDF를 직접 구현하여 사용할 수 있다.Hive UDF는 Java로 작성하며, 개발한 후 Hive에 등록하여 SQL 쿼리에서 사용할 수 있다.1. Hive UDF의 종류Hive에서 제공하는 사용자 정의 함수 3가지 유형.✅ 1) UDF (User Defined Function)단일 행 입력을 받아 하나의 값을 반환하는 함수예: 문자열 변환, 특정 조건 처리 등✅ 2) UDAF (User De..

DB 2025.02.02

Hive - HQL 함수

1. 집계 함수 (Aggregate Functions)함수설명AVG(col)주어진 컬럼의 평균을 계산COUNT(*)전체 행 개수를 반환COUNT(DISTINCT col)특정 컬럼에서 중복을 제거한 후 개수를 반환MAX(col)컬럼의 최대값 반환MIN(col)컬럼의 최소값 반환SUM(col)컬럼 값의 합을 반환COLLECT_SET(col)중복을 제거한 고유한 값들의 집합 반환COLLECT_LIST(col)모든 값의 리스트 반환2. 수학 함수 (Mathematical Functions)함수설명ABS(x)절댓값 반환CEIL(x)올림한 정수 반환FLOOR(x)내림한 정수 반환ROUND(x, d)반올림 (d는 소수점 자리수)EXP(x)e^x 값을 반환LN(x)자연로그 반환LOG10(x)밑이 10인 로그 반환LOG..

DB 2025.02.02

SQL - begin, index, anti-join

풀 스캔 방지를 위한 인덱스 강제지정SELECT * FROM table_name USE INDEX (index_name) WHERE column = 'value'; Anti-join (일치하지 않는 레코드 찾기)SELECT a.*FROM table_a aLEFT JOIN table_b b ON a.id = b.idWHERE b.id IS NULL; begin , delete 후 다른 유저가 해당 데이터를 update하면? (commit되지 않은 해당 행이 lock상태라 update불가)-- A터미널BEGIN TRANSACTION;DELETE FROM table_name WHERE id = 1;-- B터미널BEGIN TRANSACTION;DELETE FROM table_name WHERE id = 1;

DB 2025.01.19

SQL - group by, alias 등

쿼리실행순서 FROM -> WHERE -> GROUP BY -> (HAVING) -> SELECT -> ORDER BYGROUP BY가 SELECT 보다 먼저 실행 되지만, SELECT의 alias를 사용할 수 있다. (DB마다 약간은 차이가 있다. hql, mysql 가능 )GROUP BY, HAVING, ORDER BY에서 SELECT의 alias를 사용할 수 있다.WHERE절에서는 SELECT의 alias를 사용할 수 없다.실제 컬럼명만 사용가능하다. (서브쿼리에서는 사용가능)Case문은 select절, group by절에서 사용 가능.SELECT CASE WHEN salary > 5000 THEN 'High' ELSE 'Low' END AS salary_ca..

DB 2025.01.19

MySQL - HINT

MySQL에서 사용 가능한 쿼리 힌트인덱스 힌트옵티마이저 힌트 인덱스 힌트STRAIGHT_JOINUSE INDEX STRAIGHT_JOINSTRAIGHT_JOIN은 여러 개의 테이블이 조인되는 경우 조인 순서를 고정하는 역할을 한다.즉, 옵티마이저에게 드라이빙 테이블과 드리븐 테이블에 대한 힌트를 주는 기능이다.옵티마이저는 각 테이블의 통계 정보와 쿼리의 조건을 기반으로 최적의 순서로 조인을 수행한다.일반적으로 조인을 하기 위한 컬럼들의 인덱스 여부로 조인의 순서가 결정되면, 조인 컬럼의 인덱스에 아무런 문제가 없는 경우 레코드가 적은 테이블을 드라이빙으로 선택한다.이런 쿼리의 조인 순서를 변경하려는 경우에는 다음과 같이 STRAIGHT_JOIN 힌트를 사용해 테이블의 조인 순서를 유도할 수 있다.SEL..

DB 2024.07.17