1. 왜 Lakebase에서 최적화가 중요한가
OLTP vs OLAP 특성 차이
Databricks는 본래 대규모 분석(OLAP, Online Analytical Processing) 워크로드에 최적화된 플랫폼입니다. Lakebase는 그 위에 OLTP (Online Transaction Processing) 특성을 더한 관리형 PostgreSQL로, 두 세계를 연결하는 역할을 합니다.| 특성 | OLAP (Delta / Spark) | OLTP (Lakebase / PostgreSQL) |
|---|---|---|
| 주요 작업 | 대규모 집계, 스캔 | 단건 삽입/조회/수정/삭제 |
| 트랜잭션 | 제한적 (ACID on Delta) | 완전한 ACID 트랜잭션 |
| 동시 접속 | 수십~수백 Spark job | 수십~수천 클라이언트 연결 |
| 지연 시간 | 초~분 단위 허용 | 밀리초 단위 요구 |
| 인덱스 | 파일 통계 기반 | B-tree, Hash, GIN, GiST 등 |
Databricks 관리형이라는 특징
Lakebase는 단순한 PostgreSQL이 아니라 Databricks Unity Catalog 아래에서 동작하는 관리형 서비스입니다. 이 때문에 다음과 같은 제약과 이점이 동시에 존재합니다.- 이점: 자동 백업, Unity Catalog 거버넌스, Delta 테이블과의 양방향 동기화 (Synced Tables)
- 제약: 직접 OS/스토리지 레벨 접근 불가,
pg_hba.conf등 일부 서버 파라미터 변경 제한 - 네트워크: Databricks Apps와 동일 VPC 내에서 Private Link로 저지연 통신
참고: Databricks Lakebase 공식 문서
2. CRUD 작업 패턴
INSERT — 삽입 최적화
단건 INSERT는 네트워크 왕복(round-trip)이 발생할 때마다 오버헤드가 누적됩니다. 배치 처리 (batch insert) 를 활용하면 성능을 크게 향상시킬 수 있습니다.SELECT — 조회 최적화
UPDATE — 수정 최적화
DELETE — 삭제 최적화
3. 인덱스 전략
PostgreSQL 인덱스 유형
| 인덱스 유형 | 적합한 사용처 | 예시 |
|---|---|---|
| B-tree | 등호/범위 조건, 정렬 | WHERE id = ?, ORDER BY created_at |
| Hash | 등호 조건만 (범위 불가) | WHERE email = ? (등호 전용) |
| GIN | 배열, JSONB, 전문 검색 | WHERE tags @> '{python}', LIKE with trigram |
| GiST | 지리 정보, 범위 타입 | PostGIS 좌표, tsrange 겹침 검사 |
인덱스 설계 가이드
인덱스가 많을수록 INSERT/UPDATE/DELETE 속도가 저하됩니다. 쿼리 패턴을 먼저 분석하고 필요한 인덱스만 생성하십시오.
4. 연결 관리 (Connection Management)
Connection Pooling의 필요성
PostgreSQL은 연결(connection)마다 별도 프로세스를 생성합니다. Databricks Apps처럼 다수의 요청이 동시에 들어오는 환경에서는 커넥션 풀링 (connection pooling) 이 필수입니다.Databricks Apps에서의 연결 패턴
Databricks Apps는 기본적으로 단일 프로세스 내에서 실행됩니다. 아래 원칙을 따르십시오.@st.cache_resource로 연결 풀을 앱 수명 동안 한 번만 생성- 요청마다 연결을 생성/소멸하지 않음 (오버헤드 발생)
- Lakebase 연결 수 상한 은 인스턴스 크기에 따라 다르며, 기본적으로 수백 개 수준
- 연결이 오래 유휴 상태로 남으면 서버 측에서 끊길 수 있으므로
pool_pre_ping=True권장
참고: PostgreSQL Connection Pooling Best Practices
5. 데이터 동기화 — Delta ↔ Lakebase (Synced Tables)
Synced Tables 개요
Synced Tables 는 Delta 테이블의 데이터를 Lakebase PostgreSQL 테이블로 자동 동기화하는 기능입니다. 분석용 데이터(Delta)를 OLTP 앱(Lakebase)에서 빠르게 조회할 수 있도록 연결해 줍니다.Synced Tables 생성
실시간 vs 배치 동기화 비교
| 방식 | 동기화 주기 | 사용 사례 | 비고 |
|---|---|---|---|
| Incremental Sync | 변경분만 자동 감지 | 제품 카탈로그, 사용자 프로필 | 권장 기본값 |
| Full Sync | 전체 재적재 | 소규모 참조 테이블 | 데이터 양 적을 때만 |
| 수동 트리거 | 필요 시 호출 | 배치 작업 후 즉시 반영 | Job에서 SDK 호출 |
참고: Databricks Synced Tables 문서