This is an implementation of the open source ArangoDB's benchmark using Starcounter 3.0.
Starcounter.MultiModelBenchmark
requires Starcounter 3.0 Alpha-20190930.
- Clone the
Starcounter.MultiModelBenchmark
repository. - Create
artifacts
folder on the same level asStarcounter.MultiModelBenchmark
folder. - Download the latest available Starcounter 3.0 from starcounter.io and unzip it into the
artifacts
folder. - Build
Starcounter.MultiModelBenchmark
withdotnet
CLI or with Visual Studio 2019. - Download and unzip test data into a folder.
- Start
Starcounter.MultiModelBenchmark
project withdotnet
CLI or with Visual Studio 2019. - Create required database indexes using
create-indexes
end point. - Import test data using the
import-profiles
andimport-relations
end points.
See Starcounter.MultiModelBenchmark.postman_collection.json
PostMan collection for the detailed REST API description.
- Pokec social network.
- Profiles - 1632803 vertices.
- Relations - 30622564 edges.
Starcounter.MultiModelBenchmark
offers two benchmarking options.
In this mode, client is a Starcounter native application with direct database access, which means that database (server) and application (client) reside on the same physical or virtual server. Starcounter native applications have significant performance advantage over the traditional client-server network communication.
The benchmark payload is located in the data/data.zip
archive, and has to be manually unzipped into the same folder prior to running any tests.
Use benchmark
entry point to start required test. See the PostMan collection above.
In this mode, client is a classical REST API consumer.
Use ArangoDB NodeJs benchmarking suite to run the tests and collect results.
Starcounter REST API NodeJs implementation is available in the scripts/description.js
file.
There is also an sh
script to perform all the benchmarks using ArangoDB's NodeJs benchmarker - scripts/.
Note: NodeJs consumes a lot of RAM when performing multiple parallel HTTP requests, it might be required to manually increase available amount of RAM for the NodeJs process.