2015-06-14 5 views
0

Я рассматриваю использование ArangoDB для нового проекта, но я не смог найти очень много информации о его масштабируемости.Как аппроксимировать время выполнения функции count ArangoDB

В частности, я ищу информацию о функции подсчета. Есть ли надежный способ (возможно, формула), чтобы приблизиться к тому, сколько времени потребуется, чтобы подсчитать количество документов в коллекции, которые соответствуют простому логическому значению?

Все документы в коллекции будут иметь одинаковые поля, но с разными значениями. Как я могу определить, сколько времени потребуется, чтобы подсчитать несколько сотен миллионов документов?

+0

просто сделайте это, и посчитайте это ... –

ответ

3

Просто создайте коллекцию users и вставьте как можно больше случайных документов.

FOR i IN 1..1100000 
INSERT { 
    name: CONCAT("test", i), 
    year: 1970 + FLOOR(RAND() * 55), 
    gender: i % 2 == 0 ? 'male' : 'female' 
} IN users 

Затем сделайте подсчет:

FOR user IN users 
    FILTER user.gender == 'male' 
    COLLECT WITH COUNT INTO number 
RETURN { 
    number: number 
} 

А если использовать этот запрос в производстве, убедитесь, чтобы добавить индекс тоже. На моей машине это сокращает время выполнения в факторе> 100x (0.043 сек/1.1mio документов).

Проверьте свой запрос с помощью EXPLAIN, чтобы оценить, насколько «дорогим» будет выполнение.

Query string: 
FOR user IN users 
    FILTER user.gender == 'male' 
    COLLECT WITH COUNT INTO number 
    RETURN { 
    number: number 
    } 

Execution plan: 
Id NodeType   Est. Comment 
    1 SingletonNode   1 * ROOT 
    8 IndexRangeNode 550001  - FOR user IN users /* hash index scan */ 
    5 AggregateNode   1  - COLLECT WITH COUNT INTO number /* sorted*/ 
    6 CalculationNode  1  - LET #4 = { "number" : number } /* simple expression */ 
    7 ReturnNode    1  - RETURN #4 

Indexes used: 
Id Type Collection Unique Sparse Selectivity Est. Fields  Ranges 
    8 hash users  false false    0.00 % `gender` [ `gender` == "male" ] 

Optimization rules applied: 
Id RuleName 
    1 use-index-range 
    2 remove-filter-covered-by-index 

 Смежные вопросы

  • Нет связанных вопросов^_^