1. Online Transaction Processing(OLTP)
온라인 트랜잭션 처리(Online transaction processing, OLTP)는 트랜잭션 지향 애플리케이션을 손쉽게 관리할 수 있도록 도와주는 정보 시스템의 한 계열로서, 일반적으로 데이터 기입 및 트랜잭션 처리를 위해 존재한다.
- 출처: 위키피디아
괜히 어렵게 보일 수 있는데 우리가 흔히 사용하는 관계형 데이터베이스들이 여기에 속한다. 사용자의 ID나 비밀번호를 저장하고 카트에 물건 담고 등등. 아래는 OLTP의 특징들이다.
1) OLTP의 특성
- Records를 사용자가 입력한 키를 기반으로 삽입, 읽기, 또는 업데이트를 한다.
- 일반 사용자와 상호작용을 위해 주로 사용한다. (ex. e-commerce site)
- Requests가 엄청나게 많이 들어오지만 정작 각 쿼리들은 적은 양의 Record들만 건드린다.
- 주요 이슈는 들어온 요청을 처리하기 위한 Disk seek time
- 비교적 최근 데이터들이 주로 사용되며 중요하다.
일반 사용자들이 주로 접근하는 데이터베이스다 보니 복잡한 쿼리는 많지 않다. OLTP의 엔진 또한 매우 단순하다. setter와 getter 역할을 하는 두개의 기능이 있다.
2) OLTP engine
db_set |
- arguments로 key와 value를 가져온다. - 받아온 key와 value를 데이터베이스 파일에 추가한다. |
db_get |
- 쿼리의 key로 argument를 받는다. - database 파일에 키를 찾아서 value를 return한다. |
많은 양의 쿼리를 빠르게 처리해야하기 때문에 Indexing 방식이 굉장히 중요하다. 무결성을 지키면서 데이터를 효과적으로 처리해야 하기 때문에 많은 기술들이 적립되어 왔다. 대표적인 indexing method들로는 Hash index, SSTable, B-Tree 등이 있다.
2. OnLine Analytical Processing(OLAP)
온라인 분석 처리(Online Analytical Processing, OLAP)는 의사결정 지원 시스템 가운데 대표적인 예로, 사용자가 동일한 데이터를 여러 기준을 이용하는 다양한 방식으로 바라보면서 다차원 데이터 분석을 할 수 있도록 도와준다.
- 출처: 위키피디아
즉, 데이터의 분석이 목적이다. 일반 사용자가 레코드를 업로드하는 것이 아니라 데이터 전문가들이 사용하는 엔진.
1) OLTP의 특성
- 주로 비지니스 전문가들이 사용한다.(end users를 위한 것이 아님)
- 쿼리의 양이 굉장히 적지만 하나의 쿼리가 많은 레코드를 처리한다.
- aggregations를 계산(count, sum, average)
- 주요 이슈는 한 번에 얼마나 많은 레코드를 처리하는가(Disk bandwidth)
- 과거의 데이터들도 로그 분석을 위하여 많이 필요.
- 데이터의 크기가 OLAP보다 훨씬 크다.
- Column 지향적인 저장방식의 쿼리
2) Column-oriented storage for OLAP query
기존의 RDB(OTLP)에서는 레코드 단위로 데이터를 저장하고 읽었다. 하지만 OLAP에서는 레코드의 모든 column들을 가져올 필요가 없다. 따라서 OLAP의 쿼리들은 특정 colum들의 값들만 가져올수 있도록 짜여져 있으며 이러한 것을 Columnal database라 한다.
OLAP는 분석의 영역으로 분석된 결과가 리턴된다. raw data가 리턴되는 OLTP와는 확실히 다르다. 쿼리 또한 key에 의해서 작성된다.
3. OLTP vs OLAP 정리
4. Extract-Transform-Load(ETL)
OLTP DB에서 데이터들을 가져와서 한 곳에 모으는 것이 ETL 기법이다. 이 '한 곳'을 data warehouse라고 부르며 OLAP는 이 data warehouse에서 처리가 이루어진다.
각기 다른 OLTP DB에서 관련있는 데이터들을 추출해서(Extract), 제각각의 포멧들을 호환되게 변환시켜 주고(Transform), 이것을 data warehouse에 가져온다.(Load)
OLAP와 OLTP는 비슷한 인터페이스와 쿼리를 갖고 있음에도 내부적인 구조는 다르다. 그렇기 때문에 OLAP를 위한 데이터베이스, 즉 data warehouse를 만듦으로서 큰 데이터를 가져오는데 최적화된 구조를 만든다.