반응형
📝데이터 레이크 (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
);
반응형