• Stars
    star
    1,036
  • Rank 44,478 (Top 0.9 %)
  • Language
    C
  • License
    Other
  • Created over 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Aerospike Database Server – flash-optimized, in-memory, nosql database

Aerospike Database Server

Welcome to the Aerospike Database Server source code tree!

Aerospike is a distributed, scalable NoSQL database. It is architected with three key objectives:

  • To create a high-performance, scalable platform that would meet the needs of today's web-scale applications
  • To provide the robustness and reliability (i.e., ACID) expected from traditional databases.
  • To provide operational efficiency (minimal manual involvement)

For more information on Aerospike, please visit: http://aerospike.com

Telemetry Anonymized Data Collection

The Aerospike Community Edition collects anonymized server performance statistics. Please see the Aerospike Telemetery web page for more information. The full Telemetry data collection agent source code may be found in the "telemetry" submodule.

Build Prerequisites

The Aerospike Database Server can be built and deployed on various current 64-bit GNU/Linux platform versions, such as Centos 7, Red Hat Enterprise Linux 8/9, Amazon Linux 2023, Debian 10 or later, and Ubuntu 20.04 or later.

Dependencies

The majority of the Aerospike source code is written in the C programming language, conforming to the ANSI C99 standard.

To install dependencies run ./bin/install-dependencies.sh in the aerospike-server repo.

In particular, the following tools and libraries are needed:

C Compiler Toolchain

Building Aerospike requires the GCC 4.1 or later C compiler toolchain, with the standard GNU/Linux development tools and libraries installed in the build environment, including:

  • autoconf

  • automake

  • cmake

  • libtool

  • make

C++

The C++ compiler is required for the Aerospike geospatial indexing feature and its dependency, Google's S2 Geometry Library (both written in C++.)

  • The required CentOS 7 & Red Hat Enterprise Linux 8/9 package to install is: gcc-c++.

  • The required Debian 10/11/12 and Ubuntu 20/22 package to install is: g++.

OpenSSL

OpenSSL 0.9.8b or later is required for cryptographic hash functions (RIPEMD-160 & SHA-1) and pseudo-random number generation.

  • The CentOS 7 & Red Hat Enterprise Linux 8/9 OpenSSL package to install: openssl-devel

  • The Debian 10/11/12 and Ubuntu 20/22 OpenSSL packages to install: libssl-dev.

Lua 5.1

The Lua 5.1 language is required for User Defined Function (UDF) support.

  • By default, Aerospike builds with Lua 5.1 support provided by the LuaJIT submodule.

  • Alternatively, it is possible to build with standard Lua 5.1 provided by the build environment. In that case:

    • The CentOS 7 & Red Hat Enterprise Linux 8/9 Lua package to install is: lua, and also lua-devel and lua-static on CentOS 7.

    • The Debian 10/11/12 and Ubuntu 20/22 Lua packages to install are: lua5.1 and liblua5.1-dev.

    • Build by passing the USE_LUAJIT=0 option to make.

Zlib

  • The CentOS 7 & Red Hat Enterprise Linux 8/9 requires zlib-devel

  • The Debian 10/11/12 and Ubuntu 20/22 requiresi zlib1g-dev.

Python 3 or 2

Running the Telemetry Agent requires either Python 3+ or Python 2.6+, at least one of which is generally available by default on most platforms. On some distros, such as Ubuntu 20+, it may be necessary to install the package python, while on other distros, such as Red Hat Enterprise Linux 8+, the package name includes the major (and/or minor) version number, e.g., python3 or python2.

Submodules

The Aerospike Database Server build depends upon 8 submodules:

Submodule Description
abseil-cpp Support for the S2 Spherical Geometry Library
common The Aerospike Common Library
jansson C library for encoding, decoding and manipulating JSON data
jemalloc The JEMalloc Memory Allocator
lua-core The Aerospike Core Lua Source Files
luajit The LuaJIT (Just-In-Time Compiler for Lua)
mod-lua The Aerospike Lua Interface
s2geometry The S2 Spherical Geometry Library
telemetry The Aerospike Telemetry Agent (Community Edition only)

After the initial cloning of the aerospike-server repo., the submodules must be fetched for the first time using the following command:

$ git submodule update --init

Note: As this project uses submodules, the source archive downloadable via GitHub's Download ZIP button will not build unless the correct revision of each submodule is first manually installed in the appropriate modules subdirectory.

Building Aerospike

Default Build

$ make          -- Perform the default build (no packaging.)

Note: You can use the -j option with make to speed up the build on multiple CPU cores. For example, to run four parallel jobs:

$ make -j4

Build Options

$ make deb      -- Build the Debian (Ubuntu) package.

$ make rpm      -- Build the Red Hat Package Manager (RPM) package.

$ make tar      -- Build the "Every Linux" compressed "tar" archive (".tgz") package.

