본문 바로가기

DB

(35)
분석 해야할 데이터 정리 # 분석 해야할 데이터 정리1. 분석 해야할 데이터 정리SELECT REPLACE(지역코드, '.0', '') AS 지역코드, 법정동, REPLACE(건축년도, '.0', '') AS 건축년도, TO_CHAR(TO_DATE(거래일, 'MM/DD/YYYY HH24:MI:SS'), 'YYYY-MM-DD') AS 거래일, 지번, 전용면적, 층, TO_CHAR(거래금액::numeric, 'FM999,999,999,999') AS 거래금액FROM 아파트_거래_01WHERE 지역코드 LIKE '%.0' OR 건축년도 LIKE '%.0' OR 거래일 LIKE '%/%/% %:%';
TOAST(The Oversized-Attribute Storage Technique) 메커니즘 TOAST(The Oversized-Attribute Storage Technique) 메커니즘은 PostgreSQL에서 큰 데이터를 효율적으로 저장하기 위해 사용되는 기술이다. TOAST는 다음과 같은 방식으로 작동한다.큰 데이터 분할: 테이블의 특정 컬럼에 큰 데이터가 저장될 때, TOAST는 이 데이터를 여러 조각으로 분할한다.외부 저장: 분할된 데이터 조각은 TOAST 테이블이라는 별도의 저장소에 저장된다.압축: 분할된 데이터 조각은 저장되기 전에 압축될 수 있다.참조: 원래 테이블의 컬럼에는 TOAST 테이블의 데이터를 참조하는 포인터가 저장된다.이 메커니즘을 통해 PostgreSQL은 큰 데이터를 효율적으로 관리하고, 저장 공간을 절약하며, 성능을 향상시킬 수 있다. - 끝 -
샤딩에서 데이터 동기화 메커니즘 및 장애조치 샤딩에서 데이터 동기화 메커니즘은 여러 샤드에 분산된 데이터를 일관성 있게 유지하기 위한 방법입니다. 주요 메커니즘은 다음과 같습니다:리플리케이션:각 샤드의 데이터를 다른 노드에 복제하여 데이터 손실을 방지하고 읽기 성능을 향상시킵니다.주 샤드와 보조 샤드 간의 데이터 동기화를 통해 일관성을 유지합니다.2단계 커밋 (2PC):분산 트랜잭션을 처리할 때 사용되는 프로토콜로, 모든 샤드에서 트랜잭션이 성공적으로 완료되거나 모두 실패하도록 보장합니다.준비 단계와 커밋 단계로 나누어 트랜잭션을 처리합니다.Paxos/Raft:분산 시스템에서 합의를 이루기 위한 알고리즘으로, 여러 샤드 간의 데이터 일관성을 유지합니다.리더 노드가 트랜잭션을 제안하고, 다수의 팔로워 노드가 이를 승인하여 일관성을 보장합니다.이벤트 ..
샤딩에서 분산트랙잭션 관리 샤딩에서 분산 트랜잭션을 관리하는 방법은 여러 가지가 있습니다. 대표적인 방법으로는 다음과 같은 것들이 있다:Two-Phase Commit (2PC):Prepare Phase: 모든 샤드에 트랜잭션 준비 요청을 보낸다. 모든 샤드가 준비되었다고 응답하면 다음 단계로 진행한다.Commit Phase: 모든 샤드에 커밋 요청을 보낸다. 만약 어떤 샤드에서라도 실패하면 롤백 요청을 보낸다.Three-Phase Commit (3PC):CanCommit Phase: 모든 샤드에 트랜잭션을 커밋할 수 있는지 물어본다.PreCommit Phase: 모든 샤드가 커밋 가능하다고 응답하면, 프리커밋 요청을 보낸다.DoCommit Phase: 모든 샤드에 커밋 요청을 보낸다.Sagas:트랜잭션을 여러 개의 작은 트랜잭션으..
NOSQL에서 문서 = RDB의 ROW(행) NOSQL에서 문서란, 데이터를 JSON, BSON, XML 등의 형식으로 저장하는 데이터 구조를 의미한다. 문서형 데이터베이스는 이러한 문서를 기본 단위로 사용하여 데이터를 저장하고 관리한다. 각 문서는 필드와 값의 쌍으로 구성되며, 필드는 문자열, 숫자, 배열, 객체 등 다양한 데이터 타입을 가질 수 있다.RDB(Relational Database)에서 문서에 해당하는 개념은 레코드(Record) 또는 행(Row)이다. RDB에서는 데이터를 테이블의 행으로 저장하며, 각 행은 여러 열(Column)로 구성된다. 문서형 데이터베이스의 문서와 RDB의 레코드는 데이터 저장의 기본 단위라는 점에서 유사하다.예를 들어, RDB에서 다음과 같은 테이블이 있다고 가정하면 아래와 같다.:idnameageemail..
RDB 정규화 정규화(Normalization)는 관계형 데이터베이스에서 데이터를 구조화하는 과정으로, 데이터 중복을 최소화하고 데이터 무결성을 유지하는 데 목적이 있다. 정규화는 여러 단계로 나뉘며, 각 단계는 특정 규칙을 따른다. 주요 정규형(Normal Form)은 다음과 같다:제1정규형(1NF): 모든 열이 원자값(Atomic Value)을 가져야 한다.제2정규형(2NF): 제1정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속(Full Functional Dependency)이어야 한다.제3정규형(3NF): 제2정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속(Transitive Dependency)이 없어야 한다.BCNF(Boyce-Codd Normal Form):..
샤딩에서의 SAGA 패턴 SAGA 패턴과 샤딩은 분산 시스템에서 데이터 일관성과 확장성을 관리하는 데 사용되는 두 가지 개념이다. 이 두 가지는 서로 다른 문제를 해결하지만, 함께 사용될 때 상호 보완적인 역할을 할 수 있다.SAGA 패턴SAGA 패턴은 분산 트랜잭션을 관리하기 위한 패턴이다. 여러 서비스에 걸쳐 있는 트랜잭션을 작은 단위의 로컬 트랜잭션으로 나누고, 각 트랜잭션이 성공적으로 완료되면 다음 트랜잭션을 실행한다. 만약 어떤 트랜잭션이 실패하면, 이전에 완료된 트랜잭션을 취소(보상)하는 방식으로 전체 트랜잭션의 일관성을 유지한다.샤딩샤딩은 데이터베이스의 데이터를 여러 개의 작은 단위(샤드)로 나누어 저장하는 방법이다. 이를 통해 데이터베이스의 확장성을 높이고, 읽기 및 쓰기 성능을 개선할 수 있다. 각 샤드는 독립적..
샤딩을 구현할 때 고려해야할 사항 정리 분산 트랜잭션분산 트랜잭션은 여러 샤드에 걸쳐 있는 데이터베이스 트랜잭션을 일관성 있게 처리하는 방법입니다. 이는 트랜잭션이 여러 데이터베이스 노드에 걸쳐 있을 때, 모든 노드에서 트랜잭션이 성공적으로 완료되거나 모두 실패하도록 보장합니다. 이를 통해 데이터 일관성을 유지할 수 있습니다.샤딩 키 선택균등 분배: 샤딩 키는 데이터가 균등하게 분배되도록 선택해야 한다.쿼리 패턴: 자주 사용되는 쿼리 패턴을 고려하여 샤딩 키를 선택 한다.변경 가능성: 샤딩 키는 자주 변경되지 않는 값이어야 한다.데이터 분배 전략범위 기반 샤딩: 특정 범위의 데이터를 각 샤드에 할당 한다.해시 기반 샤딩: 해시 함수를 사용하여 데이터를 샤드에 분배 한다.지리적 샤딩: 지리적 위치에 따라 데이터를 분배 한다.데이터 일관성 유지강..