2017-12-21 17 views
1

문서 구조의 성능에 미치는 영향arangodb : 문서 크기

-user 
    - firstName 
    - lastName 
    ... 
    - session 
    - table1 
     - filters, searches, states etc 
    - table2 
     - filters, searches, states etc 
    ... 

질문 : 사용자 문서 또는 별도의 문서에서 세션 데이터를 유지해야 하는가? 사용자가 로그 아웃

query = 'find the user... return u 

경우 사용자 목록이 표시되면, 우리는 우리가 쿼리의 세션 상태

을 포함하여 사용자를 저장 : 사용자가 로그인하면

, 우리는 전체 문서를 조회 단지 문서 필드는 필요 :

query = 'for u in users.... return 
{firstName: u.firstName, lastName: u.lastName} 

생각을 : 우리는 우리가 필요로하는 데이터 만, 쿼리 만 수행하는 백그라운드에서 문서에 미치는 영향 DB 성능의 크기? 마찬가지로 Arangodb는 백그라운드에서 전체 문서를 가져 와서 일부만 반환합니다. 또는 더 큰 문서 크기의 영향을받는 다른 서버 프로세스 일 수 있습니까?

답변

2

ArangoDB는 전체 문서를 가져옵니다. 최상의 성능을 위해서는 큰 문서를 사용하지 않아야합니다. here RocksDB 키 - 값 저장소에서 문서를 수신하는 방법의 예

1

세션 데이터를 사용자와 연결해야하므로 세션을 사용자 정점에 저장하는 것이 좋습니다. 그렇지 않으면 저장할 수 있습니다. 별도의 정점에 놓고 참조하십시오 (그래프의 가장자리). 사용자가 요청에 따라 자주 제공되기 위해서는 사용자 데이터 캐싱이 매번 db를 쿼리하는 대신 효과적 일 수 있습니다.

사용자가 활성화 된 경우보다 빠른 액세스를 위해 캐시와 같은 중간 저장 공간에 세션을 배치 할 수 있으며 로그 아웃하거나 지정된 시간 간격 후에 나중에 한 번 db에 쓸 수 있습니다.

문서의 크기가 계속 증가하는 경우 사용자 기본 설정에 따라 문서 당 크기가 포함되도록 최근 n 회의 세션 수 (응용 프로그램 도메인 및 비즈니스 요구 사항에 따라 다름) 만 고려할 수 있습니다.

예를 들어, arango 쿼리의 경우 인덱스 최적화 및 쿼리 최적화 프로그램에서 다른 최적화를 적용하기 전에 전체 문서를 가져 오면 성능에 영향을줍니다.