이번 글에서는 아랑고DB의 쉘을 사용해 아랑고DB의 기초 사용법을 배워보려고 한다. 사실 실제 작업은 Python 커넥터를 통해서 하는 경우가 대부분이지만, 실체를 알기 위해서는 직접 쉘로 붙어보는 것이 가장 효과적이라고 생각하기 때문이다.
들어가기에 앞서
아랑고DB가 이미 설치되어있다고 가정한다. 만약 아직 설치되지 않았다면 여기를 보고 따라 설치해보자.
또한 아랑고쉘은 JavaScript Shell 환경을 사용한다고 한다. 따라서 JS문법을 그대로 이용할 수 있다.
1. 데이터베이스 수준 명령어
초기 실행은 arangosh 명령어를 통해 한다. 그리고 초기에 입력했던 root 계정의 비밀번호를 입력해주면 된다.
쉘에 접속 후 tutorial 명령어를 입력하면 간단한 튜토리얼도 따라할 수 있으니 참고하자.
쉘에 접속했을 때 기본 데이터베이스는 _system 이다. 이제 movies라는 데이터베이스를 만들고, titles라는 도큐먼트 컬렉션을 만들어 볼 것이다.
데이터베이스 이름을 짓는 Naming Convention도 읽어보자.
도큐먼트 컬렉션과 엣지 컬렉션은 데이터 모델의 성격에 따라 구분되는 컬렉션이다. 도큐먼트 컬렉션은 그래프DB에서 노드(버텍스)의 개념이고, 엣지 컬렉션은 이 노드들 사이의 관계를 나타내는 컬렉션이다.
2. 컬렉션 수준 명령어
이제 생성된 컬렉션 안에 도큐먼트를 추가해보자. 사실 쉘에서 데이터를 다루는 방식은 불편하기 때문에 이런 방법도 있다 정도로만 끝내려고 한다.
컬렉션 수준에서 사용하는 명령어들은 db.컬렉션명의 형태에 CRUD 관련 명령어들이 붙는 형태이다.
예를 들어 다음과 같은 식이다.
_key값을 어떻게 설정하느냐에 따라 쿼리의 효율이 하늘과 땅 차이이기 때문에 설계를 잘 해보자. 키 이름의 네이밍 컨벤션도 확인해보자.
READ
데이터를 조회하는 방법도 간단하다.
toArray()를 통해 해당 컬렉션의 전체 도큐먼트를 조회하거나
byExample({조건})의 형태로 조건에 해당하는 도큐먼트만 조회할 수 있다
UPDATE
도큐먼트 업데이트는 update(업데이트 매치 조건, 업데이트 할 필드) 형태로 쓴다. 여기서 주목할 점은 리턴값으로 _rev, _oldRev를 제공한다는 점이다.
rev는 revision의 약자로 일종의 도큐먼트의 버전과 같은 개념인데, 아랑고쉘의 tutorial에서는 이 revision 이 조건부 수정을 위한 용도로 쓰인다고 말한다. 즉, 도큐먼트를 동시에 업데이트 하는 동시성 문제가 발생했을 때 상황에 따라서 revision 개념을 사용하면 의도하지 않았던 결과를 막을 수 있다는 개념인 것 같다.
DELETE
도큐먼트를 삭제하는 것도 매우 간단하다. 마찬가지로 도큐먼트의 _id나 _key 값을 remove() 함수에 전달하면 된다.
3. AQL 실행하기
AQL은 Arango Query Lang의 약자로, SQL처럼 편리하게 아랑고DB를 조회하고, 횡단하기 위한 언어이다. 아랑고쉘에서도 AQL을 실행할 수 있으며, 어떻게 하는지만 언급하고 나중에 제대로 배워보기로 한다.
4. 어디까지 왔나
다음 글에서는 아랑고DB의 Web UI를 통해 우리가 넣은 데이터를 살펴보고, 다양한 기능들을 살펴보려고 한다.