Aerospike database

From Bauman National Library
This page was last modified on 19 June 2016, at 22:09.
</td></tr>
Aerospike database
fraimed
Developer(s) [www.aerospike.com/develop Aerospike]
Stable release
3.8.3 / June 2, 2016 (2016-06-02)
Repository {{#property:P1324}}
Written in Java,C++,Python,OpenSSL
Operating system Windows,Linux,OS X,Ubuntu,Debian 8
Type Aerospike database
Website www.aerospike.com

Aerospike is a flash-optimized in-memory open source NoSQL[1] database and the name of the company that produces it. 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)

Description

Aerospike is a distributed NoSQL database and key-value store architected for the performance needs of today’s web-scale applications; providing robustness and strong consistency with no downtime.

  • Client

The client libraries provide a native language interface idiomatic to each language for easier programming and higher performance. The client layer tracks cluster status in real-time, allowing minimal downtime (less than a second) when hardware or network changes result in cluster reconfiguration.

  • Cluster

Unlike other NoSQL databases, the clustering layer uses paxos’ distributed consensus only to to form the cluster, allowing both immediate and eventual consistency transactions. Data is distributed evenly and randomly across all nodes within the cluster, minimizing “thundering herd” issues.

Aerospike3.png
  • Server

Aerospike’s fast path for high performance is key-value operations. Additional features include a strongly typed data model, secondary index queries, in-database computation with user defined functions, rich list and map interfaces, geographic replication, and a management console.

  • Storage

Aerospike’s unique storage layer incorporates both DRAM and Flash, giving in-memory characteristics at the price of SSDs. With continual data expiration, Aerospike can operate as a cache with minimal maintenance.

Architecture

Aerospike’s distributed Shared-Nothing NoSQL architecture is designed and built to reliably store data with high availability. Expose APIs for storing and retrieving data and implement a client-server protocol making them cluster aware—tracking where data is stored and when nodes are added or removed.

  • First class observer of the cluster
  • Open source libraries and packages in 10+ languages including Node.js, Java, C#, PHP, Go and more
  • Detects transaction failures and re-routes requests to nodes with copies of data
  • Pools TCP/IP connections
  • Allows for arbitrary strings, integers, blobs, and more complex things like lists, maps, and JSON structures
  • Supports Check-And-Set and Atomic operations
Aerospike4.png

Open Source

Build Prerequisites

The Aerospike Database Server can be built and deployed on various current 64-bit GNU/Linux platform versions, such as the Red Hat family (e.g., CentOS 6 or later), Debian 7 or later, and Ubuntu 10.04 or later.

Dependencies

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

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
  • 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 6/7 package to install is: gcc-c++.
  • The required Debian 7/8 and Ubuntu 10/12/14/16 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 6/7 OpenSSL packages to install are: openssl, openssl-devel, openssl-static. •The Debian 7/8 and Ubuntu 10/12/14/16 OpenSSL packages to install are: openssl and libssl-dev.

Submodules

The Aerospike Database Server build depends upon (up to) 9 submodules:

Submodules Description
asmalloc
The ASMalloc Memory Allocation Tracking Tool
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
s2-geometry-library
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

Building Aerospike

Default Build

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

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 "strip(1)"ed versions of the server executables.

Advanced Build Options

$ make asm -- Build the server with ASMalloc support.

Running Aerospike

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.

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

Compare with competitors

Compared to Memcache and Redis, Aerospike has built-in clustering, and can use high performance Flash (SSDs). Benchmarks show Aerospike as comparable in single server speed to both Redis and Memcache, but Aerospike includes an automatic clustering and transparent resharding. This gives you the ability to add capacity by simply starting a node. Continuous defragmentation and eviction, and Memcache’s check-and-set operation, give you familiar and necessary functionality.

Version and license

  • Community Edition - free version with limitations: A maximum of two servers on the 200GB of data;
  • Enterprise Edition - 30 days trial, no restrictions. The cost of commercial fare ranges from $ 50,000 per server.

Notes

Cite error: Invalid <references> tag; parameter "group" is allowed only.

Use <references />, or <references group="..." />

References

  1. NoSQL (originally referring to "non SQL" or "non relational")[1] database provides a mechanism for storage and retrieval of data which is modeled in means other than the tabular relations used in relational databases.