TIL-DB, GIT등

kyoungyeon·2025년 1월 27일
0

TIL

목록 보기
125/125

질의내용

  1. Data Lake: 원시 데이터 저장 및 분석 플랫폼으로 Delta Lake가 ACID 트랜잭션 지원10.

  2. AlloyDB: PostgreSQL 15 호환 + 고성능 분석8.

  3. 버전 관리: Alpha → Beta → RC → GA 단계로 테스트 및 배포315.

  4. Git 태그: 버전 롤백 및 배포 관리에 필수적.

  5. UUID: 시스템 전반에서 고유 식별자 생성용으로 활용.


회의 내용 정리 및 추가 정보 보완


1. **Data Lake 공부하기

  • 정의: 데이터 레이크는 구조화/반구조화/비구조화된 원시 데이터를 원본 형식으로 저장하는 중앙 집중식 저장소입니다. 분석 및 머신러닝을 위해 유연하게 활용되며, 스키마 온 리드(Schema-on-Read) 방식을 채택합니다.
  • 핵심 구성 요소:
    • 원시 데이터 저장: Hadoop HDFS, Amazon S3 등에 데이터를 원시 형식으로 저장.
    • 데이터 처리: ETL, 정제, 표준화를 통해 분석 가능한 형태로 변환.
    • ACID 트랜잭션: Delta Lake, Hudi, Iceberg와 같은 도구를 통해 데이터 무결성 보장.
  • 활용 사례: 로그 분석, AI/ML 모델 학습, 실시간 스트리밍 데이터 처리.

2. **AlloyDB (PostgreSQL 15 버전)

  • 특징:
    • 완전한 PostgreSQL 호환성: 기존 애플리케이션 코드 변경 없이 마이그레이션 가능.
    • 성능: 트랜잭션 워크로드에서 표준 PostgreSQL 대비 4배, 분석 쿼리 100배 빠름.
    • 자동 업데이트: PostgreSQL 15.7과 같은 마이너 버전을 자동으로 적용하여 보안 패치 및 버그 수신.
  • 아키텍처:
    • 저장-계층 분리: Google의 분산 스토리지 기술 기반으로 확장성과 안정성 강화.
    • Vector DB 역할: PostgreSQL 확장 기능을 통해 벡터 데이터 처리 지원 (예: pgvector 확장).

3. **Beta DB / Preproduction DB

  • 버전 주기 :
    • Alpha: 내부 테스트용, 주요 기능 미완성.
    • Beta: 외부 테스트용, 기능 완성但有잠재적 버그.
    • RC (Release Candidate): 최종 버전 후보, 기능 고정.
    • Stable/GA: 공식 배포 버전.
  • Preproduction DB: 실제 프로덕션 환경과 유사한 테스트 환경. AlloyDB의 경우 베타 버전을 Preproduction DB로 활용 가능.

4. **원시 시계열 데이터 전달 (FTP → AlloyDB → Vector DB)

  • 전달 프로세스:

    1. FTP 업로드: 원시 시계열 데이터를 CSV/JSON 형식으로 FTP 서버에 저장.
    2. AlloyDB 수집: COPY 명령어 또는 pg_bulkload 도구를 사용해 데이터 로드.
    3. Vector DB 변환: PostgreSQL 확장 기능(예: pgvector)을 통해 시계열 데이터를 벡터화하여 분석.
  • 코드 예시 (SQLAlchemy):

    from sqlalchemy import create_engine
    import pandas as pd
    
    # AlloyDB 연결
    engine = create_engine('postgresql+psycopg2://user:password@alloydb-host:5432/dbname')
    
    # CSV 데이터 로드
    df = pd.read_csv('timeseries_data.csv')
    df.to_sql('raw_timeseries', engine, if_exists='append', index=False)

5. **SQLAlchemy 사용 이유

  • 장점:

    • ORM 지원: Python 객체와 DB 테이블 매핑으로 코드 가독성 향상.
    • 유연한 쿼리 빌더: SQL 문법보다 직관적인 API 제공.
    • 다중 DB 지원: PostgreSQL, MySQL 등 다양한 DB 호환.
  • 예시:

    # SQLAlchemy를 사용한 쿼리
    from sqlalchemy.orm import sessionmaker
    Session = sessionmaker(bind=engine)
    session = Session()
    
    result = session.query(User).filter(User.age > 30).all()

6. **Live DB (프로덕션용 DB)

  • 특징:
    • 고가용성: AlloyDB는 자동 장애 복구 및 다중 AZ 지원.
    • 성능 최적화: 분석 가속화 기능과 AI/ML 통합으로 실시간 의사결정 지원.
  • 운영 원칙:
    • 모니터링: Cloud Monitoring을 통한 지표 추적.
    • 백업: 스냅샷 기반 자동 백업.

7. **Git 태그의 효능

  • 용도 :
    • 버전 관리: v1.0.0-beta, v1.0.0-rc 등으로 배포 단계 표시.
    • 롤백: 특정 태그 버전으로 쉽게 복귀 가능 (예: git checkout v1.0.0-beta).
    • 릴리즈 노트 연동: 태그와 GitHub Releases를 연결해 변경사항 공유.
  • 명령어 예시:
    # 태그 생성 및 푸시
    git tag -a v1.0.0-beta -m "Beta release"
    git push origin --tags

8. **UUID 사용 사례

  • 목적:

    • 고유 식별자 생성: 분산 시스템에서 중복 없는 ID 할당.
    • 데이터 추적: 메시지/트랜잭션에 UUID를 붙여 이력 관리.
  • 구현 예시 (Python):

    import uuid
    
    # UUID 생성
    message_id = str(uuid.uuid4())
    print(f"메시지 ID: {message_id}")  # 출력: 3b3d5f7e-9a1b-4c8d-a0e3-55f3a7d8e9c1

profile
🏠TECH & GOSSIP

0개의 댓글

관련 채용 정보