Skip to content

데이터베이스와 가까워지기

EnvyW6567 edited this page Dec 3, 2024 · 7 revisions

HTTP 로그를 위한 데이터베이스 선택

Watchducks 서비스는 프록시 서버에서 HTTP 요청에 대한 모든 로그를 수집해야하기 때문에 데이터베이스를 선택함에 있어 신중을 기해야한다. 데이터베이스 선택에 앞서 저장할 데이터의 특징을 알아보자.

🔍 로그 데이터의 핵심 특성

HTTP 요청 로그를 효율적으로 저장하고 분석하기 위해서는, 먼저 이 데이터가 지닌 고유한 특성을 깊이 이해해야 한다.

로그 데이터는 세 가지 핵심적인 특성을 가진다

  • ⏰ 시계열 데이터의 본질

    • 모든 HTTP 요청은 정확한 발생 시점을 타임스탬프로 기록한다.
    • 시계열 정보는 로그 데이터의 저장, 조회, 분석의 기본 축이 되며, 시간 기반 패턴을 파악하는 데 핵심적인 역할을 한다.
  • 📈 급격한 데이터 증가

    • 시스템의 규모에 따라 초당 수천, 수만 건의 로그가 생성될 수 있다.
    • 특히 프록시 서버를 통과하는 모든 HTTP 요청을 기록할 경우, 데이터는 기하급수적으로 증가한다. 즉, 데이터베이스의 쓰기 성능과 스토리지 효율성이 매우 중요한 요소가 된다.
  • 📝 Append-only 특성

    • 한번 기록된 로그는 수정되지 않는 append-only 특성을 가진다.
    • 업데이트 작업이 거의 없다는 점은 특정한 데이터베이스 최적화 기법의 적용을 가능하게 한다.
    • 또한, 데이터 정합성을 보장할 필요가 없다.

🚀 ClickHouse를 선택한 이유

이러한 특성을 고려할 때, ClickHouse는 HTTP 로그 저장소로서 탁월한 선택이 된다.

  • 💫 시계열 데이터 처리 최적화

    • 컬럼 기반 스토리지를 통해 시계열 데이터의 초고속 조회가 가능하다.
    • 시간 기반 파티셔닝으로 데이터를 효율적으로 관리하며, 시간 기반 쿼리와 집계에 최적화된 다양한 기능을 제공한다.
  • 📦 뛰어난 데이터 압축률

    • 컬럼 기반 저장 방식을 활용하여 데이터를 효율적으로 압축한다.
    • 따라서, 대용량 로그 데이터의 저장 공간을 획기적으로 절약할 수 있다.
    • 특히 반복되는 값이 많은 로그 데이터의 특성상, 컬럼 기반 압축은 매우 효과적으로 작동한다.
  • ⚡ 고성능 데이터 삽입

    • 초당 수십만 건의 로그 데이터를 안정적으로 처리할 수 있다.
    • 배치 삽입 기능을 통해 더욱 향상된 성능을 확보할 수 있다.
    • ClickHouse의 MergeTree 엔진은 대량의 데이터 삽입을 효율적으로 처리하도록 특별히 설계되었다.
  • 📊 강력한 분석 기능

    • 친숙한 SQL 문법으로 복잡한 분석 쿼리를 작성할 수 있다.
    • 다양한 집계 함수와 윈도우 함수를 제공하여 심도 있는 데이터 분석이 가능하다.
    • 실시간 분석 기능을 통해 시스템의 상태를 즉각적으로 모니터링할 수 있다.

🔗 참고자료

📚 개발 일지

개발일지 펼쳐보기
개발일지 펼쳐보기
개발일지 펼쳐보기
개발일지 펼쳐보기
개발일지 펼쳐보기
개발일지 펼쳐보기
개발일지 펼쳐보기

🗄️ 문서 보관함

📚 회의록
1주차
2주차
3주차
4주차
5주차
6주차
📆 데일리 스크럼
1주차
2주차
3주차
4주차
5주차
6주차
📝 그룹 회고
  • 1주차 그룹회고
  • 2주차 그룹회고
  • 4주차 그룹회고
  • 📝 멘토링 일지

    📒 릴리즈 노트

    🧑‍🧑‍🧒‍🧒 팀 및 커뮤니티

    About Team Watchducks

    📢 발표 자료

    1️⃣ 1주차: 기획 현황

    2️⃣ 2주차: 발표자료

    3️⃣ 3주차: 발표자료

    4️⃣ 4주차: 발표자료

    5️⃣ 5주차: 발표자료

    6️⃣ 6주차: 최종 발표 ✨

    Clone this wiki locally