Cayley
  • Cayley Documentation
  • Getting Started
  • Install Cayley
  • Configuration
  • Usage
    • Quickstart as Library
    • Advanced Use
    • HTTP Methods
    • 3rd-Party-APIs
    • UI Overview
    • Migration
  • Query Languages
    • Gizmo API
    • GraphQL Guide
    • MQL Guide
    • Gephi GraphStream
  • Getting Involved
    • Glossary of Terms
    • Contributing
    • TODOs
    • Locations of parts of Cayley
  • Deployment
    • Running in Docker
    • Running in Kubernetes
  • Tools
    • Convert Linked Data files
Powered by GitBook
On this page
  • Recommended Configuration
  • Configuration Options
  • Store
  • Per-Store Options
  • Query
  • Load
  • Configuration File Location

Was this helpful?

Configuration

PreviousInstall CayleyNextQuickstart as Library

Last updated 5 years ago

Was this helpful?

Cayley can be configured using configuration file written in YAML / JSON or by passing flags to the command line. By default. All command line flags take precedence over the configuration file.

Recommended Configuration

By default, Cayley is using the memstore store. memstore works best for datasets that can fit into the memory of the machine and workloads which doesn't require persistency. For large datasets and/or workloads with require persistency it is recommended to use the bolt store.

Configuration Options

Store

store.backend

  • Type: String

  • Default: "memory"

Determines the type of the underlying database. Options include:

  • memstore: An in-memory store, based on an initial N-Quads file. Loses all changes when the process exits.

Key-Value backends

  • btree: An in-memory store, used mostly to quickly verify KV backend functionality.

NoSQL backends

Slower, as it incurs network traffic, but multiple Cayley instances can disappear and reconnect at will, across a potentially horizontally-scaled store.

SQL backends

store.address

  • Type: String

  • Default: ""

  • Alias: store.path

Where does the database actually live? Dependent on the type of database. For each datastore:

  • memstore: Path parameter is not supported.

  • leveldb: Directory to hold the LevelDB database files.

  • bolt: Path to the persistent single Bolt database file.

  • elastic: http://host:port of the desired ElasticSearch server.

  • couch: http://user:pass@host:port/dbname of the desired CouchDB server.

store.read_only

  • Type: Boolean

  • Default: false

If true, disables the ability to write to the database using the HTTP API (will return a 400 for any write request). Useful for testing or instances that shouldn't change.

store.options

  • Type: Object

See Per-Database Options, below.

Per-Store Options

The store.options object in the main configuration file contains any of these following options that change the behavior of the datastore.

Memory

No special options.

LevelDB

write_buffer_mb

  • Type: Integer

  • Default: 20

The size in MiB of the LevelDB write cache. Increasing this number allows for more/faster writes before syncing to disk. Default is 20, for large loads, a recommended value is 200+.

cache_size_mb

  • Type: Integer

  • Default: 2

The size in MiB of the LevelDB block cache. Increasing this number uses more memory to maintain a bigger cache of quad blocks for better performance.

Bolt

nosync

  • Type: Boolean

  • Default: false

Optionally disable syncing to disk per transaction. Nosync being true means much faster load times, but without consistency guarantees.

Mongo

database_name

  • Type: String

  • Default: "cayley"

The name of the database within MongoDB to connect to. Manages its own collections and indices therein.

PostgreSQL

Postgres version 9.5 or greater is required.

db_fill_factor

  • Type: Integer

  • Default: 50

local_optimize

  • Type: Boolean

  • Default: true

Whether to skip checking quad store size.

Connection pooling options used to configure the Go sql connection. Go defaults will be used when not specified.

maxopenconnections

  • Type: Integer

  • Default: -1.

maxidleconnections

  • Type: Integer

  • Default: -1.

connmaxlifetime

  • Type: String

  • Default: "".

Per-Replication Options

The replication_options object in the main configuration file contains any of these following options that change the behavior of the replication manager.

Query

timeout

  • Type: Integer or String

  • Default: 30

Load

load.ignore_missing

  • Type: Boolean

  • Default: false

Optionally ignore missing quad on delete.

load.ignore_duplicate

  • Type: Boolean

  • Default: false

Optionally ignore duplicated quad on add.

load.batch

  • Type: Integer

  • Default: 10000

The number of quads to buffer from a loaded file before writing a block of quads to the database. Larger numbers are good for larger loads.

Configuration File Location

Cayley looks in the following locations for the configuration file (named cayley.yml or cayley.json):

  • Command line flag

  • The environment variable $CAYLEY_CFG

  • Current directory

  • $HOME/.cayley/

  • /etc/

leveldb: A persistent on-disk store backed by .

bolt: Stores the graph data on-disk in a file. Uses more disk space and memory than LevelDB for smaller stores, but is often faster to write to and comparable for large ones, with faster average query times.

mongo: Stores the graph data and indices in a instance.

elastic: Stores the graph data and indices in a instance.

couch: Stores the graph data and indices in a instance.

pouch: Stores the graph data and indices in a . Requires building with .

postgres: Stores the graph data and indices in a instance.

cockroach: Stores the graph data and indices in a cluster.

mysql: Stores the graph data and indices in a or instance.

sqlite: Stores the graph data and indices in a database.

mongo: "hostname:port" of the desired MongoDB server. More options can be provided in address format.

postgres,cockroach: postgres://[username:password@]host[:port]/database-name?sslmode=disable of the PostgreSQL database and credentials. Sslmode is optional. More option available on page.

mysql: [username:password@]tcp(host[:3306])/database-name of the MqSQL database and credentials. More option available on page.

sqlite: filepath of the SQLite database. More options available on page.

Amount of empty space as a percentage to leave in the database when creating a table and inserting rows. See .

The maximum length of time the Javascript runtime should run until cancelling the query and returning a 408 Timeout. When timeout is an integer is is interpreted as seconds, when it is a string it is as a Go time.Duration. A negative duration means no limit.

LevelDB
Bolt
MongoDB
ElasticSearch
CouchDB
PouchDB
GopherJS
PostgreSQL
CockroachDB
MySQL
MariaDB
SQLite
mgo
pq
driver
driver
PostgreSQL CreateTable
parsed
Recommended Configuration
Configuration Options
Store
Per-Store Options
Query
Load
Configuration File Location