-
Notifications
You must be signed in to change notification settings - Fork 3
데이터베이스와 가까워지기
EnvyW6567 edited this page Dec 3, 2024
·
7 revisions
Watchducks 서비스는 프록시 서버에서 HTTP 요청에 대한 모든 로그를 수집해야하기 때문에 데이터베이스를 선택함에 있어 신중을 기해야한다. 데이터베이스 선택에 앞서 저장할 데이터의 특징을 알아보자.
HTTP 요청 로그를 효율적으로 저장하고 분석하기 위해서는, 먼저 이 데이터가 지닌 고유한 특성을 깊이 이해해야 한다.
로그 데이터는 세 가지 핵심적인 특성을 가진다
-
- 모든 HTTP 요청은 정확한 발생 시점을 타임스탬프로 기록한다.
- 시계열 정보는 로그 데이터의 저장, 조회, 분석의 기본 축이 되며, 시간 기반 패턴을 파악하는 데 핵심적인 역할을 한다.
-
- 시스템의 규모에 따라 초당 수천, 수만 건의 로그가 생성될 수 있다.
- 특히 프록시 서버를 통과하는 모든 HTTP 요청을 기록할 경우, 데이터는 기하급수적으로 증가한다. 즉, 데이터베이스의 쓰기 성능과 스토리지 효율성이 매우 중요한 요소가 된다.
-
- 한번 기록된 로그는 수정되지 않는 append-only 특성을 가진다.
- 업데이트 작업이 거의 없다는 점은 특정한 데이터베이스 최적화 기법의 적용을 가능하게 한다.
- 또한, 데이터 정합성을 보장할 필요가 없다.
이러한 특성을 고려할 때, ClickHouse는 HTTP 로그 저장소로서 탁월한 선택이 된다.
-
- 컬럼 기반 스토리지를 통해 시계열 데이터의 초고속 조회가 가능하다.
- 시간 기반 파티셔닝으로 데이터를 효율적으로 관리하며, 시간 기반 쿼리와 집계에 최적화된 다양한 기능을 제공한다.
-
- 컬럼 기반 저장 방식을 활용하여 데이터를 효율적으로 압축한다.
- 따라서, 대용량 로그 데이터의 저장 공간을 획기적으로 절약할 수 있다.
- 특히 반복되는 값이 많은 로그 데이터의 특성상, 컬럼 기반 압축은 매우 효과적으로 작동한다.
-
- 초당 수십만 건의 로그 데이터를 안정적으로 처리할 수 있다.
- 배치 삽입 기능을 통해 더욱 향상된 성능을 확보할 수 있다.
- ClickHouse의 MergeTree 엔진은 대량의 데이터 삽입을 효율적으로 처리하도록 특별히 설계되었다.
-
- 친숙한 SQL 문법으로 복잡한 분석 쿼리를 작성할 수 있다.
- 다양한 집계 함수와 윈도우 함수를 제공하여 심도 있는 데이터 분석이 가능하다.
- 실시간 분석 기능을 통해 시스템의 상태를 즉각적으로 모니터링할 수 있다.
- MySQL 인프라 구성 ➡️ [BE: 공통] MySQL 도커 이미지 설정
- Clickhouse가 뭔데? 뭐라고? Column-Oriented? ➡️ [BE: 병우] Clickhouse 톺아보기
- 잽 1000번 = 훅 1번 (Clickhouse 최적화) ➡️ [BE: 병우] Clickhouse 최적화하기
- 데이터베이스, 얼마나 격리해야할까? ➡️ [BE: 공통] SSH Tunneling으로 데이터베이스 보안 강화하기 (Deprecated)
🔗 Project Links
📦 Repository •
🌐 Live Site •
📚 Wiki •
📋 Team Notion
📞 Contact & Support
✉️ Email: [email protected] • 🐛 Create Issue • 🕒 Updated: 2024-12-03