2016년 12월 17일 토요일

ArangoDB의 기본 개념들

Tags

개념

전반적으로 보면 ArangoDB는 GraphDB형 MongoDB의 느낌이 난다. MongoDB로부터 영감을 받고 개발된 것으로 생각이 될만큼 유사한 점이 많다.

ArangoDB와의 통신

Arango DB는 클라이언트로 document(문서)를 제공하는 db이다. ArangoDB는 TCP연결을 통해 HTTP 프로토콜을 사용하여 JSON 문서를 전송한다.

ArangoDB를 제어하는 방법은 Web Interface(=Aardvark)를 이용하는 방법과, Arangosh을 이용하는 방법이 있다. 그리고 각종 언어에서 driver를 통해 제어할 수도 있다.

Data model

VelocyPack

ArangoDB에 저장되는 문서들은 VelocyPack이라는 바이너리 형태의 포맷으로 거의 JSON format에 가깝다. MongoDB가 BSON이라는 Binary 형태의 JSON형태를 사용하는 것처럼, ArangoDB역시 VelocyPack이라는 자료구조로 저장한다.

Document

document는 아무것도 포함하지 않을 수도 있고, 여러 속성과 값을 포함하ㄹ 수도 있다. 각 값은 숫자, 문자열, boolean, null과 같은 원시값을 가질 수도 있고, 배열이나 embedded document 혹은 object와 같은 복합적인 형태가 될 수도 있다. 이 Document는 RDBMS의 ROW와 비슷하다. 다만 다른 점은, RDBMS가 정형화된 형태의 ROW인 것과는 다르게, Schema less 구조라는 것이다. 모든 Document는 각기 다른 구조가 될 수 있다.

Collection

Document는 collection으로 묶일 수 있다. collection은 0 혹은 여러 document를 포함한다. collection은 RDBMS의 table에 빗댈 수 있다. RDBMS가 Table을 생성할 때 Schema를 지정해야하는 것과 달리 ArangoDB의 collection은 schema-less이므로 따로 지정할 필요가 없다.

Collection은 두 가지 타입이 있다.
  • Document Collection(= Vertex collection in graph)
  • Edge Collection
Edge Collection 역시 document를 담을 수 있지만, _from, _to라는 두 가지 특별한 속성을 포함하며 이는 각 문서간의 관계를 나타낸다.

Database

Collection의 묶음이다. RDBMS의 database와 동일하다.

Data 검색

Queries

새 데이터를 생성하거나, 찾거나, 삭제, 혹은 복잡한 join, 그래프 구조 탐색 등을 하는 행위로 AQL(ArangoDB Query Language)를 사용해서 할 수 있다.

Cursors

Query 결과를 순회하는데 사용하는 개념

Indexes

빠른 검색을 위해 사용. hash index 혹은 geo index등이 있다.


EmoticonEmoticon

:)
:(
hihi
:-)
:D
=D
:-d
;(
;-(
@-)
:o
:>)
(o)
:p
:-?
(p)
:-s
8-)
:-t
:-b
b-(
(y)
x-)
(h)