Skip to content

Evaluating filtered replication performance for CouchDB with a performance test

Notifications You must be signed in to change notification settings

fielded/filtered-replication-performance-tests

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evaluating Filtered Replication Performance

This includes scripts to run performance tests against CouchDB to evaluate changes feed filtering performance, which directly relates to the filtering part of replication performance.

We are testing three different filtering options:

  • built-in doc_ids filter with 20k ids
  • Mango selector using $in operator for _id against 20k ids (disabled bc of poor performance)
  • Mango selector using $gt for _id
  • Mango selector using $regex for _id

This project includes a few files:

Running the tests is a three part progress:

  1. start and configure the couch
  2. run the perf script, this generates data.csv
  3. plot the data, outputs graph.png

Prerequisites

This project depends on

  • docker
  • curl
  • jq
  • gnuplot
  • some standard unix tools: cat, tr, fold, head, xargs and time

Make sure thats all available. This project has been developed on Fedora 32 with dnf-installed requirements.

Usage

We provide a Makefile for convenience. You can also run the scripts and commands directly. Look inside the Makefile for usage information.

Step One: Have a Running Couch

In order to run the script you first start a couch:

make start

and the provision it via

make setup

Step Two: Get the Data

Now you have a running, configured couch you can start the process:

make data.csv

You might want to clean up the file if it already exists bc Make will not overwrite it otherwise.

Step Three: Draw a Picture

We use Gnuplot for plotting the data. This is done via that little plot.gpi script:

make graph.png

My Data

I haven't gitignored the artefacts, so I can include it here for convenience:

This is the data.csv, and this the resulting graph:

A lineplot showing the test results

Made with passion for the couch © 2020 by Johannes

About

Evaluating filtered replication performance for CouchDB with a performance test

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published