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.MultiModelBenchmarkrepository. - Create
artifactsfolder on the same level asStarcounter.MultiModelBenchmarkfolder. - Download the latest available Starcounter 3.0 from starcounter.io and unzip it into the
artifactsfolder. - Build
Starcounter.MultiModelBenchmarkwithdotnetCLI or with Visual Studio 2019. - Download and unzip test data into a folder.
- Start
Starcounter.MultiModelBenchmarkproject withdotnetCLI or with Visual Studio 2019. - Create required database indexes using
create-indexesend point. - Import test data using the
import-profilesandimport-relationsend 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.