본문 바로가기
카테고리 없음

[RDB, NoSQL] 시계열 데이터는 어디에 저장하면 될까

by hbIncoding 2025. 1. 15.

0. 차트에 사용하는 시계열 데이터는 어떻게 저장할까?

  • 삼성전자의 초, 분, 시간, 일, 월 단위 등 다양한 차트 데이터가 있다고 한다면, 이 모든 데이터를 한 곳에 저장하는건 매우 비효율적이닌까 제외하자.
  • 그렇다면 RDB에서 '삼성전자 초단위', '하이닉스 시간 단위'와 같이 모든 차트 데이터를 저장하려면 종목 수 x 차트 종류 만큼 테이블을 만들어야 한다.
  • NoSQL은 당연히 그만큼의 스키마를 만들고 관리해주어야 한다.
  • 일정시간마다 데이터가 삽입되고, 그 데이터들을 읽을 경우가 많다.

1. RDB로 했을 때 장점과 단점은 무엇일까?

  • 장점
    • ACID 특성 : 트랜잭션 무결성을 보장해준다
    • 복잡한 쿼리와 조인 수행
    • 스키마를 정의하여 데이터 구조를 강제한다.
  • 단점
    • 확장성 제한
      • 수직 확장이 주로 이루어지며, 수평 확장이 어렵다.
      • 대규모 시계열 데이터를 다룰 때 성능 저하가 발생할 수 있다.
    • 쓰기 성능
      •  대량의 시계열 데이터를 빠르게 삽입하는 데 있어 성능이 떨어질 수 있다.
    • 고정된 스키마
      • 데이터 구조 변경이 필요할 때 유연성이 떨어진다.

2. NoSQL로 했을 때 장점과 단점은 무엇일까?

  • 장점
    • 수평 확장
      • 수평 확장이 용이하여 대량의 세계열 데이터를 효율적으로 분산 저장 가능
      • 클러스터링을 통해 대규모 데이터를 처리하는 데 적합
    • 고성능 쓰기
      • 빠른 스기에 최적화
    • 유연한 스키마
      • 스키마리스 특성
  • 단점
    • 트랜잭션 제한 : 데이터 일관성을 보장하기 어렵다. 복잡한 트랜잭션 처리에 약하다.
    • 모델링에 따라서 중복 데이터가 발생할 수 있다.

3. 그렇다면 왜 나는 NoSQL로 시계열 데이터를 저장했는가?

  • 빠른 읽기와 쓰기에서 성능이 중요하다고 판단했다.
    • 짧은 시간 단위로 여러 종목에 대한 데이터를 계속 삽입해야하고, 이것을 사용자가 사용하기에 불편하지 않아야한다.
    • 즉, 트랜잭션을 통해 데이터 안정성을 높이기 보다는 성능을 중요하게 생각했다.
  • RDB의 장점을 크게 부각시킬 일이 없었다.
    • 시계열 데이터를 불러올 때 단순히 해당 테이블의 모든 데이터를 불러오기만 한다.
    • 즉, 해당 테이블은 다른 테이블들과 관계가 맺어지지 않으며, 복잡한 쿼리 성능이 필요하지 않았다.
  • 프로젝트에서는 작은 규모의 시계열 데이터만 쌓였지만, 종목과 차트 종류가 늘어난다면 NoSQL을 성능적으로 선택할 수 밖에 없었다.
  • 하지만 데이터의 일관성이 매우 중요해진다면 RDBMS를 활용할 수 도 있다.
    • 이 경우 성능보다는 데이터가 중요해지기 때문에 클러스터링, 샤딩 등 을 통해서 DB 부하를 막는 방법으로 진행해야 할 것이다.