나는 시계열 데이터를 가지고있다. (대략 1-5 점 정도) ArangoDB를 사용하여 웹 애플리케이션에 신속하게 액세스 할 수 있어야한다. 데이터는 특정 프로파일과 연관되지만 모든 프로파일의 모든 데이터에 대해 하나의 콜렉션이 사용됩니다. 프로파일 노드와 데이터 노드 사이에는 보고서 노드와 이벤트 노드가 있습니다. 보고서는 주어진 이벤트의 데이터 요소 그룹입니다. 기존 그래프 구조는 다음과 같다 : I는 것 효과적으로 본하고자ArangoDB의 시계열 데이터 구성하기
profile =====> event1 ========> reportA =======> data1
\ \ \=======> data2
\ \
\ \========> reportB =======> data3
\ \=======> data4
\
\==> event2 ========> reportA =======> data1
\ \=======> data2
\
\========> reportB =======> data3
\=======> data4
차트 data1
순차적 이벤트의 속성으로 분류 연관된 이벤트에 의해.
dataAttr
이 쿼리를 실행할 것입니다
event dataAttr value
-------------------------------
event1 data1 42
event2 data1 6
event3 data1 7
event4 data1 343
각 dataAttr
에 설정 결과 : 내가 원하는 결과 집합의 유사한 테이블 구조는 다음과 같습니다 지난 10-20 개의 이벤트에 대한 특정 프로파일.
Neo4J에서이 문제를 조사 할 때 순차적 이벤트를 서로 직접 연결하는 것이 좋습니다. 나는 이것이 ArangoDB에서 더 나은 접근법인지 궁금합니다.
이는 다음과 같이 보이는 추가 그래프를 만드는 의미 :
data1 (of event1) => data1 (of event2) => data1 (of event3) => data1 (of event4)
data2 (of event1) => data2 (of event2) => data2 (of event3) => data2 (of event4)
등
각 dataAttr
이 때문에 가장 최근의 이벤트에 통과 한 후, 이전 이벤트에서 자사의 사촌에 연결을 첫 번째 그래프에서 두 번째 그래프는 n 층을 지난 이벤트 (실제로는 10-20)로 이동하는 데 사용됩니다.
아마도 이와 같은 쿼리의 데이터를 구성하는 가장 좋은 방법일까요? 성능에 중대한 영향을 미칠 수 있습니다.이 쿼리로 각 페이지에 20 개의 차트를로드 할 가능성이 있습니다.
이 쿼리는 그래프 순회가 아닌 인덱스가있는 문서 수집을 쿼리하는 것이 더 빠릅니까? 문서 수집 구조는 dataAttr
에 해시 색인을 넣을 수 있으며 이벤트에 대한 skiplist (문자열 정렬로 순차적으로 정렬됩니다). 내가 다시 profile
까지 event1
의 data1
, 아래로 통과하고, 다시 아래 것은 event2
data1
등 매우 비효율적이 될 것이라고 믿고있어
.
처음에는 원하는 데이터를 탐색 할 때 시계열 쿼리는 순전히 문서 검색입니다. 문서의 색인으로 인해 인접 데이터를 순회하는 것보다 빠릅니다. –
예, 그 아이디어 것입니다. 기본적으로, Neo4J 접근법은 동일한 방향, 링크 된 목록을 사용하여 정렬 된 색인을 구현하는 빈곤층의 사람을 가리키고 있습니다. – fceller
쿨! 이것은 우리를 위해 잘 작동하고 있습니다. 고맙습니다! ArangoDB의 다중 모델 기능의 또 다른 장점! –