아스트릭스db에서 쿼리문은 일반 SQL문과 거의 동일한 것 같다.
조회, 그룹, 등록, 삭제 등 대부분이 기존 SQL문을 잘 알고 있다면 손쉽게 사용 가능 하였다.
간단한 쿼리문 동작 테스트를 위해 샘플 TYPE과 DATASET을 만들어 보았다.
CREATE TYPE NEW_TYPE AS{
text : string,
number : int,
types: string
};
CREATE DATASET NEW_TYPE_SET(NEW_TYPE) PRIMARY KEY number;
INSERT INTO NEW_TYPE_SET([
{"number":1, "text":"GOOD" ,"types":"A"},
{"number":2, "text":"BYE BYE" ,"types":"B"},
{"number":3, "text":"YES" ,"types":"A"},
{"number":4, "text":"QUDTLSDLTPWJD" ,"types":"B"},
{"number":5, "text":"AAA_AAA" ,"types":"A"},
{"number":6, "text":"HelloWorld" ,"types":"A"}
]);
별거 없는 코드이다. 조회는 저번처럼 SELECT로 가능하다.
그냥 동작시키기 뭐 해서 WHERE절에 조건을 주어 보았다.
뭐..훌륭하게 잘 동작하는 것 같다. 심지어 Join도 허용하여준다.
물론 통계같은 기능을 위한 Group도 가능하다.
재미있는 점은 grouping을 할 때 그룹할 항목말고 전체를 지목하면 전체를 자동으로 그룹핑 하여 준다.
그런데 왠만한 SQL문법이 잘 작동 하였다고 생각했는데..UPDATE에서 조금 당황하였다.
아스트릭스db에서는 안타깝게도 순수 UPDATE동작은 지원되지 않는다고 나와있다.
https://ci.apache.org/projects/asterixdb/sqlpp/primer-sqlpp.html
대신에 UPDATE말고 비슷한 기능인 UPSERT 라는 기능이 있는데 있으면 UPDATE 없으면 INSERT의 개념이라 볼 수 있다.
아래 쿼리를 만들어서 동작시켜 보았다.
USE TEST_DB;
UPSERT INTO NEW_TYPE_SET (
SELECT 'change' as text, number, types FROM NEW_TYPE_SET WHERE number=6
);
select 'change' as text로 된 부분이 내가 바꿀 데이터 부분이다.
즉, select해서 있으면 조회한 항목으로 업데이트, 없으면 등록이 실행 된다.
limit나 distinct 등 왠만한 질의문이 잘 동작 하였다.
이제 외부에서 데이터를 변동한 내용을 아스트릭스db에 전달하는 일만 남은 것 같다.
버전이 낮았을때 아스트릭스db에서는 get방식으로 요청을 받아 쿼리를 수행하고 결과를 되돌려 주는 기능이였다면, 지금 아스트릭스db에서는 post방식으로 요청하는 것으로 바뀌었다. * 2019.11.11 기준
괜히 get방식으로 요청해서 응답결과 404를 보지 않도록 해야 한다. post방식으로 요청하여야 하며, 해당 방법은 아래 공식 사이트에 잘 나와 있다.
https://ci.apache.org/projects/asterixdb/api.html
다음번에는 Java를 통해서 아스트릭스db에 질의문을 전달하고, 결과를 받는 기능에 대해서 작성하여 보겠다.
'AsterixDB' 카테고리의 다른 글
AsterixDB 테스트용 환경 구축 - 5 (AQL, SQL 그리고 퍼포먼스) (0) | 2019.12.17 |
---|---|
AsterixDB 테스트용 환경 구축 - 4 (Insert performance) (0) | 2019.12.10 |
AsterixDB 테스트용 환경 구축 - 3 (with Java, Java연동) (0) | 2019.11.04 |
AsterixDB 테스트용 환경 구축 - 1 (Install AsterixDB) (0) | 2019.10.31 |
댓글