Cassandra 와 redis

황태영·2024년 7월 22일

Cassandra의 개념에 대해서 살펴보자

분산 아키텍처

카산드라는 여러 노드로 구성된 클러스터에서 샐행된다 데이터는 클러스터 내 여러 노드에 분산되어 저장하기 때문에 데이터의 가용성과 확장성을 보장하게 됩니다.

여기서 노드란 시스템의 구성 요소라고 생각하면 됩니다. 클러스터는 컴퓨터 라고 생각하면 됩니다.

쿼리언어

Cassandra Query Language (CQL)는 SQL과 유사한 쿼리 언어를 씁니다.

데이터 모델

컬럼 패밀리 라는 개념을 사용하는데 이는 관계형 데이터베이스의 테이블과 유사하지만 더 유연하고 확장 가능한 구조를 가지고 있습니ㅏ다.

일관성 모델, 데이터 복제

카산드라는 데이터를 여러 노드에 복제하여 내구성과 가용성을 높입니다.

그리고 최종 일관성을 제공하기 떄문에 데이터가 모든 노드에 복제된 후에는 일관성을 보장하지만 업데이트가 즉시 모든 노드에는 반영되지 않습니다.

활용기업

넷플릭스, 애플, 인스타그램, 우버 등등... 실시간으로 서비스를 제공하는데 유리하고 대규모 데이터를 처리하고 저장하기 위해 사용됨

Redis의 개념에 대해서 살펴보자

Redis는 인메모리 데이터 구조 저장소를 사용합니다.

이게 뭐냐면 일반적인 데이터베이스들은 디스크에 데이터를 저장해서 사용해서 메모리에 가져와서 실행시키고 디스크에 다시 저장하는 이런 방식을 사용하는데 이런 방식은 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 느려지게 되는데...

이를 보완하기 위해 캐시서버를 도입하여 사용하게 되는데 이를 이용할 수 있는것이 Redis입니다.

캐시는 한번 읽어온 데이터를 임의의 공간(메모리등)에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간입니다.

한 마디로 정리하자면 Redis는 데이터를 메모리에 저장하므로 빠른 속도로 데이터를 읽고 쓸수 있다 라고 정리할 수 있습니다.

그렇다면 여기서 드는 생각이 있을겁니다. "아 그러면 데이터의 영속성은 불안정한거 아니야?"

네 그래서 REDIS는 캐싱, 세션관리, 실시간 분석, 메시지 브로커 등에서 사용합니다 하지만 완전히 영속성이 없는건 아닙니다.

왜냐하면 디스크에 저장할 수도 있어 데이터 영속성을 유지할 수 있기 때문입니다.

캐시서버 패턴

Look aside cache
1. 클라이언트가 데이터를 요청
2. 웹서버는 데이터가 존재하는지 Cache 서버에 먼저 확인
3. Cache 서버에 데이터가 있으면 DB에 데이터를 조회하지 않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환 (Cache Hit)
4. Cache 서버에 데이터가 없으면 DB에 데이터를 조회하여 Cache 서버에 저장하고 결과값을 클라이언트에게 반환 (Cache Miss)

Write Back
1. 웹서버는 모든 데이터를 Cache 서버에 저장
2. Cache 서버에 특정 시간 동안 데이터가 저장됨
3. Cache 서버에 있는 데이터를 DB에 저장
4. DB에 저장된 Cache 서버의 데이터를 삭제

이 방식은 들어오는 데이터들이 저장되기 전에 메모리 공간에 머무르는데 이때 서버에 장애가 발생하여 다운된다면 데이터가 손실될 수 있다는 단점이 있습니다.

활용기업

트위터, 깃허브, 스냅챗 등등 빠른 성능을 제공하고 redis의 데이터 구조를 활용해 효율적으로 데이터를 관리하기 위해 사용되고 있습니다.

0개의 댓글