Google Cloud Data & Database Engineer · 2일차
무중단 DB 이관과
Spanner · Bigtable.
오늘의
흐름
- 016R 마이그레이션 · DMS & Datastream CDC1–3교시 · 동종/이기종 무중단 이관 아키텍처 & Lab 4 (DMS)
- 02Cloud Spanner 글로벌 분산 DB & 스키마4–5교시 · TrueTime 외부 일관성 · Hotspot 방지 PK & Lab 5
- 03Cloud Bigtable Row Key 설계 & 대량 적재6–7교시 · Tall & Narrow 시계열 모델링 · cbt CLI & Lab 6
- 04Firestore 문서형 NoSQL & 운영 DB 종합8교시 · 컬렉션/서브컬렉션 설계 및 Day 1–2 DB 총정리
6R 마이그레이션 · DMS & Datastream CDC
1–3교시 · 다운타임 제로(Near-Zero Downtime)를 달성하는 데이터베이스 이관 아키텍처
- Migration Center · DMA
- Homogeneous vs Heterogeneous
- DMS vs Datastream 비교
- Lab 4 · DMS 무중단 이관
DB 마이그레이션 4단계와 동종 · 이기종 전략
- 1. Assess (진단)Migration Center & DMA로 원본 DB 스키마·확장 기능·적합도 스캔
- 2. Plan (계획)동종(Replatform) vs 이기종(Refactor) 결정 및 VPC Peering/VPN 설계
- 3. Deploy (복제)초기 전체 덤프(Full Dump) 후 실시간 CDC(Change Data Capture) 연속 동기화
- 4. Optimize (전환)Data Validation Tool(DVT) 정합성 검증 후 Cutover(Promote) 실행
스키마와 애플리케이션 SQL 변경 없이 관리형 엔진으로 이동해요. DMS가 초기 스냅샷과 실시간 바이너리 로그/WAL 복제를 자동 처리해요.
DMS Conversion Workspace와 Gemini 기반 AI 코드 변환으로 PL/SQL·저장 프로시저·데이터 타입을 PostgreSQL 호환 코드로 자동 변환해요.
헷갈리기 쉬운 두 CDC 도구: DMS vs Datastream
둘 다 원본 DB의 변경분(CDC)을 실시간으로 읽지만, 목적지가 운영 DB(OLTP)인지 분석 저장소(OLAP)인지가 달라요.
| 비교 기준 | Database Migration Service (DMS) | Datastream |
|---|---|---|
| 핵심 목적 | 운영 DB 무중단 이사 (이관 완료 후 타겟 승격) | 분석용 실시간 CDC 파이프라인 (지속 스트리밍 복제) |
| 목적지 (Target) | Cloud SQL, AlloyDB (운영 관계형 DB) | BigQuery, Cloud Storage (분석 DW · 데이터 레이크) |
| 원본 (Source) | MySQL, PostgreSQL, SQL Server, Oracle | Oracle, MySQL, PostgreSQL, SQL Server, Salesforce |
| 최종 단계 | Promote(Cutover)로 타겟 DB를 새 Primary로 승격 | BigQuery Storage Write API 병합으로 실시간 분석 유지 |
| AWS / Azure 대응 | AWS DMS (DB Migration) / Azure DMS | AWS DMS (to S3/Redshift) / Azure Data Factory CDC |
Lab 4 · DMS 기반 MySQL → Cloud SQL 무중단 이관
- Connection Profile원본 MySQL(IP·계정·binlog 확인) 및 목적지 접속 프로필 생성
- Continuous Job 생성VPC Peering 연결 구성 및 Continuous(Full Dump + CDC) 방식 선택
- 실시간 복제 & 검증초기 적재 완료 후 원본에 신규 INSERT 발생 시 Cloud SQL 자동 반영 확인
- Promote (Cutover)복제 지연(Replication Lag) 0 확인 후 타겟 인스턴스를 독립 Primary로 승격
binlog_format=ROW)과 GTID(또는 충분한 로그 보관 기간)가 켜져 있어야 CDC가 누락 없이 동작해요.Lab 4-A · Continuous DMS Job (skills.google)Lab 4-B · RDS MySQL to Cloud SQL (skills.google)
Cloud Spanner 글로벌 분산 DB & 스키마
4–5교시 · RDBMS의 강력한 트랜잭션(ACID·SQL)과 NoSQL의 무제한 수평 확장을 결합한 아키텍처
- TrueTime API · External Consistency
- Split 자동 분할 & Hotspot 방지 PK
- Interleaved Table
- Lab 5 · Spanner DDL & Query Plan
왜 Spanner인가: TrueTime 외부 일관성과 수평 확장
전 세계 데이터센터의 하드웨어 원자시계와 GPS로 시간 오차를 수 밀리초 이내로 묶어, 글로벌 분산 락 없이도 직렬화 가능한 강한 일관성(Strong Consistency)을 보장해요.
데이터가 커지거나 트래픽이 몰리면 Primary Key 정렬 범위를 기준으로 데이터를 Split 단위로 자동 분할해 여러 컴퓨트 노드에 분산 배치해요.
Paxos 합의 알고리즘으로 멀티 리전 쿼럼에 동기 복제하여, 리전 하나가 통째로 멈춰도 다운타임과 데이터 유실(RPO=0) 없이 즉시 서비스를 이어가요.
Spanner 스키마 핵심: Hotspot 방지와 Interleaved Table
나쁜 예: 순차 증가 키 (Auto-Increment / Timestamp 선두)
Primary Key를 1, 2, 3... 또는 CreatedAt 타임스탬프 선두로 잡으면 모든 신규 INSERT가 항상 마지막 Split(단일 서버 노드) 하나에만 집중되어 심각한 쓰기 병목(Hotspot)이 발생해요.
좋은 예: UUID v4 · Hash Prefix · 복합키 순서 변경
UUID v4, 해시 프리픽스(ShardId), 또는 카디널리티가 높은 (UserId, OrderDate) 순으로 키를 구성해 쓰기 트래픽을 모든 노드의 Split에 고르게 분산해요.
INTERLEAVE IN PARENT): 부모(Customers)와 자식(Orders) 행을 같은 Split에 물리적으로 나란히 저장(Co-location)해 네트워크 홉 없는 초고속 조인을 수행해요.Lab 5 · Spanner 인터리빙 스키마 & 실행 계획 실습
-- 1. 부모 테이블 (분산 키 사용)
CREATE TABLE Customers (
CustomerId STRING(36) NOT NULL,
Name STRING(100)
) PRIMARY KEY (CustomerId);
-- 2. 자식 테이블 (부모 Split 동반 배치)
CREATE TABLE Orders (
CustomerId STRING(36) NOT NULL,
OrderId STRING(36) NOT NULL,
OrderTotal NUMERIC
) PRIMARY KEY (CustomerId, OrderId),
INTERLEAVE IN PARENT Customers ON DELETE CASCADE;
- 복합 PK 상속 규칙자식 테이블 PK는 반드시 부모 테이블의 PK(CustomerId)를 맨 앞 접두어로 포함해야 해요
- Query Execution Plan콘솔의 Query Plan 시각화에서 네트워크 셔플 없이 Local Join으로 실행되는지 확인
- gcloud spanner CLI인스턴스·DB 생성부터 DDL 반영, SQL 조회까지 CLI로 자동화
Lab 5-A · Spanner Fundamentals (skills.google)Lab 5-B · Schemas & Query Plans (skills.google)
Cloud Bigtable Row Key 설계 & 대량 적재
6–7교시 · 페타바이트급 시계열·IoT·금융 데이터를 한 자릿수 밀리초(ms)에 처리하는 Wide-Column NoSQL
- Bigtable vs BigQuery
- Tall & Narrow 모델링
- Row Key Hotspot 방지
- Lab 6 · cbt CLI & 시계열 조회
Cloud Bigtable 아키텍처와 BigQuery와의 역할 분담
Bigtable은 컴퓨트 노드(태블릿 서버)와 Colossus 스토리지(SSTable)가 분리되어 있어 노드 추가만으로 처리량이 선형 확장돼요.
| 비교 항목 | Cloud Bigtable (NoSQL OLTP · 시계열) | BigQuery (서버리스 DW · OLAP) |
|---|---|---|
| 주 워크로드 | IoT 센서, 실시간 주가/클릭스트림, 피처 스토어, 개인화 추천 | 전사 BI 리포팅, 대규모 로그 SQL 집계, 머신러닝(BQML) |
| 응답 지연 / 처리량 | 한 자릿수 밀리초(ms) · 초당 수십만~수백만 읽기/쓰기 | 초~분 단위 · 대용량 테이블 풀/파티션 스캔 |
| 접근 패턴 | 단일 Row Key 조회(Lookup) 및 사전순 Row Key 범위 스캔(Range Read) | 표준 SQL 조인, GROUP BY, 윈도우 함수, 벡터 검색 |
| 데이터 변형(Mutation) | 실시간 셀 단위 고속 덮어쓰기·추가 최적화 | 배치/스트리밍 Append 최적화 (잦은 단건 UPDATE 비효율) |
성능의 90%를 결정하는 Bigtable Row Key 설계
나쁜 예: 타임스탬프 선두 · 낮은 카디널리티 · Fat Row
20261110#Bus101처럼 타임스탬프를 맨 앞에 두면 최신 쓰기가 한 노드에 몰려 Hotspot이 생겨요. 한 행에 수만 개 이벤트를 우겨 넣는 Wide(Fat) 구조도 피해야 해요.
좋은 예: 필드 결합 + 역순 타임스탬프 (Tall & Narrow)
MTA#B63#N#9223370399...(운수사#노선#방향#역순타임스탬프)처럼 자주 함께 조회하는 조건을 앞에 두고, 최신순 조회가 필요하면 MAX_LONG - timestamp 역순값을 붙여요.
Lab 6 · cbt CLI 기반 시계열 Row Key 조회 실습
# 1. cbt CLI 환경파일(.cbtrc) 자동 구성
echo project = $PROJECT_ID > ~/.cbtrc
echo instance = nyc-transit >> ~/.cbtrc
# 2. 테이블 생성 및 컬럼 패밀리(cf) 추가
cbt createtable bus-data
cbt createfamily bus-data cf
# 3. 특정 버스 노선(M86-SBS)의 시계열 범위 스캔
cbt read bus-data prefix=MTA/M86-SBS/ count=5
# 4. 특정 시각·차량 단건 Row Key 즉시 조회
cbt lookup bus-data "MTA/M86-SBS/1496275200000/NYCT_5824"
- prefix 범위 스캔Row Key가 사전순(Lexicographical)으로 정렬되어 있어 prefix 지정만으로 특정 노선 전체를 밀리초에 읽어요
- Tall & Narrow 구조버스 위치 측정값 1건을 행(Row) 1개로 저장해 확장성과 스캔 효율 극대화
- Dataflow 대량 적재Cloud Storage의 SequenceFile/Parquet 데이터를 Dataflow 템플릿으로 고속 병렬 적재
Lab 6-A · Designing & Querying Bigtable Schemas (skills.google)Lab 6-B · Populating a Bigtable Instance (skills.google)
Firestore 문서형 NoSQL & 운영 DB 종합
8교시 · 모바일·웹 서버리스 문서 DB 모델링과 Day 1–2 데이터베이스 파트 총정리
- Collection · Document · Subcollection
- Security Rules · 오프라인 동기화
- Day 1–2 운영 DB 총정리 & Day 3 예고
Firestore 문서 모델링과 Day 1–2 운영 DB 총정리
문서(최대 1MB JSON)는 컬렉션에 속하며, 하위 배열이 계속 커지면 Subcollection으로 분리해 조회 비용을 최적화해요.
백엔드 없이도 모바일·웹 SDK가 Security Rules 검증을 거쳐 직접 구독하고 오프라인 변경분을 자동 동기화해요.
자동 인덱스와 복합 인덱스를 강제해 전체 컬렉션이 1억 건이어도 결과 10건 조회 시간은 항상 일정해요.
- Cloud SQL / AlloyDB리전 정형 RDBMS · HTAP 고성능 PG
- DMS / Datastream무중단 DB 이사 · 실시간 분석 CDC
- Spanner / Bigtable글로벌 SQL · 초고속 시계열 NoSQL
- Day 3 → BigQuery DW모든 데이터가 모이는 분석·AI 허브