Досрочно завершим!

Статическая версия.

Couchdb Benchmark

Захотелось попробовать новую couchdb. Выглядит она хорошо, и все сделано удобно. Однако прежде чем ее использовать в каком-нибудь проекте, хотелось бы оценит ее возможности более точно.

Прежде всего посмотрим скорострельность. Для этого напишем мелкую программу на питоне, которая вставляет ну.. 10000 записей. и пусть пишет сколько секунд прошло с начала теста.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from couchdb import Server
import time

server = Server('http://localhost:5984/')
del server['benchmark']

db = server.create('benchmark')
benchstart = int(time.time())
print "Begin test %s"%benchstart
for i in range(1,10000):
    doc_id = db.create({'type': 'BenchRecord', 'intfld': i, 'charfld': 'SomeName%s'%i })
    if i % 100 == 0:
#        print "%s :: %s "%(datetime.datetime.today(),i)
         bench_offset = int(time.time()) - benchstart
         print "%d\t%d "%(bench_offset,i)

print "End test, %d sec"%(int(time.time()) - benchstart)
del server['benchmark']

Запускаем – получили в результате:

Begin test 1220531930
6 100
11 200
17 300
23 400
29 500
35 600
40 700
46 800
52 900
58 1000
64 1100
70 1200
76 1300
82 1400
87 1500
93 1600
99 1700
105 1800
111 1900
117 2000
123 2100
129 2200
135 2300
140 2400
146 2500
152 2600
158 2700
164 2800
170 2900
176 3000
182 3100
188 3200
194 3300
200 3400
206 3500
212 3600
218 3700
224 3800
229 3900
235 4000
241 4100
247 4200
254 4300
260 4400
266 4500
272 4600
278 4700
284 4800
290 4900
296 5000
302 5100
309 5200
315 5300
321 5400
327 5500
333 5600
339 5700
345 5800
351 5900
357 6000
363 6100
369 6200
376 6300
382 6400
388 6500
394 6600
400 6700
406 6800
412 6900
418 7000
424 7100
430 7200
436 7300
442 7400
448 7500
454 7600
460 7700
466 7800
472 7900
478 8000
484 8100
490 8200
496 8300
502 8400
508 8500
514 8600
520 8700
526 8800
532 8900
538 9000
544 9100
550 9200
556 9300
562 9400
568 9500
574 9600
580 9700
587 9800
593 9900
End test, 599 sec

Отсюда мораль.

  1. Вставка 100 записей за (в среднем) 6 секунд. Немного. 16 записей/сек
  2. достаточно линейно , в диапазоне до 10000 записей.

Comments