속도가 엄청나게 빠르다는 '인메모리 데이터베이스' 기술은 약간 생소하게 다가온다.
그래서 위키피디아부터 찾아봤다.
인메모리 데이터베이스
인메모리 데이터베이스(In-memory Database)는 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템이다.
인메모리 데이터베이스는 디스크에 최적화된 데이터베이스보다 더 빠른데 그 까닭은 디스크 접근이 메모리 접근보다 느리기 때문이며, 이 데이터베이스는 내부 최적화 알고리즘이 더 단순하며 더 적은 CPU 명령을 실행한다. 메모리의 데이터에 접근하면 데이터를 조회할 때 검색 시간이 줄어들며 디스크보다 더 빠르고 더 예측 가능성 성능을 제공한다.[1][2]
인메모리 데이터 스토리지의 잠재적인 기술적 문제는 RAM의 휘발성이다. 구체적으로 말해 전원이 소실될 경우나 고의적인 상황 등에서 휘발성 RAM 안에 저장된 데이터는 손실된다.[3] 비휘발성 RAM 기술의 도입으로 인메모리 데이터베이스는 전력 손실에도 완전한 속도로 데이터를 유지할 수 있게 되었다.[4][5]
너무나도 간단했다.
컴퓨터로 치면
C드라이버에 저장하는게 아니고 16GB짜리 램에다가 데이터베이스를 저장하는 것이다.
얼마나 빠를지 상상이 되는가?
RDB(관계형DB) VS NoSQL, In-Memory를 아주 쉽게 비교해놓은 글이 있는데 한번 읽어보자.
1. RDB(Relational Database)
RDB는 관계형 데이터베이스며, 대표적으로 Mysql, Oracle, PostgreSql 등이 가장 많이 알려진 RDB입니다. 아래의 그림과 같은 구조를 나타냅니다.
- 특징
1) 테이블(Table) 마다 스키마(Schema)를 정의해야 됩니다.
2) 데이터 타입과 제약(Constraint)를 통해서 데이터의 정확성을 보장합니다.
3) SQL 질의문을 통해 요청을 처리합니다.
4) 성능을 높이려며 하드웨어(H/W)를 고성능으로 교체해야 된다. (Scale Up)
5) 고성능 하드웨어는 가격이 비싸기 때문에, RDB의 성능을 높이거나 확장하기 어렵기 때문에 확장성에 좋지 않습니다.
현재 대부분의 기업 및 나 또한 회사에서 사용하는게 바로 이 RDB이다.
2. NoSQL(Not only SQL)
대표적으로 mongoDB, hBase 등이 있으며, mongoDB의 경우 문서(document)형 데이터베이스이며, 많이 알려진 DB중 하나입니다. 그리고, hBase 같은 경우는 빅데이터 처리를 한다고 하면 누구나 한번쯤은 들어봤을 법한 DB입니다. 아래의 그림과 같은 구조를 나타냅니다.(Key-Value 형태도 나타내지만 in-memory에서 표현했습니다.)
- 특징
1) RDB의 확장성 이슈를 해결하기 위해 나온 데이터베이스 모델입니다.
2) 분산 컴퓨팅 활용이 목적이고, 이것을 통해 비교적 저렴한 가격으로 DB 성능을 높일 수 있습니다. (Scale Out)
3) 여러 개의 테이블이 아닌, 큰 테이블 하나만을 사용합니다.
4) 가장 많이 쓰이는 NoSQL의 방식은 key-value방식으로 데이터를 관리합니다.
5) SQL 질의문을 사용하지 않습니다.
6) Schema-less (구조 변경이 용이하고, 데이터 형식이 다양하며, 바꾸기 쉬우며, 정확성 보다는 데이터 양이 중요한 빅데이터(Big Data)에 사용합니다.
7) 대표적으로 MongoDB(document-oriented), redies(key-value) 등이 있습니다.
여러대의 컴퓨터에 분산 저장하는 구조이고, RDB에 비하면 돼지우리라고도 할 수 있다.
철저한 Transaction 하에서 Insert, Update, Delete가 반복적으로 발생하는 대기업의 DB에서는 적합하지 않을 수도 있다.
3. In-Memory DB
In-Memory DB의 경우에는 NoSQL 방식에 속하는 데이터베이스 이며, key-value방식을 사용하고 있습니다. 아래와 같은 구조를 나타냅니다.
- 특징
1) Memory의 가격이 용량 대비, 충분히 낮아지면서 빠른 데이터베이스 성능을 위해서 등장했습니다.
2) 디스트(Disk) 대신 메모리(Memory)를 사용함으로써, I/O(input/output)의 성능을 높여줍니다.
3) 대표적으로 Redis 및 LMDB 등이 있습니다.
인메모리는 위에서도 알 수 있듯이 RDB보다는 NoSQL을 많이 닮아있으며 (key-value 구조)
속도는 어마어마하게 빠르다.
그렇다면 서울대의 차상균 교수님이 주력으로 개발한 SAP HANA는 어떤 특징을 갖고있을까?
우선 '하나'라는 단어는 'DB'와 '처리장치'를 하나로 합쳤다는 뜻이다.
거두절미하고 SAP HANA의 가장 핵심적인 4가지 특징을 알아보자.
1. 디스크 입출력이 없음 : ALL 인메모리 구조이기 때문에
2. 컬럼 기반 저장 : 분석 대상컬럼만 선별적으로 검색 지원. 물리적 저장구조 최소화
3. 데이터 저장비용 절감 : 컬럼기반 저장구조와 다양한 압축 알고리즘 구현
4. 분석 부가기능 제공
그리고 기존의 DB와 SAP HANA를 잘 비교해놓은 표가 밑의 자료이다.
SAP HANA를 세 가지 키워드로 압축해보자면
컬럼기반 저장, 실시간 데이터복제, 빠른 속도 등으로 들 수있겠다.
RDB만 접하던 나로써는 궁금한 부분이다.
댓글 없음:
댓글 쓰기