Community
Enterprise
Data Grid
Sign in
Sign in
Sign up
Download
En
Ru
Sign in
Sign up
Products
Tarantool
Cartridge
Tarantool Data Grid
Tarantool Еnterprise
Documentation
Tarantool
Cartridge
Data Grid
Connectors
Modules
How to guides
Services
Solution delivery
Support contact form
Company
Contacts
Careers
Learn
Use cases
Clients
Version:
latest (2.6+)
2.5
2.4
2.3
2.2
1.10
1.6
Tarantool - Documentation
Getting started
Creating your first Tarantool database
Using a Docker image
Launching a container
Attaching to Tarantool
Creating a database
Stopping a container
Using a package manager
Starting Tarantool
Creating a database
Connecting remotely
Connecting from your favorite language
Connecting from Python
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Connecting from PHP
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Connecting from Go
Pre-requisites
Connecting to Tarantool
Manipulating the data
Inserting data
Querying data
Updating data
Deleting data
Executing stored procedures
Connecting to Tarantool from C++
Pre-requisites
Installation
Starting Tarantool and creating a database
Setting up access rights
Connecting to Tarantool
Embedding connector
Instantiating objects
Connecting
Error handling
Working with requests
Preparing requests
Sending requests
Receiving responses
Several connections at once
Closing connections
Building and launching C++ application
Decoding and reading the data
Base reader prototype
Parsing values
Parsing array
Setting reader
Creating your first Tarantool Cartridge application
Data model
Spaces
Tuples
Indexes
Data types
Lua versus MsgPack
Field Type Details
Indexed field types
Collations
Sequences
Options for
box.schema.sequence.create()
Persistence
Operations
Data operations
Complexity factors
CRUD operations
Examples
Example: using box.space functions to read _space tuples
Example: using box.space functions to organize a _space tuple
Example: using data operations
INSERT
DELETE
UPDATE
UPSERT
REPLACE
SELECT
space_object:alter()
space_object:auto_increment()
space_object:bsize()
space_object:count()
space_object:create_index()
Details about index field types
Allowing null for an indexed key
Creating an index using field names instead of field numbers
Creating an index using the path option for map fields (JSON-path indexes)
Creating a multikey index using the path option with [*]
Creating a functional index
space_object:delete()
space_object:drop()
space_object:format()
space_object:frommap()
space_object:get()
space_object:insert()
space_object:len()
space_object:on_replace()
space_object:before_replace()
space_object:pairs()
space_object:put()
space_object:rename()
space_object:replace() / put()
space_object:run_triggers()
space_object:select()
space_object:truncate()
space_object:update()
space_object:upsert()
space_object:user_defined()
box.space.create_check_constraint()
space_object:enabled
space_object:field_count
space_object.id
space_object.index
box.space._cluster
box.space._func
box.space._index
box.space._vindex
box.space._priv
box.space._vpriv
box.space._schema
box.space._sequence
box.space._sequence_data
box.space._space
box.space._vspace
box.space._user
box.space._vuser
box.space._ck_constraint
box.space._collation
box.space._vcollation
box.space._session_settings
Indexes
Creating an index
Index types
TREE indexes
HASH indexes
RTREE indexes
BITSET indexes
Index operations
Transactions
Threads, fibers and yields
Cooperative multitasking
Transactions
Implicit yields
Transactional manager
Access control
Users
Passwords
Owners and privileges
Roles
Sessions and security
Triggers
Sharding
Architecture
Overview
Virtual buckets
Structure
Storage
Router
CRUD (create, replace, update, delete) operations
SELECT requests
Calling stored procedures
Rebalancer
Migration of buckets
The
_bucket
system space
The routing table
Processing requests
Glossary
Administration
Installation
Configuration
Replica weights
Replica set weights
Rebalancing process
Parallel rebalancing
Replica set lock and bucket pin
Replica set lock and rebalancing
Bucket pin and rebalancing
Bucket ref
Defining spaces
Adding data
Bootstrapping and restarting a storage
Fibers
Garbage collector
Bucket recovery
Failover
Quick start guide
Sample configuration
Configuration reference
Basic parameters
Replica set functions
API reference
Router public API
Router internal API
Storage public API
Storage internal API
Cluster
Overview
About Tarantool Cartridge
Getting started
Prerequisites
Create your first application
Next steps
Contributing
Developer’s guide
Introduction
Installing Tarantool Cartridge
Creating a project
Cluster roles
Built-in roles
Custom roles
Defining role dependencies
Using multiple vshard storage groups
Role’s life cycle (and the order of function execution)
Configuring custom roles
Custom configuration example
Applying custom role’s configuration
Using the built-in HTTP server
Implementing authorization in the web interface
Application versioning
Using .cartridge.ignore files
Failover architecture
Instance configuration upon a leader change
Leader appointment rules
Disabled mode
Eventual failover
Stateful failover
The case: external provider outage
The case: coordinator outage
Manual leader promotion
Fencing
Failover configuration
Lua API
GraphQL API
Stateboard configuration
Fine-tuning failover behavior
Configuring instances
Configuration basics
Internal representation of clusterwide configuration
Two-phase commit
Managing role-specific data
HTTP API
GraphQL API
Lua API
Luatest helpers
Deploying an application
Deploying as an rpm or deb package
Deploying as a tar+gz archive
Deploying from sources
Starting/stopping instances
Start/stop using
tarantool
Start/stop using
cartridge
CLI
Start/stop using
systemctl
Error handling guidelines
Error objects in Lua
GraphQL
HTTP
Administrator’s guide
Deploying the cluster
Updating the configuration
Managing the cluster
Changing the cluster topology
Data rebalancing
Deactivating replica sets
Expelling instances
Enabling automatic failover
Switching the replica set’s master
Managing users
Resolving conflicts
Monitoring a cluster via CLI
Connecting to nodes via CLI
Monitoring storages
Output example
Status list
Potential issues
Monitoring routers
Output example
Status list
Potential issues
Upgrading schema
Disaster recovery
Backups
Troubleshooting
Editing clusterwide configuration in WebUI returns an error
An instance is stuck in the ConnectingFullmesh state upon restart
I want to run an instance with a new advertise_uri
The cluster is doomed, I’ve edited the config manually. How do I reload it?
Repairing cluster using Cartridge CLI
repair
command
Changing instance advertise URI
Changing replicaset leader
Removing instance from the cluster
Cartridge API
Module
cartridge
Functions
cfg (opts, box_opts)
reload_roles ()
is_healthy ()
Tables
VshardGroup
Global functions
_G.cartridge_get_schema ()
_G.cartridge_set_schema (schema)
Clusterwide DDL schema
get_schema ()
set_schema (schema)
Cluster administration
ServerInfo
ReplicasetInfo
admin_get_servers ([uuid])
admin_get_replicasets ([uuid])
admin_probe_server (uri)
admin_enable_servers (uuids)
admin_disable_servers (uuids)
admin_bootstrap_vshard ()
Automatic failover management
FailoverParams
failover_get_params ()
failover_set_params (opts)
failover_promote (replicaset_uuid[, opts])
admin_get_failover ()
admin_enable_failover ()
admin_disable_failover ()
Managing cluster topology
admin_edit_topology (args)
EditReplicasetParams
EditServerParams
JoinServerParams
Clusterwide configuration
config_get_readonly ([section_name])
config_get_deepcopy ([section_name])
config_patch_clusterwide (patch)
config_force_reapply (uuids)
Inter-role interaction
service_get (module_name)
service_set (module_name, instance)
Cross-instance calls
rpc_call (role_name, fn_name[, args[, opts]])
Usage:
rpc_get_candidates (role_name[, opts])
Authentication and authorization
http_authorize_request (request)
http_render_response (response)
http_get_username ()
Deprecated functions
admin_edit_replicaset (args)
admin_edit_server (args)
admin_join_server (args)
admin_expel_server (uuid)
Module
cartridge.auth
Local Functions
set_enabled (enabled)
get_enabled ()
init ()
set_callbacks (callbacks)
get_callbacks ()
Configuration
set_params (opts)
get_params ()
AuthParams
Authorizarion
set_lsid_cookie (user)
get_session_username ()
authorize_request (request)
render_response (response)
User management
UserInfo
add_user (username, password, fullname, email)
get_user (username)
edit_user (username, password, fullname, email)
list_users ()
remove_user (username)
Module
cartridge.roles
Functions
reload ()
Local Functions
cfg (module_names)
get_all_roles ()
get_known_roles ()
get_enabled_roles (roles)
get_role_dependencies (role_name)
validate_config (conf_new, conf_old)
apply_config (conf, opts, is_master)
Module
cartridge.issues
Tables
limits
Module
cartridge.argparse
Functions
parse ()
get_opts (filter)
get_box_opts ()
get_cluster_opts ()
Tables
cluster_opts
box_opts
Module
cartridge.twophase
Functions
patch_clusterwide (patch)
force_reapply (uuids)
get_schema ()
set_schema (schema)
on_patch (trigger_new, trigger_old)
Usage:
Local Functions
prepare_2pc (data)
commit_2pc ()
abort_2pc ()
Module
cartridge.failover
Functions
get_coordinator ()
Local Functions
schedule_clear ()
schedule_add ()
_get_appointments_disabled_mode ()
_get_appointments_eventual_mode ()
_get_appointments_stateful_mode ()
accept_appointments (replicaset_uuid)
fencing_check ()
failover_loop ()
cfg ()
get_active_leaders ()
is_leader ()
is_rw ()
is_vclockkeeper ()
consistency_needed ()
force_inconsistency (replicaset_uuid)
wait_consistency (replicaset_uuid)
Module
cartridge.topology
Functions
cluster_is_healthy ()
Local Functions
get_leaders_orded (topology_cfg, replicaset_uuid, new_order)
validate (topology_new, topology_old)
find_server_by_uri (topology_cfg, uri)
refine_servers_uri (topology_cfg)
probe_missing_members (servers)
get_fullmesh_replication (topology_cfg, replicaset_uuid)
Module
cartridge.clusterwide-config
Usage:
Functions
new ([data])
save (clusterwide_config, filename)
load (filename)
Local Functions
load_from_file (filename)
load_from_dir (path)
remove (string)
Module
cartridge.rpc
Functions
get_candidates (role_name[, opts])
call (role_name, fn_name[, args[, opts]])
Usage:
Local Functions
get_connection (role_name[, opts])
Module
cartridge.tar
Functions
pack (files)
unpack (tar)
Module
cartridge.pool
Functions
connect (uri[, opts])
Local Functions
format_uri (uri)
map_call (fn_name[, args[, opts]])
Module
cartridge.confapplier
Functions
get_active_config ()
get_readonly ([section_name])
get_deepcopy ([section_name])
Local Functions
set_state (state[, err])
wish_state (state[, timeout])
validate_config (clusterwide_config_new)
apply_config (clusterwide_config)
Module
cartridge.test-helpers
Fields
Server
Cluster
Etcd
Module
cartridge.remote-control
Local Functions
bind (host, port)
accept (credentials)
unbind ()
drop_connections ()
Module
cartridge.service-registry
Functions
set (module_name, instance)
get (module_name)
Module
custom-role
Functions
init (opts)
stop (opts)
validate_config (conf_new, conf_old)
apply_config (conf, opts)
Fields
role_name
hidden
permanent
Module
cartridge.lua-api.stat
Local Functions
get_stat (uri)
Module
cartridge.lua-api.boxinfo
Local Functions
get_info (uri)
Module
cartridge.lua-api.get-topology
Tables
ReplicasetInfo
ServerInfo
Local Functions
get_topology ()
Module
cartridge.lua-api.edit-topology
Editing topology
edit_topology (args)
EditReplicasetParams
JoinServerParams
EditServerParams
Module
cartridge.lua-api.topology
Functions
get_servers ([uuid])
get_replicasets ([uuid])
probe_server (uri)
enable_servers (uuids)
disable_servers (uuids)
Local Functions
get_self ()
Module
cartridge.lua-api.failover
Functions
get_params ()
set_params (opts)
get_failover_enabled ()
set_failover_enabled (enabled)
promote (replicaset_uuid[, opts])
Tables
FailoverParams
Module
cartridge.lua-api.vshard
Functions
bootstrap_vshard ()
Module
cartridge.lua-api.deprecated
Deprecated functions
join_server (args)
edit_server (args)
expel_server (uuid)
edit_replicaset (args)
Class
cartridge.test-helpers.cluster
Functions
Cluster:new (object)
Cluster:server (alias)
Cluster:apply_topology ()
Cluster:start ()
Cluster:stop ()
Cluster:join_server (server)
Cluster:wait_until_healthy (server)
Cluster:upload_config (config)
Cluster:download_config ()
Cluster:retrying (config, fn[, …])
Tables
cartridge.test-helpers.cluster.replicaset_config
Class
cartridge.test-helpers.server
Functions
Server:build_env ()
Server:start ()
Server:stop ()
Server:graphql (request, http_options)
Server:join_cluster (main_server[, options])
Server:setup_replicaset (config)
Server:upload_config (config)
Server:download_config ()
Methods
cartridge.test-helpers.server:new (object)
Class
cartridge.test-helpers.etcd
Functions
Etcd:new (object)
Etcd:start ()
Etcd:stop ()
Cartridge CLI
Installation
Quick start
Command-line completion
Linux
OS X
Usage
An application lifecycle
Creating an application from template
Building an application
Starting/stopping an application locally
start
Options
Environment variables
Overriding default options
stop
status
log
clean
Packing an application
Build directory
Distribution directory
Stage 1. Cleaning up the application directory
Stage 2. Building the application
Stage 3. Cleaning up the files before packing
Repairing a cluster
Repair commands
Topology summary
Remove instance
Set leader
Set advertise URI
TGZ
RPM and DEB
Usage example
Package details
Docker
Usage example
Runtime image tag
Build and runtime images
Tarantool Enterprise SDK
Customizing the application build in Docker
Using the runtime image
Special files
Example: cartridge.pre-build
Example: cartridge.post-build
Cartridge Kubernetes guide
Installation tools
Creating an application
Building the application
Creating a Kubernetes cluster
Using
minikube
Using
kind
Launch the application
Tarantool Kubernetes operator
Deploying a Tarantool Cartridge application
Cluster management
Adding a new replica
Adding a shard (replica set)
Updating application version
Running multiple Tarantool Cartridge clusters in different namespaces
Deleting a cluster
Failover
Eventual mode
Stateful mode
etcd
Stateboard
Troubleshooting
Insufficient CPU
Insufficient disk space
Customization
Sidecar containers
Installation in an internal network
Delivery of tools
Installing the Tarantool Kubernetes operator
Installing the Tarantool Cartridge app
Changelog
[Unreleased]
Added
Fixed
Enhanced is WebUI
[2.4.0] - 2020-12-29
Added
Changed
Fixed
Enhanced is WebUI
[2.3.0] - 2020-08-26
Added
Fixed
Enhanced is WebUI
[2.2.0] - 2020-06-23
Added
Changed
Enhanced in WebUI
[2.1.2] - 2020-04-24
Fixed
[2.1.1] - 2020-04-20
Fixed
[2.1.0] - 2020-04-16
Added
Changed
Deprecated
Fixed
Enhanced in WebUI
[2.0.2] - 2020-03-17
Added
Changed
Fixed
Enhanced in WebUI
[2.0.1] - 2020-01-15
Added
Fixed
[2.0.0] - 2019-12-27
Added
Changed
Removed
Fixed
[1.2.0] - 2019-10-21
Added
Changed
Fixed
[1.1.0] - 2019-09-24
Added
Changed
Deprecated
Fixed
[1.0.0] - 2019-08-29
Added
Changed
Removed
[0.10.0] - 2019-08-01
Added
Fixed
[0.9.2] - 2019-07-12
Fixed
[0.9.1] - 2019-07-10
Added
Fixed
[0.9.0] - 2019-07-02
Added
Changed
Fixed
[0.8.0] - 2019-05-20
Added
Changed
Fixed
[0.7.0] - 2019-04-05
Added
Changed
[0.6.3] - 2019-02-08
Fixed
[0.6.2] - 2019-02-07
Fixed
[0.6.1] - 2019-02-05
Fixed
[0.6.0] - 2019-01-30
Fixed
Changed
Added
[0.5.1] - 2018-12-12
Fixed
[0.5.0] - 2018-12-11
Fixed
Changed
Added
[0.4.0] - 2018-11-27
Fixed/Improved
Added
[0.3] - 2018-10-30
Changed
Added
[0.2] - 2018-10-01
Changed
[0.1] - 2018-09-25
Added
Application server
Launching an application
Launching in Docker
Launching a binary program
Creating an application
Modules, rocks and applications
Avro schemas
Bootstrapping a database
GIS
Index iterators
Fibers
Logging
nginx
Non-blocking IO
Installing a module
Installing a module from a repository
Installing a module from deb/rpm
Contributing a module
Contributing a module in Lua
Contributing a module in C
Reloading a module
Reloading a module in Lua
Reloading a module in C
Developing with an IDE
Cookbook recipes
hello_world.lua
console_start.lua
fio_read.lua
fio_write.lua
ffi_printf.lua
ffi_gettimeofday.lua
ffi_zlib.lua
ffi_meta.lua
ffi_varbinary_insert.lua
print_arrays.lua
count_array.lua
count_array_with_nils.lua
count_array_with_nulls.lua
count_map.lua
swap.lua
class.lua
garbage.lua
fiber_producer_and_consumer.lua
socket_tcpconnect.lua
socket_tcp_echo.lua
getaddrinfo.lua
socket_udp_echo.lua
http_get.lua
http_send.lua
http_server.lua
http_generate_html.lua
select_all.go
Administration
Instance configuration
Instance file
tarantoolctl
configuration file
Starting/stopping an instance
Running Tarantool locally
Logs
Security
Server introspection
Using Tarantool as a client
Executing code on an instance
Health checks
Profiling performance issues
fiber.info()
Poor man’s profilers
gperftools
perf
jit.p
Daemon supervision
Server signals
Automatic instance restart
Core dumps
Stack traces
Debugger
Disaster recovery
Master-replica
Master-master
Data loss
Backups
Hot backup (memtx)
Hot backup (vinyl/memtx)
Continuous remote backup (memtx)
Continuous backup (memtx)
Upgrades
Upgrading a Tarantool database
Upgrading a Tarantool instance
How to upgrade from Tarantool 1.7 to 2.x
How to upgrade from Tarantool 1.6 to 2.x
How to upgrade from Tarantool 1.6 to 1.7
Upgrading Tarantool in a replication cluster
Notes for operating systems
Mac OS
FreeBSD
Gentoo Linux
Bug reports
Troubleshooting guide
Problem: INSERT/UPDATE-requests result in ER_MEMORY_ISSUE error
Problem: Tarantool generates too heavy CPU load
Problem: Query processing times out
Problem: Replication “lag” and “idle” contain negative values
Problem: Replication “idle” keeps growing, but no related log messages appear
Problem: Replication statistics differ on replicas within a replica set
Problem: Master-master replication is stopped
Problem: Tarantool works much slower than before
Problem: Fiber switch is forbidden in
__gc
metamethod
Problem description
Solution
Monitoring
Monitoring: getting started
Tarantool
Instance health check
Cartridge role
Metrics reference
General metrics
Memory general
Memory allocation
Spaces
Network
Fibers
Operations
Replication
Runtime
Cartridge
LuaJIT metrics
CPU metrics
API reference
Collectors
Counter
Gauge
Histogram
Summary
Labels
Metrics functions
Collecting HTTP requests latency statistics
CPU usage metrics
Examples
Metrics plugins
Available plugins
Prometheus
Graphite
JSON
Plugin-specific API
Writing custom plugins
Grafana dashboard
Prepare a monitoring stack
Collect metrics with server agents
Import the dashboard
Troubleshooting
Replication
Replication architecture
Replication mechanism
Replication setup
Replication roles: master and replica
Replication topologies: cascade, ring and full mesh
Bootstrapping a replica set
Master-replica bootstrap
Controlled failover
Master-master bootstrap
Adding instances
Adding a replica
Adding a master
Orphan status
Server startup with replication
Removing instances
Monitoring a replica set
Recovering from a degraded state
Reseeding a replica
Resolving replication conflicts
Solving problems with master-master replication
Replacing the same primary key
Preventing duplicate insert
Synchronous replication
Overview
Usage
Synchronous and asynchronous transactions
Limitations and known problems
Leader election
Tips and tricks
Automated leader election
Leader election and synchronous replication
Leader election process
Configuration
Monitoring
Important notes
Storage engines
Differences between memtx and vinyl storage engines
Storing data with vinyl
Algorithm
Filling an LSM tree
Controlling the form of an LSM tree
Search
Range searching
Deletion
Advantages of an LSM tree
Disadvantages of an LSM tree and how to deal with them
Unpredictable write speed
Unpredictable read speed
Compression and page index
Bloom filters
Caching
Garbage collection control
Advanced features of vinyl
Upsert
Secondary keys
Connectors
Protocol
Packet example
Setting up the server for connector examples
Java
Go
R
Erlang
Perl
PHP
Python
Node.js
C#
C
Example 1
Example 2
Interpreting function return values
Reference
SQL reference
What Tarantool’s SQL product delivers
Differences from other products
What Tarantool’s SQL manual delivers
SQL beginners’ guide
SQL user guide
Getting Started
Supported Syntax
Concepts
Tokens
Literals
Identifiers
Reserved words
Operands
Operand data types
Operators
Special Situations
Expressions
Comparing and Ordering
Statements
List of legal statements
Data Type Conversion
Implicit string/numeric cast
SQL statements and clauses
Statements that change data definition
ALTER TABLE
CREATE TABLE
Column definition
Column definition – data type
Column definition – the rules for the SCALAR data type
Column definition – relation to NoSQL
Column definition – column-constraint or default clause
Column definition – examples
Table Constraint Definition
Table Constraint Definition for foreign keys
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
CREATE TRIGGER
Trigger extra clauses
Trigger activation
INSTEAD OF triggers
DROP TRIGGER
Statements that change data
INSERT
UPDATE
DELETE
REPLACE
TRUNCATE
SET
Statements that retrieve data
SELECT
Select list
FROM clause
WHERE clause
GROUP BY clause
Aggregate functions
HAVING clause
ORDER BY clause
LIMIT clause
Subquery
WITH clause
WITH RECURSIVE
UNION, EXCEPT, and INTERSECT clauses
INDEXED BY clause
VALUES
PRAGMA
EXPLAIN
Statements for transactions
START TRANSACTION
COMMIT
SAVEPOINT
RELEASE SAVEPOINT
ROLLBACK
Functions
Explanation of functions
List of functions
ABS
CAST
CHAR
COALESCE
GREATEST
HEX
IFNULL
LEAST
LENGTH
LIKELIHOOD
LIKELY
LOWER
NULLIF
POSITION
PRINTF
QUOTE
RAISE
RANDOM
RANDOMBLOB
REPLACE
ROUND
ROW_COUNT
SOUNDEX
SUBSTR
TRIM
TYPEOF
UNICODE
UNLIKELY
UPPER
VERSION
ZEROBLOB
COLLATE clause
SQL PLUS LUA – Adding Tarantool/NoSQL to Tarantool/SQL
Lua Requests
System Tables
Calling Lua routines from SQL
Executing Lua chunks
Example Sessions
Example Session – Create, Insert, Select
Example Session – Get a List of Columns
Example Session – Million-Row Insert
Lua functions to make views of metadata
_TABLES view
_COLUMNS view
_VIEWS view
_TRIGGERS view
_REFERENTIAL_CONSTRAINTS view
_CHECK_CONSTRAINTS view
_TABLE_CONSTRAINTS view
SQL features
Built-in modules reference
Module
box
Submodule
box.stat
Submodule
box.cfg
Submodule box.backup
box.backup.start()
box.backup.stop()
Submodule
box.ctl
box.ctl.wait_ro()
box.ctl.wait_rw()
box.ctl.on_schema_init()
box.ctl.on_schema_init()
Submodule
box.error
box.error()
box.error.last()
box.error.clear()
box.error.new()
box.error.set()
error_object
Custom error types
Submodule
box.index
Examples for
box.index
Example showing use of the box functions
Example showing a user-defined iterator
Example showing submodule
box.index
with index type = RTREE for spatial searches
index_object.unique
index_object.type
index_object:parts()
index_object:pairs()
index_object:select()
index_object:get()
index_object:min()
index_object:max()
index_object:random()
index_object:count()
index_object:update()
index_object:delete()
index_object:alter()
index_object:drop()
index_object:rename()
index_object:bsize()
index_object:stat()
index_object:compact()
index_object:user_defined()
Submodule
box.info
box.info()
box.info.gc()
box.info.memory()
box.info.replication_anon()
box.info.replication
box.info.listen
box.info.election
Submodule
box.schema
box.schema.space.create() / schema_object:create_space()
box.schema.upgrade()
box.schema.user.create()
box.schema.user.drop()
box.schema.user.exists()
box.schema.user.grant()
box.schema.user.revoke()
box.schema.user.password()
box.schema.user.passwd()
box.schema.user.info()
box.schema.role.create()
box.schema.role.drop()
box.schema.role.exists()
box.schema.role.grant()
box.schema.role.revoke()
box.schema.role.info()
box.schema.func.create()
box.schema.func.drop()
box.schema.func.exists()
box.schema.func.reload()
Sequences
box.schema.sequence.create()
sequence_object:next()
sequence_object:alter()
sequence_object:reset()
sequence_object:set()
sequence_object:current()
sequence_object:drop()
specifying a sequence in create_index()
Submodule
box.session
box.session.id()
box.session.exists()
box.session.peer()
box.session.sync()
box.session.user()
box.session.type()
box.session.su()
box.session.uid()
box.session.euid()
box.session.storage
box.session.on_connect()
box.session.on_disconnect()
box.session.on_auth()
box.session.on_access_denied()
box.session.push()
Submodule
box.slab
box.runtime.info()
box.slab.info()
box.slab.stats()
Submodule
box.space
Examples
Example: using box.space functions to read _space tuples
Example: using box.space functions to organize a _space tuple
Example: using data operations
INSERT
DELETE
UPDATE
UPSERT
REPLACE
SELECT
space_object:alter()
space_object:auto_increment()
space_object:bsize()
space_object:count()
space_object:create_index()
Details about index field types
Allowing null for an indexed key
Creating an index using field names instead of field numbers
Creating an index using the path option for map fields (JSON-path indexes)
Creating a multikey index using the path option with [*]
Creating a functional index
space_object:delete()
space_object:drop()
space_object:format()
space_object:frommap()
space_object:get()
space_object:insert()
space_object:len()
space_object:on_replace()
space_object:before_replace()
space_object:pairs()
space_object:put()
space_object:rename()
space_object:replace() / put()
space_object:run_triggers()
space_object:select()
space_object:truncate()
space_object:update()
space_object:upsert()
space_object:user_defined()
box.space.create_check_constraint()
space_object:enabled
space_object:field_count
space_object.id
space_object.index
box.space._cluster
box.space._func
box.space._index
box.space._vindex
box.space._priv
box.space._vpriv
box.space._schema
box.space._sequence
box.space._sequence_data
box.space._space
box.space._vspace
box.space._user
box.space._vuser
box.space._ck_constraint
box.space._collation
box.space._vcollation
box.space._session_settings
Submodule
box.tuple
box.tuple.new()
box.tuple.is()
#tuple_object
box.tuple.bsize()
tuple_object[field-number]
tuple_object[field-name]
tuple_object[field-path]
tuple_object:find(), tuple_object:findall()
tuple_object:next()
tuple_object:pairs(), tuple_object:ipairs()
tuple_object:totable()
tuple_object:tomap()
tuple_object:transform()
tuple_object:unpack()
tuple_object:update()
tuple_object:upsert()
How to convert tuples to/from Lua tables
Functions for transaction management
box.begin()
box.commit()
box.rollback()
box.savepoint()
box.rollback_to_savepoint()
box.atomic()
box.on_commit()
box.on_rollback()
box.is_in_txn()
Functions for SQL
box.execute()
box.prepare()
object prepared_table
Function
box.once
Function
box.snapshot
Constant
box.NULL
Using box.NULL
Distinction of nil and
box.NULL
Module
buffer
Module
clock
Overview
Index
Module
console
Overview
Index
Module
crypto
Overview
Index
Incremental methods in the crypto module
Getting the same results from digest and crypto modules
Module
csv
Overview
Index
Module
decimal
Module
digest
Overview
Index
Incremental methods in the
digest
module
Example
Module
errno
Overview
Index
Module
fiber
Overview
Index
Fibers
Example
Example of yield failure
Channels
Example
Condition variables
Example
Module
fio
Overview
Index
Common pathname manipulations
Directory or file existence and type checks
Common file manipulations
FIO constants
Module
fun
Module
http
Overview
Index
Module
iconv
Overview
Index
Module
json
Overview
Index
Module
key_def
Module
log
Overview
Index
Example
Module
merger
Overview
Index
Module
msgpack
Overview
Index
Module
net.box
Overview
Index
Triggers
Example
Module
os
Overview
Index
Module
pickle
Index
Module
popen
Overview
Index
popen handle methods
Module
socket
Overview
Index
LuaSocket wrapper functions
Recommended size
Examples
Use of a TCP socket over the Internet
Use of a socket with LuaSocket wrapper functions
Use of a UDP socket on localhost
Use tcp_server to accept file contents sent with socat
Use tcp_server with handler and prepare
Module
strict
Module
string
Overview
Index
Module
swim
Overview
SWIM internals
Module
table
Module
tap
Overview
Index
Example
Module
tarantool
Module
uuid
Overview
Index
Example
Module
utf8
Overview
Module
uri
Overview
Index
Module
xlog
Module
yaml
Overview
Index
Example
Other package components
Database error codes
Handling errors
Debug facilities
Overview
Index
JSON paths
Overview
Rocks reference
SQL DBMS Modules
MySQL Example
Installation
With LuaRocks
With GitHub
Connecting
How to ping
Executing a statement
Closing connection
Example
PostgreSQL Example
Installation
With LuaRocks
With GitHub
Connecting
How to ping
Executing a statement
Closing connection
Example
Module
expirationd
Module
membership
Member data structure
API reference
Module
vshard
Summary
Architecture
Overview
Virtual buckets
Structure
Storage
Router
CRUD (create, replace, update, delete) operations
SELECT requests
Calling stored procedures
Rebalancer
Migration of buckets
The
_bucket
system space
The routing table
Processing requests
Glossary
Administration
Installation
Configuration
Replica weights
Replica set weights
Rebalancing process
Parallel rebalancing
Replica set lock and bucket pin
Replica set lock and rebalancing
Bucket pin and rebalancing
Bucket ref
Defining spaces
Adding data
Bootstrapping and restarting a storage
Fibers
Garbage collector
Bucket recovery
Failover
Quick start guide
Sample configuration
Configuration reference
Basic parameters
Replica set functions
API reference
Router public API
Router internal API
Storage public API
Storage internal API
Tarantool Cartridge
Overview
About Tarantool Cartridge
Getting started
Prerequisites
Create your first application
Next steps
Contributing
Developer’s guide
Introduction
Installing Tarantool Cartridge
Creating a project
Cluster roles
Built-in roles
Custom roles
Defining role dependencies
Using multiple vshard storage groups
Role’s life cycle (and the order of function execution)
Configuring custom roles
Custom configuration example
Applying custom role’s configuration
Using the built-in HTTP server
Implementing authorization in the web interface
Application versioning
Using .cartridge.ignore files
Failover architecture
Instance configuration upon a leader change
Leader appointment rules
Disabled mode
Eventual failover
Stateful failover
Manual leader promotion
Fencing
Failover configuration
Lua API
GraphQL API
Stateboard configuration
Fine-tuning failover behavior
Configuring instances
Configuration basics
Internal representation of clusterwide configuration
Two-phase commit
Managing role-specific data
HTTP API
GraphQL API
Lua API
Luatest helpers
Deploying an application
Deploying as an rpm or deb package
Deploying as a tar+gz archive
Deploying from sources
Starting/stopping instances
Start/stop using
tarantool
Start/stop using
cartridge
CLI
Start/stop using
systemctl
Error handling guidelines
Error objects in Lua
GraphQL
HTTP
Administrator’s guide
Deploying the cluster
Updating the configuration
Managing the cluster
Changing the cluster topology
Data rebalancing
Deactivating replica sets
Expelling instances
Enabling automatic failover
Switching the replica set’s master
Managing users
Resolving conflicts
Monitoring a cluster via CLI
Connecting to nodes via CLI
Monitoring storages
Output example
Status list
Potential issues
Monitoring routers
Output example
Status list
Potential issues
Upgrading schema
Disaster recovery
Backups
Troubleshooting
Editing clusterwide configuration in WebUI returns an error
An instance is stuck in the ConnectingFullmesh state upon restart
I want to run an instance with a new advertise_uri
The cluster is doomed, I’ve edited the config manually. How do I reload it?
Repairing cluster using Cartridge CLI
repair
command
Changing instance advertise URI
Changing replicaset leader
Removing instance from the cluster
Cartridge API
Module
cartridge
Functions
cfg (opts, box_opts)
reload_roles ()
is_healthy ()
Tables
VshardGroup
Global functions
_G.cartridge_get_schema ()
_G.cartridge_set_schema (schema)
Clusterwide DDL schema
get_schema ()
set_schema (schema)
Cluster administration
ServerInfo
ReplicasetInfo
admin_get_servers ([uuid])
admin_get_replicasets ([uuid])
admin_probe_server (uri)
admin_enable_servers (uuids)
admin_disable_servers (uuids)
admin_bootstrap_vshard ()
Automatic failover management
FailoverParams
failover_get_params ()
failover_set_params (opts)
failover_promote (replicaset_uuid[, opts])
admin_get_failover ()
admin_enable_failover ()
admin_disable_failover ()
Managing cluster topology
admin_edit_topology (args)
EditReplicasetParams
EditServerParams
JoinServerParams
Clusterwide configuration
config_get_readonly ([section_name])
config_get_deepcopy ([section_name])
config_patch_clusterwide (patch)
config_force_reapply (uuids)
Inter-role interaction
service_get (module_name)
service_set (module_name, instance)
Cross-instance calls
rpc_call (role_name, fn_name[, args[, opts]])
Usage:
rpc_get_candidates (role_name[, opts])
Authentication and authorization
http_authorize_request (request)
http_render_response (response)
http_get_username ()
Deprecated functions
admin_edit_replicaset (args)
admin_edit_server (args)
admin_join_server (args)
admin_expel_server (uuid)
Module
cartridge.auth
Local Functions
set_enabled (enabled)
get_enabled ()
init ()
set_callbacks (callbacks)
get_callbacks ()
Configuration
set_params (opts)
get_params ()
AuthParams
Authorizarion
set_lsid_cookie (user)
get_session_username ()
authorize_request (request)
render_response (response)
User management
UserInfo
add_user (username, password, fullname, email)
get_user (username)
edit_user (username, password, fullname, email)
list_users ()
remove_user (username)
Module
cartridge.roles
Functions
reload ()
Local Functions
cfg (module_names)
get_all_roles ()
get_known_roles ()
get_enabled_roles (roles)
get_role_dependencies (role_name)
validate_config (conf_new, conf_old)
apply_config (conf, opts, is_master)
Module
cartridge.issues
Tables
limits
Module
cartridge.argparse
Functions
parse ()
get_opts (filter)
get_box_opts ()
get_cluster_opts ()
Tables
cluster_opts
box_opts
Module
cartridge.twophase
Functions
patch_clusterwide (patch)
force_reapply (uuids)
get_schema ()
set_schema (schema)
on_patch (trigger_new, trigger_old)
Usage:
Local Functions
prepare_2pc (data)
commit_2pc ()
abort_2pc ()
Module
cartridge.failover
Functions
get_coordinator ()
Local Functions
schedule_clear ()
schedule_add ()
_get_appointments_disabled_mode ()
_get_appointments_eventual_mode ()
_get_appointments_stateful_mode ()
accept_appointments (replicaset_uuid)
fencing_check ()
failover_loop ()
cfg ()
get_active_leaders ()
is_leader ()
is_rw ()
is_vclockkeeper ()
consistency_needed ()
force_inconsistency (replicaset_uuid)
wait_consistency (replicaset_uuid)
Module
cartridge.topology
Functions
cluster_is_healthy ()
Local Functions
get_leaders_orded (topology_cfg, replicaset_uuid, new_order)
validate (topology_new, topology_old)
find_server_by_uri (topology_cfg, uri)
refine_servers_uri (topology_cfg)
probe_missing_members (servers)
get_fullmesh_replication (topology_cfg, replicaset_uuid)
Module
cartridge.clusterwide-config
Usage:
Functions
new ([data])
save (clusterwide_config, filename)
load (filename)
Local Functions
load_from_file (filename)
load_from_dir (path)
remove (string)
Module
cartridge.rpc
Functions
get_candidates (role_name[, opts])
call (role_name, fn_name[, args[, opts]])
Usage:
Local Functions
get_connection (role_name[, opts])
Module
cartridge.tar
Functions
pack (files)
unpack (tar)
Module
cartridge.pool
Functions
connect (uri[, opts])
Local Functions
format_uri (uri)
map_call (fn_name[, args[, opts]])
Module
cartridge.confapplier
Functions
get_active_config ()
get_readonly ([section_name])
get_deepcopy ([section_name])
Local Functions
set_state (state[, err])
wish_state (state[, timeout])
validate_config (clusterwide_config_new)
apply_config (clusterwide_config)
Module
cartridge.test-helpers
Fields
Server
Cluster
Etcd
Module
cartridge.remote-control
Local Functions
bind (host, port)
accept (credentials)
unbind ()
drop_connections ()
Module
cartridge.service-registry
Functions
set (module_name, instance)
get (module_name)
Module
custom-role
Functions
init (opts)
stop (opts)
validate_config (conf_new, conf_old)
apply_config (conf, opts)
Fields
role_name
hidden
permanent
Module
cartridge.lua-api.stat
Local Functions
get_stat (uri)
Module
cartridge.lua-api.boxinfo
Local Functions
get_info (uri)
Module
cartridge.lua-api.get-topology
Tables
ReplicasetInfo
ServerInfo
Local Functions
get_topology ()
Module
cartridge.lua-api.edit-topology
Editing topology
edit_topology (args)
EditReplicasetParams
JoinServerParams
EditServerParams
Module
cartridge.lua-api.topology
Functions
get_servers ([uuid])
get_replicasets ([uuid])
probe_server (uri)
enable_servers (uuids)
disable_servers (uuids)
Local Functions
get_self ()
Module
cartridge.lua-api.failover
Functions
get_params ()
set_params (opts)
get_failover_enabled ()
set_failover_enabled (enabled)
promote (replicaset_uuid[, opts])
Tables
FailoverParams
Module
cartridge.lua-api.vshard
Functions
bootstrap_vshard ()
Module
cartridge.lua-api.deprecated
Deprecated functions
join_server (args)
edit_server (args)
expel_server (uuid)
edit_replicaset (args)
Class
cartridge.test-helpers.cluster
Functions
Cluster:new (object)
Cluster:server (alias)
Cluster:apply_topology ()
Cluster:start ()
Cluster:stop ()
Cluster:join_server (server)
Cluster:wait_until_healthy (server)
Cluster:upload_config (config)
Cluster:download_config ()
Cluster:retrying (config, fn[, …])
Tables
cartridge.test-helpers.cluster.replicaset_config
Class
cartridge.test-helpers.server
Functions
Server:build_env ()
Server:start ()
Server:stop ()
Server:graphql (request, http_options)
Server:join_cluster (main_server[, options])
Server:setup_replicaset (config)
Server:upload_config (config)
Server:download_config ()
Methods
cartridge.test-helpers.server:new (object)
Class
cartridge.test-helpers.etcd
Functions
Etcd:new (object)
Etcd:start ()
Etcd:stop ()
Cartridge CLI
Installation
Quick start
Command-line completion
Linux
OS X
Usage
An application lifecycle
Creating an application from template
Building an application
Starting/stopping an application locally
start
stop
status
log
clean
Packing an application
Build directory
Distribution directory
Repairing a cluster
Repair commands
TGZ
RPM and DEB
Usage example
Package details
Docker
Usage example
Runtime image tag
Build and runtime images
Tarantool Enterprise SDK
Customizing the application build in Docker
Using the runtime image
Special files
Example: cartridge.pre-build
Example: cartridge.post-build
Cartridge Kubernetes guide
Installation tools
Creating an application
Building the application
Creating a Kubernetes cluster
Using
minikube
Using
kind
Launch the application
Tarantool Kubernetes operator
Deploying a Tarantool Cartridge application
Cluster management
Adding a new replica
Adding a shard (replica set)
Updating application version
Running multiple Tarantool Cartridge clusters in different namespaces
Deleting a cluster
Failover
Eventual mode
Stateful mode
Troubleshooting
Insufficient CPU
Insufficient disk space
Customization
Sidecar containers
Installation in an internal network
Delivery of tools
Installing the Tarantool Kubernetes operator
Installing the Tarantool Cartridge app
Changelog
[Unreleased]
Added
Fixed
Enhanced is WebUI
[2.4.0] - 2020-12-29
Added
Changed
Fixed
Enhanced is WebUI
[2.3.0] - 2020-08-26
Added
Fixed
Enhanced is WebUI
[2.2.0] - 2020-06-23
Added
Changed
Enhanced in WebUI
[2.1.2] - 2020-04-24
Fixed
[2.1.1] - 2020-04-20
Fixed
[2.1.0] - 2020-04-16
Added
Changed
Deprecated
Fixed
Enhanced in WebUI
[2.0.2] - 2020-03-17
Added
Changed
Fixed
Enhanced in WebUI
[2.0.1] - 2020-01-15
Added
Fixed
[2.0.0] - 2019-12-27
Added
Changed
Removed
Fixed
[1.2.0] - 2019-10-21
Added
Changed
Fixed
[1.1.0] - 2019-09-24
Added
Changed
Deprecated
Fixed
[1.0.0] - 2019-08-29
Added
Changed
Removed
[0.10.0] - 2019-08-01
Added
Fixed
[0.9.2] - 2019-07-12
Fixed
[0.9.1] - 2019-07-10
Added
Fixed
[0.9.0] - 2019-07-02
Added
Changed
Fixed
[0.8.0] - 2019-05-20
Added
Changed
Fixed
[0.7.0] - 2019-04-05
Added
Changed
[0.6.3] - 2019-02-08
Fixed
[0.6.2] - 2019-02-07
Fixed
[0.6.1] - 2019-02-05
Fixed
[0.6.0] - 2019-01-30
Fixed
Changed
Added
[0.5.1] - 2018-12-12
Fixed
[0.5.0] - 2018-12-11
Fixed
Changed
Added
[0.4.0] - 2018-11-27
Fixed/Improved
Added
[0.3] - 2018-10-30
Changed
Added
[0.2] - 2018-10-01
Changed
[0.1] - 2018-09-25
Added
Luatest
Overview
Requirements
Installation
Usage
Tests order
List of luatest functions
Capturing output
Test helpers
luacov integration
Development
Contributing
License
API
Module
luatest
Functions
Fields
assertions Functions
Module
luatest.helpers
Functions
Class
luatest.group
Instance methods
Class
luatest.http_response
Instance getter methods
Class
luatest.runner
Functions
Class
luatest.server
Functions
Changelog
Unreleased
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Configuration reference
Command options
URI
Initialization file
Configuration parameters
Basic parameters
Configuring the storage
Checkpoint daemon
Binary logging and snapshots
Hot standby
Replication
Networking
Logging
Logging example
Feedback
Deprecated parameters
C API reference
Module
box
Module
clock
Module
coio
Module
error
Module
fiber
Module
index
Module
latch
Module
lua/utils
Module
say
(logging)
Module
schema
Module
trivia/config
Module
tuple
Module
txn
Internals
Binary protocol
Index
Binary protocol – symbols and terms
Binary protocol – header and body
Binary protocol – requests
Binary protocol – responses if no error and no SQL
Binary protocol – responses for errors
Binary protocol – responses for SQL
Binary protocol – authentication
Binary protocol – replication
Binary protocol – illustration
XLOG / SNAP
MessagePack extensions
The DECIMAL type
The UUID type
The ERROR type
File formats
Data persistence and the WAL file format
The snapshot file format
The recovery process
Server startup with replication
Limitations
Interactive console
Utility
tarantoolctl
Command format
Commands for managing Tarantool instances
Commands for managing checkpoint files
Commands for managing Tarantool modules
Tips on Lua syntax
Object reference variations
Parameter variations
Rules for object names
Tutorials
Lua tutorials
Insert one million tuples with a Lua stored procedure
Configure
Delimiter
Create a function that returns a string
Create a function that calls another function and sets a variable
Modify the function so it returns a one-letter random string
Modify the function so it returns a ten-letter random string
Make a tuple out of a number and a string
Modify main_function to insert a tuple into the database
Modify main_function to insert a million tuples into the database
Sum a JSON field for all tuples
Indexed pattern search
C tutorial
C stored procedures
SQL tutorial
Starting up with a first table and SELECTs
Initialize
set
CREATE, INSERT, UPDATE, SELECT
CREATE TABLE
INSERT
SELECT with ORDER BY clause
SELECT with WHERE clauses
SELECT with GROUP BY and aggregating
Complications and complex SELECTs
NULLs
Indexes
Create a subset table
SELECT with a subquery
SELECT with a join
Constraints affecting updates
CREATE TABLE, with a CHECK clause
CREATE TABLE, with a FOREIGN KEY clause
UPDATE
DELETE
ALTER TABLE, with a FOREIGN KEY clause
Triggers
Operators and functions
String operations
Number operations
Ranges and limits
Views
Common table expressions
VALUES
Metadata
Calling from a host language to make a big table
box.execute()
Create a million-row table
Select from a million-row table
Cleanup and exit
Improving MySQL with Tarantool
libslave
tutorial
Contributing
How to be involved in Tarantool
What is Tarantool?
How to get help?
How to leave feedback, ideas or suggestions?
How to contribute?
Tarantool Ecosystem
You have a problem in documentation. How to tell about it and how to fix it?
How to contribute to modules
Want to contribute to an existing module
Want to create a new module
How to contribute to Tarantool Core
How to write a test
How to contribute to language connectors
How to contribute to tools
How to become a maintainer
Build and contribute
Building from source
Release management
Release policy
Release list
How to make a minor release
Guidelines
Developer guidelines
How to work on a bug
How to write a commit message
How to submit a patch for review
Documentation guidelines
reStructuredText markup
General syntax guidelines
Wrapping text
Indentation
Code snippets
Inline code
Highlighting variables in code
Linking to other documentation pages
Linking to labels (anchors)
Linking to external resources
Tables
Titles
Admonitions
Making comments
Language and style
US vs British spelling
Instance vs server
Express one idea in a sentence
Don’t use i.e. and e.g.
Examples and templates
Documenting a function
Documenting class method and data
Documentation infrastructure
Adding submodules
1. Add a submodule
2. Update update_submodule.sh
metrics
cartridge_cli
3. Update .gitignore
C Style Guide
General guidelines
Commenting style
Header files
Allocating memory
Function naming
Other
Linux kernel coding style
Chapter 1: Indentation
Chapter 2: Breaking long lines and strings
Chapter 3: Placing Braces and Spaces
Chapter 3.1: Spaces
Chapter 4: Naming
Chapter 5: Typedefs
Chapter 6: Functions
Chapter 7: Centralized exiting of functions
Chapter 8: Commenting
Chapter 9: You’ve made a mess of it
Chapter 10: Kconfig configuration files
Chapter 11: Data structures
Chapter 12: Macros, Enums and RTL
Chapter 13: Printing kernel messages
Chapter 14: Allocating memory
Chapter 15: The inline disease
Chapter 16: Function return values and names
Chapter 17: Don’t re-invent the kernel macros
Chapter 18: Editor modelines and other cruft
Appendix I: References
Python Style Guide
Introduction
A Foolish Consistency is the Hobgoblin of Little Minds
Code lay-out
Indentation
Tabs or Spaces?
Maximum Line Length
Blank Lines
Encodings (PEP 263)
Imports
Whitespace in Expressions and Statements
Pet Peeves
Other Recommendations
Comments
Block Comments
Inline Comments
Documentation Strings
Version Bookkeeping
Naming Conventions
Descriptive: Naming Styles
Prescriptive: Naming Conventions
Names to Avoid
Package and Module Names
Class Names
Exception Names
Global Variable Names
Function Names
Function and method arguments
Method Names and Instance Variables
Constants
Designing for inheritance
References
Copyright
Lua Style Guide
Indentation and Formatting
Avoid global variable
Naming
Idioms and patterns
Modules
Commenting
Testing
Error Handling
Luacheck
Release notes
Version 2.x
Version 1.10
Version 1.9
Version 1.8
Version 1.7
Version 1.6
Tarantool - Documentation
Tarantool - Documentation
Tarantool 2.6 manual
This manual embraces all aspects of using Tarantool: from introductory information and exercises for beginners – to advanced instructions and detailed references for power users and contributors.
Getting started
Getting started
Data model
CRUD operations
Indexes
Transactions
Access control
Triggers
Sharding
Cluster
Application server
Administration
Replication
Storage engines
Connectors
Reference
Tutorials
Contributing
Release notes
Other formats:
Single-page HTML
PDF
See also:
Documentation archive
Articles
Support:
Google forum
Telegram chat
Getting started