이번에 쓸 포스트는 사람들이 많이 사용하는 메모리 기반의 DB인 레디스에 대한 글이다.
그 전에 알아볼 것이 정말 많다.
모든 것을 설명하면서 진행을 하므로 글이 상당히 길다.
대표적인 데이터베이스에는 RDB, NoSQL, In-Memory DB로 총 세가지가 존재하는데
간단하게 특징을 확인해보고, 본론인 Redis(In-Memory DB)에 대해 알아보려고 한다.
1. RDB의 특징 (관계형 데이터베이스)
2. NoSQL의 특징
3. In-Memory DB의 특징
그럼 이제부터 본론이다.
메모리는 컴퓨터 하드웨어 구성요소 3가지 중 하나로 저장을 담당하고 있는 부품이다.
컴퓨터 하드웨어 구성 요소 3가지
컴퓨터가 데이터를 저장할 때 사용하는 것이 바로 RAM(Random Access Memory)이고
어떤 위치에서던 똑같은 속도로 접근하여 읽고 쓸 수 있다는 의미를 가지고 있다.
이러한 과정을 통해서 컴퓨터는 작동을 하게되는데, 많은 사람들이 아는 것처럼 컴퓨터는 0과 1만 사용한다.
전류를 통하여 작동을 하기 때문에 물리적 거리가 상당히 중요한데
CPU와 RAM 사이에는 레지스터와 캐시라는 메모리 계층이 있지만 저장공간이 좁고 비싸서
RAM이 주 기억장치로, 컴퓨터가 켜진 순간부터 꺼지는 그 순간까지 데이터를 담아놓고 있다.
메모리의 특징은 전원이 꺼질 경우 데이터가 모조리 날라가는 휘발성
이라는 것이다.
어째서 꼭, 휘발성이여야하는지도 한번 찾아봤는데 물리학의 문제가 좀 있는 것 같다.
참고자료 : https://pcguide101.com/ram/why-ram-is-called-volatile-memory/
그리고 위에서 언급한 것처럼 데이터를 통신하기 위해서는 물리적 거리가 중요한데,
램은 CPU와 물리적으로 가까워서 데이터를 처리하는 것이 매우 빠르다.
반대로 보조기억장치라 부르는 HDD(하드디스크)와 SSD(스스디)의 경우에는
전원이 꺼져도 데이터가 날라가지 않는 비휘발성의 속성을 가지고 있고
CPU와의 거리가 상당히 멀기 때문에 데이터를 처리하는 속도가 느리다.
캐시(Cache)란 데이터를 미리 복사해놓는 임시 저장소기도 하며 빠른 장치와 느린 장치에서 속도 차이로 인한 병목 현상을 줄이기 위한 메모리다.
실제로 RAM과 CPU는 연산속도의 편차가 심하여 캐시메모리를 중간에 두는 것으로 속도 차이를 해결하고 있다.
비슷한 논리로 CPU와 HDD&SDD 속도 차이가 매우 심하여 RAM을 캐시메모리라고도 부르기도 한다.
임시로 저장한다는 특징을 통하여 한번 계산되었던 것을 다시 요청할 경우에 빠르게 가져올 수 있다.
위의 설명으로 메모리란 무엇이고 특징은 무엇인지 알 수 있게 되었다.
드디어 본론인 In-Memory DB가 탄생한 이유다.
구글링을 계속 해본 결과, 2005년 전까지 In-Memory DB라는 것이 인기가 없었다.
그리고 대략 2008~2009년 이후부터 폭발적인 글을 확인할 수 있었는데 이 시기가 어떤 일이 있었는지 모르겠다(...)
찾아본 글에 의하면, 사물 인터넷(IoT)의 출현과 클라우드 기반 솔루션이 성장하면서 실시간으로 데이터를 처리해야 할 필요성이 생겼고,
메모리의 가격이 상대적으로 저렴해지면서 데이터를 저장하는데 사용했다. 라고 하는 것 같다.
결국은 기존의 DB로는 급격하게 늘어난 데이터를 감당할 수 없었고,
여러가지 중요한 시스템에 실시간에 가까운 데이터 처리가 필요해서 발전했다. 라고 정리를 할 수 있는 것 같다.
그럼 이제 대표적인 In-Memory DB, Memcached와 Redis의 특징을 알아보자.
DB-Engines Ranking of Key-value Stores
레디스를 사람들이 많은 사람들이 사용하냐고 질문을 받았을 때
나는 사용자가 많기 때문에 정보가 많아서 적용을 했다. 라고 대답을 했었다.
하지만 이렇게 정리를 하면서 사람들이 왜 많이 쓰는지 이해를 할 것 같다.
멤캐시드의 장점은 작은 데이터를 임시저장하는 것에 강점을 가지고 있고,
멀티쓰레드를 활용하여 다중처리가 빠르다는 장점이 있다.
하지만 그것을 제외하고 모든 것이 단점이다.
극한의 상황에 도달을 한다면 성능을 위하여 큰 노력을 사용하게 되지만
일반적인 경우에서는 편의성을 선택을 하길 마련인데, Redis를 선택한다는 것이 그것과 동일한 선상에 있는 것 같다.
애초에 저장할 공간이 없다고 데이터를 일부 지운다는 것은.... 로그같은 경우에는 그렇게 사용될 수도 있긴 하겠지만
너무 좋지 못한 방향이라고 생각한다.
설정을 할 경우에는 지울 수 있다고는 하지만, 자료가 상당히 모자라서 직접 만들어야한다는 것은 어쩔 수 없는 듯 하다.
끝!!!!!
System Properties Comparison Memcached vs. Redis vs. SingleStore
Difference between Redis and Memcached
[Database] Redis에 대해 알아보자 (Redis 컬렉션, Sentinel, Cluster, 운영시 장애 포인트)
Redis의 개념과 특징, 아키텍처
인메모리 데이터베이스란 무엇입니까?
Redis와 Memcached를 비교하는 영상
https://www.youtube.com/watch?v=LLFMTEaW98g
https://www.youtube.com/watch?v=5DstN-gg16o
https://www.youtube.com/watch?v=BWt4XYuDchM
꼭...보자 할거 정리좀하고 (ㅠㅠ)
좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!
Memcached는 적은 양의 데이터를 임시로 저장할 수 있는 장점이 있습니다.
빠른 다중 처리는 다중 스레딩의 이점입니다.
그러나 그 외에는 모든 것이 부정적이다.