$ make source   -- Package the source code as a compressed "tar" archive.

$ make clean    -- Delete any existing build products, excluding built packages.

$ make cleanpkg -- Delete built packages.

$ make cleanall -- Delete all existing build products, including built packages.

$ make cleangit -- Delete all files untracked by Git.  (Use with caution!)

$ make strip    -- Build a "strip(1)"ed version of the server executable.

Overriding Default Build Options

$ make {<Target>}* {<VARIABLE>=<VALUE>}*  -- Build <Target>(s) with optional variable overrides.

Example:

$ make USE_JEM=0   -- Default build *without* JEMalloc support.

Configuring Aerospike

Sample Aerospike configuration files are provided in as/etc. The developer configuration file, aerospike_dev.conf, contains basic settings that should work out-of-the-box on most systems. The package example configuration files, aerospike.conf, and the Solid State Drive (SSD) version, aerospike_ssd.conf, are suitable for running Aerospike as a system daemon.

These sample files may be modified for specific use cases (e.g., setting network addresses, defining namespaces, and setting storage engine properties) and tuned for for maximum performance on a particular system. Also, system resource limits may need to be increased to allow, e.g., a greater number of concurrent connections to the database. See "man limits.conf" for how to change the system's limit on a process' number of open file descriptors ("nofile".)

Running Aerospike

There are several options for running the Aerospike database. Which option to use depends upon whether the primary purpose is production deployment or software development.

The preferred method for running Aerospike in a production environment is to build and install the Aerospike package appropriate for the target Linux distribution (i.e., an ".rpm", ".deb", or ".tgz" file), and then to control the state of the Aerospike daemon, either via the SysV daemon init script commands, e.g., service aerospike start, or else via systemctl on systemd-based systems, e.g., systemctl start aerospike.

A convenient way to run Aerospike in a development environment is to use the following commands from within the top-level directory of the source code tree (aerospike-server):

To create and initialize the run directory with the files needed for running Aerospike, use:

$ make init

or, equivalently:

