반응형

📝데이터 레이크 (Data Lake)

정형 데이터(SQL 테이블처럼 구조화된 것)뿐 아니라, 비정형 데이터(로그, 이미지, 영상, 센서 데이터 등)를 원형(raw) 그대로 저장하는 대규모 저장소로 한 곳에 모아두고 필요할 때 가공/분석을 합니다.

 

📝폴링 (Polling)

어떤 이벤트가 발생했는지 확인하려고 주기적으로 서버나 장치에 “새로운 거 있나요?”라고 물어보는 방식입니다.

 

while (true) {
    response = request("서버: 새 메시지 있나요?");
    if (response.hasNewMessage()) {
        show(response.message);
    }
    sleep(5초);
}

5초마다 반복적으로 확인하게 하는 등 방법을 이용할 수 있습니다.

 

📝샤딩 (Sharding)

데이터베이스를 수평적으로 나누어 여러 서버에 분산 저장하는 방식으로 테이블의 데이터를 서로 다른 DB에 나눠서 저장합니다.

DBMS가 제공하는 기능이 아니기 때문에 인프라 레벨에서 독자적으로 구현해야합니다. (참고로 몽고의 경우는 샤딩을 지원합니다.)

  • 유저 ID 1~1M → DB1, 1M~2M → DB2

 

📝파티셔닝 (Partitioning)

하나의 큰 테이블이나 데이터 집합을 작게 나누어 관리하는 방식입니다. 샤딩과 다르게 DB가 분리되는게 아니며 DBMS에서 제공해줍니다.

  • 주문 테이블을 “2024년 주문”, “2025년 주문”으로 분리 (범위 파티셔닝)
CREATE TABLE orders (
  order_id     BIGINT NOT NULL,
  user_id      BIGINT NOT NULL,
  amount       DECIMAL(10,2) NOT NULL,
  created_at   DATE NOT NULL
)
PARTITION BY RANGE (YEAR(created_at)) (
  PARTITION p2023 VALUES LESS THAN (2024),
  PARTITION p2024 VALUES LESS THAN (2025),
  PARTITION p2025 VALUES LESS THAN (2026),
  PARTITION pmax  VALUES LESS THAN MAXVALUE
);

 

 

 

 

반응형