Published on

캐시와 데이터베이스는 성능차이가 왜 일어나는가?

Authors

개발을 하면서 데이터를 저장하는 방식에는 크게 두가지가 있습니다. 바로 캐시와 DB 입니다. (NoSQL 과 SQL을 구분X.)

종종 개발하며 DB I/O 작업이 많은 로직을 개선하기 위한 방법으로 캐시를 떠올립니다. 그리고 일부 데이터를 캐싱해서 사용하면 속도 측면에서 확실히 개선되는 것을 느낍니다.

그런데 캐시를 담아두는 곳 또한 결국 데이터를 담아두는 곳 인데, 왜 캐시를 사용하는 것은 비용이 덜 들고 DB를 사용하는 것이 비용이 더 든다고 알고 있을까요?

1. 저장소 구분(메모리기반 VS 디스크기반)

1.1. 메모리 기반 저장소

메모리 기반 저장소는 RAM(랜덤 액세스 메모리)와 같은 메모리 장치를 사용하여 데이터를 저장합니다.

이 방식은 마치 머릿속에 정보를 담아두는 것과 비슷하며, 필요할 때 즉시 꺼내 쓸 수 있어 매우 빠릅니다.

그러나 전원이 꺼지면 데이터가 사라지는 휘발성의 특성을 가지고 있습니다.

1.1.1. 특징

  • 빠른 데이터 접근: 메모리는 데이터 접근 속도가 매우 빨라, 고성능이 요구되는 환경에서 자주 사용됩니다.
  • 휘발성: 전원이 꺼지면 데이터가 사라지므로, 주로 임시 데이터 저장이나 빠른 접근이 필요한 데이터 캐싱에 사용됩니다.
  • 비용: 메모리는 비용이 비싸므로, 대량의 데이터를 오랫동안 저장하는 용도로는 적합하지 않을 수 있습니다.

1.2. 디스크 기반 저장소

디스크 기반 저장소는 HDD(하드 디스크 드라이브)나 SSD(솔리드 스테이트 드라이브)와 같은 디스크 장치를 사용하여 데이터를 저장합니다.

이 방식은 책장에 책을 꽂아두는 것과 비슷하며, 정보를 영구적으로 보관할 수 있지만, 필요한 정보를 찾기 위해 시간이 좀 더 걸립니다.

1.2.1. 특징

  • 데이터 영속성: 전원이 꺼져도 데이터가 유지되므로, 중요한 정보를 장기간 저장하는 데 적합합니다.
  • 상대적으로 느린 접근 속도: 디스크 접근은 메모리 접근에 비해 상대적으로 느리므로, 대량의 데이터 처리나 복잡한 쿼리에는 시간이 더 걸릴 수 있습니다.
  • 비용 효율적: 대용량 데이터를 저장하는 데 비용이 상대적으로 저렴합니다.

2. 원리와 개념

메모리 기반 캐시 시스템이 디스크 기반 데이터베이스보다 데이터 접근 속도가 빠른 이유는 메모리가 전기 신호를 사용하여 데이터에 직접 접근하기 때문입니다.

당연하게도 물리적인 움직임이 필요한 디스크 접근 방식에 비해 훨씬 빠른 속도를 가능하게 합니다.

이러한 차이 때문에 많은 애플리케이션에서는 두 가지 방식을 함께 사용하여, 성능과 데이터 영속성 사이의 균형을 맞추고 있습니다.

예를 들어, 자주 사용되는 데이터는 메모리 기반 캐시에 저장하여 빠르게 접근하고, 데이터베이스는 변경되지 않는 데이터나 영구적으로 저장해야 하는 데이터를 관리하는 데 사용됩니다.

메모리 기반 캐시 시스템(예: Redis, Memcached)과 디스크 기반 데이터베이스(예: MySQL, PostgreSQL) 사이의 데이터 접근 속도 차이는 주로 데이터를 저장하고 접근하는 매체의 물리적 특성 때문입니다.

이를 이해하기 위해서는 컴퓨터의 메모리와 디스크가 데이터를 어떻게 처리하는지 알아볼 필요가 있습니다.

2.1. 메모리 기반 - 캐시 시스템

메모리 기반 캐시 시스템은 데이터를 RAM(랜덤 액세스 메모리)에 저장합니다. RAM은 컴퓨터의 주 메모리로, CPU가 직접 접근할 수 있는 고속의 저장소입니다.

