Skip to content

A simple benchmarking and testing client for Polypheny.

License

Notifications You must be signed in to change notification settings

polypheny/Polypheny-Simple-Client

Repository files navigation

Polypheny Simple Client

A simple benchmarking and testing client for Polypheny-DB. It includes support for the following benchmarks:

  • Gavel: The Gavel benchmark simulates the workload of a fictional auction house.
  • kNN-Bench: A benchmark tailored towards typical workloads of multimedia retrieval applications and especially k-Nearest-Neighbor search.
  • Multimedia: This benchmarks produces workload containing or requesting randomly generated BLOBs.
  • Graph: A simple synthetic graph benchmark that executes a mixture of DQL and DML Cypher queries against a pseudo-random network.
  • DocBench: A simple benchmark for document schemas generating MongoQL queries.
  • MultiBench: A benchmark that combines Gavel, Graph, and DocBench.
  • AuctionMark: A benchmark executing workload that simulates the activities found in a well-known auction site.
  • SmallBank: The SmallBank benchmark models a simple banking application.
  • TPC-C: A well-known on-line transaction processing (OLTP) benchmark.
  • TPC-H: A decision support benchmark consisting of a suite of business oriented ad-hoc queries and concurrent data modifications.
  • YCSB: Benchmark for evaluating the performance of "key-value" and "cloud" serving stores.
  • MMSBench-Net A benchmark for multi-model database systems simulating a network monitoring application.

This benchmarking client contains a Chronos connector. This allows to easily execute evaluation campaigns.

Getting Started

This client can either be started in a stand-alone mode for quick testing or in a chronos mode for automated benchmarking using Chronos.

Chronos

SYNOPSIS
        polypheny-simple-client.jar chronos [ {-cc | --chronos} <chronos> ]
                [ {-e | --environment} <environment> ] [ --host <IP or Port> ] 
                [ --control-username <Polypheny Control Username> ] 
                [ --control-password <Polypheny Control Password> ] 
                [ {-p | --port} <port> ] [ --queryList ] {-s | --supports} <supports> 
                [ --writeCSV ]

OPTIONS
        -cc <chronos>, --chronos <chronos>
            Hostname or IP address of the Chronos Control.

        -e <environment>, --environment <environment>
            Identifier of the Chronos evaluation environment this client
            belongs to (default: "default").

        --host <IP or Port>
            Hostname or IP address of the host running the system(s) to be
            benchmarked (default: 127.0.0.1).
            
        --control-username <Polypheny Control Username>
            The username to be used for authentication with Polypheny Control.
            
        --control-password <Polypheny Control Password>
            The password to be used for authentication with Polypheny Control.

        -p <port>, --port <port>
            Port of the REST API of the Chronos Control server (default: 443).

        --queryList
            Dump all Gavel queries as SQL into a file (default: false).

        -s <supports>, --supports <supports>
            Comma-separated list of system identifiers supported by this
            client. Depends on the Chronos instance.

        --writeCSV
            Write a CSV file containing execution times for all executed
            queries (default: false).

Stand-alone

This client can be used by specifying the name of the benchmark as first parameter and the task as second parameter. Optionally, it is also possible to specify a multiplier for the data and workload (integer > 0). The general syntax is identical for all benchmarks:

java -jar polypheny-simple-client.jar  BENCHMARK  TASK  [ MULTIPLIER ] 

Use the help command to get an overview of all available parameters for a benchmark. For example:

java -jar polypheny-simple-client.jar help gavel  

BENCHMARK: { gavel | knnbench | multimedia | graph | docbench | multibench | auctionmark | smallbank | tpcc | tpch | ycsb | coms }

TASK: { schema | data | workload | warmup }

MULTIPLIER: Optional parameter taking an integer for multiplying the number of data and queries. Defaults to 1.

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

We highly welcome your contributions to Polypheny Simple Client. If you would like to contribute, please fork the repository and submit your changes as a pull request. Please consult our Admin Repository and our Website for guidelines and additional information.

Please note that we have a code of conduct. Please follow it in all your interactions with the project.

Credits

Polypheny Simple Client builds upon the great work of several other open-source projects:

  • Airline: Annotation-driven Java library for building command line interfaces.
  • Apache Commons: A bunch of useful Java utility classes.
  • Chronos: A system for defining, executing, and monitoring evaluations.
  • jCodec: Pure java implementation of video/audio codecs.
  • jFairy: A library for generating fake data.
  • Log4j: Fast and flexible logging framework for Java.
  • Opencsv: Library for parsing CSV (comma-separated values) data.
  • Project Lombok: A library providing compiler annotations for tedious tasks.
  • Shadow: Gradle plugin for creating fat JARs.
  • SLF4J: Provides a logging API by means of a facade pattern.
  • Unirest: A lightweight HTTP client library.
  • zip4j: A Java library for zip files and streams.

License

The MIT License (MIT)