1.쿼리 문법

Edit

로그프레소는 단순성, 응집성, 재사용성, 유연성을 극대화하는 리눅스나 유닉스 운영체제의 설계 철학을 계승하고 있습니다. 개별 명령어는 가장 작고 단순한 기능을 수행하지만, 명령어 여러개를 조합하는 것만으로 복잡한 데이터 처리를 수행할 수 있도록 설계되어 있습니다. 로그프레소의 문법은 파이프를 구분자로 하여 각 명령어의 입출력을 연결하는 형식으로 구성됩니다.

예를 들어, 가장 단순하게 A 테이블에서 데이터를 조회하려면 아래와 같이 쿼리합니다:

table A

조회 결과에서 line 필드가 failure 라는 문자열을 포함하는 행만 조회하려면 다음과 같이 이어집니다:

table A | search line == "*failure*"

이제 failure 문자열을 포함하는 행이 10분 단위로 몇 건 씩 발생하는지 조회하려면 다음과 같이 쿼리합니다:

table A | search line == "*failure*" | timechart span=10m count

이와 같이 첫번째 쿼리 명령어의 출력은 두번째 쿼리 명령어의 입력으로 들어가고, 두번째 쿼리 명령어의 출력은 세번째 쿼리 명령어의 입력으로 들어가며, 세번째 쿼리 명령어의 출력은 쿼리 결과로 전달됩니다. 쿼리 결과는 클라이언트의 요청 형태에 따라 디스크에 임시로 기록되거나, 네트워크를 경유하여 즉시 스트리밍 될 수 있습니다.

관계형 데이터베이스에서 널리 사용되는 SQL(구조화된 질의 언어)은 데이터 처리의 상세한 과정을 명시하지 않고도 사용자가 원하는 데이터를 얻어낼 수 있는 선언적인 문법 특징을 가지고 있지만, 표준 SQL은 비정형적인 데이터를 처리하는데 많은 제약이 있을 뿐 아니라 스트리밍 처리를 기술하기에 자연스럽지 않은 단점이 있습니다.

이후의 절에서는 로그프레소에서 지원하는 다양한 쿼리 유형에 대하여 알아보겠습니다.

Count of comments [0]