본문 바로가기

IT105

MCC (Multiversion Concurrency Control) 이번 포스팅에서는 MVCC라는 단어에 대한 개념을 정리해보려고 한다.MCC는 Multiversion Concurrency Control로 MVCC라고도 한다. 단어에서도 어림짐작 할 수 있듯이 여러 버전을 동시에 제어하는 것이다. 예시에 보았듯이, MCC 또는 MVCC는 DBMS에서 동시에 들어오는 요청을 제어 할 수 있도록 사용하는 일반적인 방식이다. 사실 동시 제어를 가장 간단하게 하는 방법은 쓰기 작업이 끝날때까지 대기하고 이후 읽는 것인데 이 방법은 사용자를 오랫동안 기다리게 할 수 있다.때문에 MCC는 각 요청 마다 동일한 데이터지만 버전이 다른 스냅샷(해당 시점의 데이터)를 가진 뒤, 스냅샷의 데이터가 수정되면 또 다른 버전을 만들고 이전 버전은 주기적으로 삭제*한다. 때문에 읽고 있는 스냅샷.. 2019. 2. 19.
LZW Compression 이번 포스팅에서는 LZW 압축 알고리즘에 대해 알아보려고 한다. LZW 알고리즘은 Lempel-Ziv-Welch(사람 이름)*의 약자로 무손실 압축 알고리즘이다.* Lempel-Ziv가 만든 LZ78 알고리즘을 개선한 것이다.이 LZW 압축 알고리즘은 단순해서 GIF, TIFF와 같은 파일에 주로 사용되지만 Unix에서 단순 파일을 압축하는 용도로도 많이 사용된다. 그럼 본격적으로 LZW에 대해 살펴보기 전에 간단한 핵심 아이디어를 살펴보면 데이터 공간을 절약하기 위해 패턴을 만들어서 재사용한다. 사실 압축 알고리즘이 패턴을 사용하는 것은 일반적이긴 한데 어떻게 패턴을 만들어서 사용하는지 아래에서 더 자세히 살펴보도록 하자. 일반적으로 ASCII 코드는 각 문자를 8비트로 나타낸다. 때문에 최대 표현할 .. 2019. 2. 18.
[AWS] Kinesis Data Streams - Usage 이번 포스팅에서는 Kinesis 데이터 스트림이 어떻게 쓰이는지 실제 아키텍처 및 사례를 확인해 보려고 한다. 그림 1. Overview of Medical Device Use-Case – Real-Time Analytics 그림 1을 확인해보면 Kinesis에서 제공하는 여러 기능을 확인 할 수 있다. 이 중에서 4번을 면밀히 살펴보면 Kinesis 데이터 스트림이 적용된 것을 확인 할 수 있다. (여기서 공급자는 Kinesis Analytics이고 소비자는 Lambda이다.)간단한 Flow를 살펴보면 Analytics에서 파악한 Anomaly 점수를 데이터 스트림으로 보내고 비즈니스 로직을 처리하는 Lambda에서 점수를 바탕으로 경보를 발생하기 위해 SNS에게 데이터를 전달하는 구조이다. 즉, Io.. 2019. 2. 16.
[AWS] Kinesis Data Streams - Internals 이번 포스팅에서는 Kinesis 데이터 스트림의 내부를 살펴보려고 한다.(참조에서 언급된 자료는 발표 자료를 바탕으로 한다. 그림 1. Kinesis Capacity Kinesis 스트림에 레코드가 들어왔을 때, 그림 1에서 보는 것처럼 기본적으로 레코드에 접근할 수 있는 시간은 24시간이다.그렇지만 최대 168시간 (7일) 까지 늘릴 수 있다. (시간이 늘어나면 비용 또한 늘어난다는 것을 고려해야 한다.) Kinesis는 자체적으로(?) KPL(Kinesis Provider Library), KCL(Kinesis Consumer Library)를 제공하고 있다. 해당 라이브러리는 High Level API로 공급자와 소비자 측에서 Kinesis를 손쉽게 사용 할 수 있게 한다.그런데 https://gi.. 2019. 2. 16.