2.1.1. 특징

  • 데이터 접근 속도: RAM은 전기 신호를 사용하여 데이터를 저장하고 접근합니다. 이러한 전기 신호는 빛의 속도에 가깝기 때문에, 데이터 접근 시간은 매우 짧습니다(일반적으로 나노초 단위).
  • 휘발성: RAM은 전원이 공급되는 동안에만 데이터를 유지할 수 있는 휘발성 메모리입니다. 전원이 꺼지면 저장된 모든 데이터가 사라집니다.
  • 직접 접근: RAM은 데이터에 대한 랜덤 액세스를 지원합니다. 즉, 메모리의 어떤 부분에도 직접 접근하여 즉시 데이터를 읽거나 쓸 수 있습니다.

2.2. 디스크 기반 - 데이터베이스

디스크 기반 데이터베이스는 데이터를 HDD(하드 디스크 드라이브)나 SSD(솔리드 스테이트 드라이브)와 같은 디스크에 저장합니다. 이러한 디스크는 데이터를 영구적으로 저장할 수 있는 비휘발성 저장소입니다.

2.2.1 특징

  • 데이터 접근 속도: HDD는 회전하는 디스크(플래터)와 이를 읽고 쓰는 헤드를 사용해서 데이터를 저장하는데, 이는 물리적인 움직임입니다. 당연히 접근 시간이 메모리에 비해 상대적으로 길어집니다(일반적으로 밀리초 단위).SSD는 반도체를 사용하여 데이터를 저장하며, HDD에 비해 빠르지만 RAM보다는 여전히 느립니다.
  • 비휘발성: 디스크는 전원이 꺼져도 데이터를 유지할 수 있는 비휘발성입니다. 따라서 데이터의 영구적인 저장이 가능합니다.
  • 순차적/랜덤 접근: HDD는 순차적 접근에 최적화되어 있으며, 랜덤 접근은 상대적으로 느립니다. SSD는 랜덤 접근 성능이 뛰어나지만, RAM에 비해 여전히 느립니다.

2.3. SSD 저장원리

이 부분을 깊게 생각해보니, 그 원리가 궁금해졌고 알아봤습니다.

2.3.1. NAND 플래시 메모리와 플로팅게이트

전원이 꺼졌는데, 어떻게 데이터가 보존되는가?

SSD(Solid State Drive)가 전원이 꺼져도 데이터를 유지할 수 있는 능력은 그 내부에 사용되는 NAND 플래시 메모리의 특성 때문입니다.

NAND 플래시 메모리는 비휘발성 저장 매체로, 전원 공급이 중단되어도 데이터를 보존할 수 있습니다.

수많은 플래시 메모리 셀로 구성되어 있으며, 각 메모리 셀은 데이터를 저장할 수 있는 플로팅 게이트(Floating Gate)를 포함하고 있습니다.

이 플로팅 게이트는 전자를 저장할 수 있는 격리된 영역입니다.

2.3.2. SSD 저장 프로세스

  1. 데이터 쓰기: 데이터를 쓸 때, 전자가 플로팅 게이트로 주입되어 이 영역에 갇힙니다. 이 전자의 존재 유무는 메모리 셀에 저장된 데이터 비트(0 또는 1)를 나타냅니다.
  2. 데이터 보존: 플로팅 게이트는 매우 효과적으로 전자를 격리시키는 구조를 가지고 있어서, 전원이 꺼진 후에도 전자가 빠져나가지 않습니다. 이로 인해 데이터가 메모리 셀에 장기간 보존될 수 있습니다.
  3. 데이터 읽기: 데이터를 읽을 때, 메모리 셀의 전하 상태가 검사됩니다. 플로팅 게이트에 전자가 존재하는지 존재하지 않는지( 1과 0) 확인하여 데이터를 읽습니다.

메모리 기반과 디스크 기반 저장소는 각각의 장단점을 가지고 있으며, 애플리케이션의 요구 사항에 따라 적절한 저장소를 선택해야 합니다.

메모리 기반 저장소는 빠른 데이터 접근이 필요할 때 유용하며, 디스크 기반 저장소는 데이터의 영속적인 저장이 필요할 때 적합합니다.

  • hongreat 블로그의 글을 봐주셔서 감사합니다!^^
  • 내용에 잘못된 부분이나 의문점이 있으시다면 댓글 부탁 & 환영 합니다~!
  • (하단의 버튼을 누르시면 댓글을 보거나 작성할 수 있습니다.)
Buy Me A Coffee