데이터 시스템의 기초 - 트랜잭션, OLAP, OLTP
*본 포스팅은 '데이터 중심 애플리케이션 설계(위키북스)' 책을 참고하여 학습한 내용을 요약 정리한 것입니다*
트랜잭션(Transaction)
데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위 (위키백과)
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산 (참조 - coding-factory.tistory.com/226)
[데이터 중심 애플리케이션 설계]
논리 단위의 형태로서 읽기와 쓰기 그룹을 나타낸다.
트랜잭션이 반드시 ACID(원자성), 일관성, 격리성, 지속성 등 속성을 가질 필요가 없다. 트랜잭션 처리는 주기적으로 수행되는 (예를 들어 하루에 한 번) 일괄 처리 작업과 달리 클라이언트가 지연 시간이 낮은 읽기와 쓰기를 가능하게 한다는 의미.
OLTP(Online Transaction Processing)
보통 애플리케이션은 색인을 사용해 일부 키에 대한 적은 수의 레코드를 찾는다. 레코드는 사용자 입력을 기반으로 삽입되거나 갱신된다. 이런 애플리케이션은 대화식이기 때문에 이러한 접근 패턴을 온라인 트랜잭션 처리라고 한다.
OLAP(Online Analytic Processing)
데이터 분석은 트랜잭션과 접근 패턴이 매우 다른데, 보통 분석 질의는 사용자에게 원시 데이터(raw data)를 반환하는 것이 아니라 많은 수의 레코드를 스캔해 레코드 당 일부 칼럼만 읽어(count, sum, average와 같은) 집계 통계를 계산해야 한다. 이런 질의는 보통 비즈니스 분석가가 작성하며 회사 경영진이 더 나은 의사결정을 하게끔 돕는 보고서(BI=Business Intelligence)를 제공한다. 이러한 데이터베이스 사용 패턴을 의미한다.
OLTP vs OLAP
특성 | OLTP(트랜잭션 처리 시스템) | OLAP(분석 시스템) |
주요 읽기 패턴 | 질의 당 적은 수의 레코드, 키 기준으로 가져옴 | 많은 레코드에 대한 집계 |
주요 쓰기 패턴 | 임의 접근, 사용자 입력을 낮은 지연 시간으로 기록 | 대규모 불러오기(bulk import, ETL)또는 이벤트 스트림 |
주요 사용처 | 웹 애플리케이션을 통한 최종 사용자/소비자 | 의사결정 지원을 위한 내부 분석가 |
데이터 표현 | 데이터의 최신 상태(현재 시점) | 시간이 지나며 일어난 이벤트 이력 |
데이터셋 크기 | 기가바이트에서 테라바이트 | 테라바이트에서 페타바이트 |
참고) 처음에는 트랜잭션 처리와 분석 질의를 위해 동일한 데이터 베이스를 사용하였고, 이와 관련하여 SQL이 매우 유연한 모습을 보여 OLTP유형 질의 뿐만 아니라 OLAP 유형 질의에서도 잘 동작했다. but 80년대 후반부터 OLTP 시스템을 분석 목적으로 사용하지 않고 개별 데이터베이스에서 분석을 수행하는 경향을 보였는데 이 개별 데이터 베이스가 '데이터 웨어하우스(data warehouse)'이다.
'TECH > Data' 카테고리의 다른 글
[파이썬을 이용한 데이터 분석] 6. pandas 4 (0) | 2020.07.10 |
---|---|
[파이썬을 이용한 데이터 분석] 5. Pandas 3 (0) | 2020.06.02 |
[파이썬을 이용한 데이터 분석] 4. Pandas 2 (0) | 2020.06.02 |
[파이썬을 이용한 데이터 분석] 3. Pandas (0) | 2020.05.29 |
[파이썬을 이용한 데이터 분석] 2. Numpy 2 (0) | 2020.05.28 |