본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


AsterixDB

AsterixDB 테스트용 환경 구축 - 5 (AQL, SQL 그리고 퍼포먼스)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 12. 17.

아스트릭스db에서는 본인들이 만든 쿼리 질의문(AQL)을 제공한다.

함수처럼 만들어 사용 할 수도있고..뭐 기능이 좋다고는 써 있던데..

흠..얼마나 빠른지 테스트 데이터베이스에 넣고 쿼리문을 한번 동작시켜 보았다.

 

아래 모습은 sql과 aql로 나누어진 질의문 모습이다.

my_data_set_result이라는 데이터셋에서 단순하게 COUNT 를 통해서 갯수를 가져오게 하였다.

- SQL 스타일
use test_db;
select count(*) from my_data_set_result;

- AQL 스타일
use dataverse test_db;
count(for $item in dataset my_data_set_result return $item);

my_data_set_result 에는 대략 백만건 이상의 데이터가 들어가 있었다.

number가 primary키로 사용되고 있으며 단순한 형태의 데이터만 저장하고 있었다.

사실..천만건을 넣으려고 하였는데 워낙 오래걸려서 포기하고 대충 백만건 넘는 데이터는 얼마나 나올지 확인하려고 위 쿼리문을 동작시켜 보았다.

 

결과는..거의 차이가 없었다.

SQL 형식으로 동작시킨 모습
AQL 형식으로 동작시킨 모습

 

 

 

단순히 count를 통해서 갯수를 가져오는 것 뿐인데도 속도가 느렸던 것 같았다.

일반 관계형 데이터베이스에서도 1백만건 count하면 0.00초정도 나오는데 말이다.

 

 

쿼리문 같은 경우에는 일반 프로그래밍 언어처럼 나열해서 사용 할 수 있었다.

간단한 예로 그룹화를 통해 데이터를 가져온다면 아래처럼 가능하다.

use dataverse 사용할DB;
for $item in dataset 조회할데이터셋
group by $results := $item.그룹할속성, $results2:= $item.그룹할속성 with $item
let $c := count($item)
order by $c desc
return {
        "types": $results,
        "auc": $results2,
        "count": $c
};

 

아무튼..일단 1천만건 넣고 시작해야되나보다.

아직 뭐가 빠르고 좋은지 모르겠다.

 

* AQL 예문(공식)

https://asterixdb.apache.org/docs/0.9.4.1/aql/manual.html

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글