로그 테이블 (Log Table)
개념
로그 테이블은 입력되는 데이터가 시계열 데이터인 머신 로그 데이터를 저장할 수 있는 테이블이다.
이 테이블에는 데이터가 무한히 입력되며, 각 필드의 값에는 고유한 의미가 있다. 또한 텍스트 필드(varchar 혹은 text) 를 통해 데이터를 검색할 수 있으며, 빠른 통계 연산이 가능하다.
마크베이스에서 테이블이라고 하면 기본적으로 “로그 테이블"을 가리킨다.
로그 테이블의 특징은 다음과 같다.
숨은 시간 컬럼 존재
모든 로그 테이블에는 _arrival_time이라는 숨겨진 컬럼이 있다. 이 컬럼에는 해당 레코드가 생성된 시간이 저장되어 있으며, 나노초 단위 정밀도를 지원한다.
시간 역순 검색
일반 데이터베이스는 데이터 검색 시 입력 순서와 무관하게 출력된다. 그러나 Machbase의 로그 테이블은 별도의 ORDER BY를 통한 정렬 옵션을 주지 않는 한 언제나 최신 데이터가 먼저 출력된다. 이는 _arrival_time 컬럼을 통해서도 확인할 수 있다.
이렇게 설계된 이유는 머신 로그 데이터에서는 최근 데이터의 중요도가 이전의 데이터에 비해 훨씬 높기 때문이다.
입력 후 조회 전용
Machbase의 로그 테이블은 변경(Update) 연산이 존재하지 않는다. 다시 말해 사용자 로그 데이터가 일단 Machbase에 저장되고 나면, 해당 데이터에 대한 변경 연산을 불허함으로써 데이터의 안정성과 로그 데이터 자체의 무결성을 엔진 레벨에서 지원하는 것이다.
제한된 삭제 허용
Machbase가 비록 데이터의 변경은 불허하더라도 특수한 상황에서 필요한 데이터의 삭제는 허용한다. 그러나 전통적인 데이터베이스에서처럼 임의의 데이터를 삭제할 수는 없으며, 가장 오래된 데이터부터 순차적으로 삭제하는 것만 가능하다. 이 기능을 통해 저장공간에 제약이 있는 임베디드 장비나 관리가 쉽지 않은 형태의 장비에서 편리하게 주기적으로 데이터를 삭제하여 관리할 수 있다.
텍스트 검색 기능 지원
Machbase는 일반 데이터베이스의 문자열을 취급하는 방식에서 한걸음 더 나아가 단어 기반의 검색 기능을 제공한다. 이 기능은 머신 로그 데이터의 용도에 가장 잘 부합하는 것으로서, 특정 시간대에 저장된 로그 데이터에 대한 검색이 비즈니스 상황에서 주요한 기능으로 사용된다.
이를 위해서 Machbase는 실시간 역인덱스를 제공함으로써 데이터의 삽입과 동시에 실시간으로 텍스트 검색이 가능하게 함으로써 빠른 장애 진단 및 장애 상황 해결에 큰 도움을 줄 수 있다.
특수 데이터 타입 지원
Machbase는 IPv4, IPv6를 지원한다. 이는 인터넷 주소를 나타내는 특수한 타입으로서 수많은 머신 로그 데이터가 주로 표현하는 주소 체계를 반영한 것이다. 이 데이터 타입을 활용하여 특정 주소의 검색과 추출을 손쉽게 할 수 있다.
또한, select * from t1 where ipaddr = ‘192.168.0.*’ 과 같은 확장 문법을 활용하여, 특정 주소 체계의 일부 주소 범위를 검색하거나 추출할 수 있는 기능도 함께 제공한다. 또한 netmask 연산자를 제공하여 특정 인터넷 주소가 특정한 주소 범위에 포함되는지 쉽게 판단할 수 있다.
LOB(Large Object) 데이터 지원
로그 테이블은 64MB 바이트까지 저장 가능한 Text 및 Binary 타입을 제공한다.
만일 해당 데이터가 텍스트 문서 형태로서 검색이 필요한 경우에는 Text 타입으로 저장하고 데이터를 검색할 수 있다. 만일 해당 데이터가 그림이나 음악과 같은 2진 데이터 형태인 경우 binary 타입으로 저장할 수 있다.
시간 기반 파티셔닝
로그 테이블은 시간 축을 기준으로 특정 개수의 레코드 및 인덱스를 유지하고 있는 파티션 파일의 연속체이다. 다시 말해 데이터가 계속 입력됨에 따라 새로운 파티션 파일이 생성되고, 그 파티션에 특정 개수의 레코드가 모두 차게 되면 다음 파티션이 생성된다는 의미이다.
파티션으로 관리하는 이유는 주로 시간을 기준으로 검색이 발생하는 로그 데이터의 특성을 반영한 것이며 데이터 입력 성능에 대단히 큰 장점이 있다. 통계 분석을 위한 초고속 데이터 접근에 용이한 구조이기 때문이다.