$ mkdir -p run/{log,work/{smd,{sys,usr}/udf/lua}}
$ cp -pr modules/lua-core/src/* run/work/sys/udf/lua

To launch the server with as/etc/aerospike_dev.conf as the config:

$ make start

or, equivalently:

$ nohup ./modules/telemetry/telemetry.py as/etc/telemetry_dev.conf > /dev/null 2>&1 &
$ target/Linux-x86_64/bin/asd --config-file as/etc/aerospike_dev.conf

To halt the server:

$ make stop

or, equivalently:

$ PID=`pgrep telemetry.py | grep -v grep`; if [ -n "$PID" ]; then kill $PID; fi
$ kill `cat run/asd.pid` ; rm run/asd.pid

Please refer to the full documentation on the Aerospike web site, http://aerospike.com/docs/, for more detailed information about configuring and running the Aerospike Database Server, as well as about the Aerospike client API packages for popular programming languages.

More Repositories

1

aerospike-client-go

Aerospike Client Go
Go
432
star
2

aerospike-client-java

Aerospike Java Client Library
Java
236
star
3

aerospike-client-nodejs

Node.js client for the Aerospike database
JavaScript
198
star
4

act

Aerospike Certification Tool
C
188
star
5

aerospike-server.docker

Dockerfiles for Aerospike Server
Shell
141
star
6

aerospike-client-python

Aerospike Python Client
Python
131
star
7

aerospike-client-c

Aerospike C Client
C
95
star
8

aerospike-kubernetes-operator

Kubernetes operator for the Aerospike database
Go
91
star
9

aerospike-client-rust

Rust client for the Aerospike database
Rust
82
star
10

aerospike-client-csharp

Aerospike C# Client Library
C#
70
star
11

aerospike-client-ruby

Ruby client for the Aerospike database
Ruby
60
star
12

aerospike-kubernetes

Mustache
51
star
13

aerospike-common

Common Library
C
47
star
14

aerospike-loader

Aerospike Data Loader
Java
39
star
15

aerospike-admin

Aerospike Administration tool: allows operations to view vital stats from the aerospike server from the command line.
Python
38
star
16

aerospike-prometheus-exporter

Monitoring suite for the Aerospike DB
Go
36
star
17

aerospike-monitoring

Python
33
star
18

aerospike-vector-search-examples

aerospike-vector-search-examples
Python
29
star
19

aerospike-jdbc

Minimalist JDBC driver for Aerospike
Java
27
star
20

asmalloc

Aerospike Memory Allocation Tracking Tool
C
26
star
21

aws-cloudformation

AWS CloudFormation scripts related to Aerospike
25
star
22

aerospike-tools-backup

Aerospike backup and restore utility
C
25
star
23

jemalloc

Aerospike Fork of the JEMalloc Memory Allocator
C
21
star
24

gommander

Go library to manage multiple servers over SSH
Go
18
star
25

aerospike-tools.docker

Aerospike Tools Dockerfile
Dockerfile
18
star
26

aerolab

Quickly spin up Aerospike clusters on docker or in AWS
Go
17
star
27

aerospike-kubernetes-enterprise

Shell
17
star
28

java-object-mapper

The Java Object Mapper is a simple, light-weight framework used to map POJOs to the Aerospike database. Using simple annotations or a configuration YAML file to describe how to map the data to Aerospike, the project takes the tedium out of mapping the data through the powerful, low level interface.
Java
17
star
29

aerospike-benchmark

A tool to benchmark the Aerospike Database.
C
15
star
30

aerospike-rest-gateway

REST client for the Aerospike database
Java
15
star
31

aerospike-server-enterprise.docker

Dockerfile for Aerospike Server Enterprise Edition
Shell
15
star
32

aerospike-mod-lua

Lua Interface Module for Aerospike Server and C Client
C
12
star
33

aerospike-backup-service

Aerospike Backup Service
Go
12
star
34

aerospike-document-lib

Aerospike Java Document API
Java
11
star
35

aerospike-client-java-reactive

Reactive programming interfaces for the Aerospike Java client
Java
9
star
36

aerospike-lua-core

Aerospike Lua Core Library
Lua
9
star
37

php-client

Aerospike Client for PHP 8
Rust
9
star
38

backup-go

A go library for backup and restore
Go
9
star
39

luajit

Aerospike Fork of the Lua JIT (Just-In-Time Compiler) http://luajit.org/
C
8
star
40

aerospike-connect-inbound-sdk

Inbound SDK for custom transforms or other plugins
Java
8
star
41

aerospike-dev-notebooks.docker

Repo for a docker image with Server, Jupyter, Python client, Tools and Notebooks
Jupyter Notebook
8
star
42

asmt

Backup & restore shmem indexes.
C
7
star
43

aerospike-tools-validation

C
7
star
44

aerospike-management-lib

A library to hold aerospike management and operations tasks.
Go
6
star
45

lua-bac

The Lua programming language with CMake based build
C
6
star
46

aerospike-docker-swarm

Python
6
star
47

graph-synth

Graph Synthesis Tool
Java
5
star
48

aql

The Aerospike Quick Look data browsing utility.
C
5
star
49

trino-aerospike.docker

Trino with the Aeropsike connector Docker Image
Shell
5
star
50

aerospike-client-rest-kubernetes

Aerospike REST client Helm chart for Kubernetes
Smarty
5
star
51

aerospike-elk

Starting point for using Aerospike with ElasticSearch / LogStash / Kibana for log file analysis.
5
star
52

document-lib-python

Python
5
star
53

aerospike-telemetry-agent

Aerospike Telemetry Agent: Anonymized Usage Data Collector.
Python
4
star
54

asconfig

A CLI tool for managing Aerospike configuration files.
Go
4
star
55

s2-geometry-library

C++
4
star
56

aerospike-connect-outbound-sdk

An outbound SDK for creating custom transforms for streaming connectors.
Java
3
star
57

tools-common-go

Common library used in tools golang projects.
Go
3
star
58

avs-client-go

πŸš€βž‘οΈπŸ”πŸΉ
Go
3
star
59

asvec

Aerospike Vector CLI
Go
3
star
60

aerospike-kubernetes-init

Go
2
star
61

kubernetes-operator

Website for the Aerospike Kubernetes Operator
JavaScript
2
star
62

helm-charts

Public helm charts for Aerospike
Shell
2
star
63

avs-client-python

πŸš€βž‘οΈπŸ”πŸ Aerospike Vector Search Client for Python
Python
2
star
64

schemas

Location for public aerospike schemas (json / yaml / xml / etc)
2
star
65

cloud-qualification

Scripts and instructions to run benchmarks/tests on cloud environments.
Python
2
star
66

aerospike-kubernetes-operator-ctl

Aerospike kubernetes operator command line tool
Go
1
star
67

secret-agent-client-c

C
1
star
68

azure-resource-manager

Shell
1
star
69

cf-service-broker-tile

Package up the Aerospike Service Broker into a Pivotal Cloud Foundry tile
Python
1
star
70

aerospike-database-recovery

Aerospike Database Recovery Documentation
Shell
1
star
71

cf-managed-service-tile

Cloud Foundry Managed Service for Aerospike
Shell
1
star
72

aerospike-net-extensions

Aerospike .NET Extensions [IDistributedCache]
C#
1
star
73

aerospike-proxy-client-sdk

Aerospike Proxy Client SDK for building clients
Kotlin
1
star
74

movement

Parallel Dataflow System
Java
1
star
75

abseil-cpp

C++
1
star