HyperDex
Solutions
FAQ
Download
Docs
News
Papers
Contact Us
1
Introduction
1.1
Why HyperDex?
1.2
About this Book
1.3
Help and Support
1.3.1
Online and Free Resources
1.3.2
Commercial Support
2
Installing HyperDex
2.1
Quick Installation with Docker
2.2
Installing on CentOS/RedHat Using Binary Packages
2.3
Installing on Debian Using Binary Packages
2.4
Installing on Ubuntu Using Binary Packages
2.4.1
Ubuntu 12.04 Precise Pangolin
2.4.2
Ubuntu 14.04 Trusty Tahr
2.5
Installing on Fedora Using Binary Packages
2.6
Installing on Linux Using Universal Binaries
2.7
Installing on OS X Using Homebrew
2.8
Installing From Source
2.8.1
Troubleshooting
2.9
Verifying Installation
2.10
Upgrading to 1.6
2.11
Upgrading to 1.5
2.12
Upgrading to 1.4
2.13
Upgrading to 1.3
2.14
Upgrading to 1.2
I
For Developers
3
Quick Start
3.1
High-Level Overview
3.2
Starting the Coordinator
3.3
Starting HyperDex Daemons
3.4
Creating a new Space
3.5
Interacting with the “phonebook” Space
3.6
Cleaning Up
4
Data Types
4.1
Setup
4.2
Strings
4.3
Integers
4.4
Floats
4.5
Lists
4.6
Sets
4.7
Maps
4.8
Timestamps
4.8.1
Timestamp Intervals
5
Asynchronous Operations
5.1
Setup
5.2
Asynchronous Operations
5.3
Potential Pitfalls
5.4
A Common Window Pattern
6
Atomic Operations
6.1
Setup
6.2
Atomic Operations
6.3
A Comprehensive Walk
6.3.1
Atomic Operations on Documents
7
Document Storage
7.1
Setup
7.2
Working with Documents
7.3
Indexing Documents
8
Authorization
8.1
Setup
8.2
Using Macaroons
8.3
Advanced Caveats
8.4
Efficiency Considerations
9
Transactions
9.1
Setup
9.2
Using Transactions
9.3
Rich API
9.4
Summary
II
For Administrators
10
Backup and Recovery
10.1
Consistent versus Inconsistent Backups
10.2
Simple Backup Strategies
10.3
Backup Efficiency
10.4
Advanced Backup Techniques
10.5
Incremental Backups with Rsync
11
Fault Tolerance
11.1
Coordinator
11.2
HyperDex Daemons
11.3
Fault Tolerance Thresholds
11.4
Shutting Down and Restoring a Cluster
12
Tuning HyperDex
12.1
Filesystem
12.1.1
Choosing the Right Filesystem
12.1.2
Improving Read Performance by Disabling Access Time Updates
12.1.3
Improving ext3/4 Write Performance with
data=writeback
12.1.4
Changing the Linux Disk Scheduler
12.1.5
Linux VM Tuning
12.2
Improving Stability by Increasing Open File Limits
12.3
Deploying on EC2 and Other Xen Environments
III
API Reference
13
C Client API
13.1
Building the HyperDex C Binding
13.2
Compiling and Linking Your Application
13.3
Hello World
13.4
Asynchronous Patterns
13.5
Creating a Client
13.6
Data Structures
13.6.1
enum hyperdatatype
13.6.2
Bytestring Format
13.6.3
Serialization API
13.6.4
Deserialization API
13.6.5
Memory Management Utilties
13.7
Attributes
13.8
Map Attributes
13.9
Predicates
13.10
Error Handling
13.11
Operations
13.11.1
get
13.11.2
get
_partial
13.11.3
put
13.11.4
cond
_put
13.11.5
group
_put
13.11.6
put
_if
_not
_exist
13.11.7
del
13.11.8
cond
_del
13.11.9
group
_del
13.11.10
atomic
_add
13.11.11
cond
_atomic
_add
13.11.12
group
_atomic
_add
13.11.13
atomic
_sub
13.11.14
cond
_atomic
_sub
13.11.15
group
_atomic
_sub
13.11.16
atomic
_mul
13.11.17
cond
_atomic
_mul
13.11.18
group
_atomic
_mul
13.11.19
atomic
_div
13.11.20
cond
_atomic
_div
13.11.21
group
_atomic
_div
13.11.22
atomic
_mod
13.11.23
cond
_atomic
_mod
13.11.24
group
_atomic
_mod
13.11.25
atomic
_and
13.11.26
cond
_atomic
_and
13.11.27
group
_atomic
_and
13.11.28
atomic
_or
13.11.29
cond
_atomic
_or
13.11.30
group
_atomic
_or
13.11.31
atomic
_xor
13.11.32
cond
_atomic
_xor
13.11.33
group
_atomic
_xor
13.11.34
atomic
_min
13.11.35
cond
_atomic
_min
13.11.36
group
_atomic
_min
13.11.37
atomic
_max
13.11.38
cond
_atomic
_max
13.11.39
group
_atomic
_max
13.11.40
string
_prepend
13.11.41
cond
_string
_prepend
13.11.42
group
_string
_prepend
13.11.43
string
_append
13.11.44
cond
_string
_append
13.11.45
group
_string
_append
13.11.46
list
_lpush
13.11.47
cond
_list
_lpush
13.11.48
group
_list
_lpush
13.11.49
list
_rpush
13.11.50
cond
_list
_rpush
13.11.51
group
_list
_rpush
13.11.52
set
_add
13.11.53
cond
_set
_add
13.11.54
group
_set
_add
13.11.55
set
_remove
13.11.56
cond
_set
_remove
13.11.57
group
_set
_remove
13.11.58
set
_intersect
13.11.59
cond
_set
_intersect
13.11.60
group
_set
_intersect
13.11.61
set
_union
13.11.62
cond
_set
_union
13.11.63
group
_set
_union
13.11.64
document
_rename
13.11.65
cond
_document
_rename
13.11.66
group
_document
_rename
13.11.67
document
_unset
13.11.68
cond
_document
_unset
13.11.69
group
_document
_unset
13.11.70
map
_add
13.11.71
cond
_map
_add
13.11.72
group
_map
_add
13.11.73
map
_remove
13.11.74
cond
_map
_remove
13.11.75
group
_map
_remove
13.11.76
map
_atomic
_add
13.11.77
cond
_map
_atomic
_add
13.11.78
group
_map
_atomic
_add
13.11.79
map
_atomic
_sub
13.11.80
cond
_map
_atomic
_sub
13.11.81
group
_map
_atomic
_sub
13.11.82
map
_atomic
_mul
13.11.83
cond
_map
_atomic
_mul
13.11.84
group
_map
_atomic
_mul
13.11.85
map
_atomic
_div
13.11.86
cond
_map
_atomic
_div
13.11.87
group
_map
_atomic
_div
13.11.88
map
_atomic
_mod
13.11.89
cond
_map
_atomic
_mod
13.11.90
group
_map
_atomic
_mod
13.11.91
map
_atomic
_and
13.11.92
cond
_map
_atomic
_and
13.11.93
group
_map
_atomic
_and
13.11.94
map
_atomic
_or
13.11.95
cond
_map
_atomic
_or
13.11.96
group
_map
_atomic
_or
13.11.97
map
_atomic
_xor
13.11.98
cond
_map
_atomic
_xor
13.11.99
group
_map
_atomic
_xor
13.11.100
map
_string
_prepend
13.11.101
cond
_map
_string
_prepend
13.11.102
group
_map
_string
_prepend
13.11.103
map
_string
_append
13.11.104
cond
_map
_string
_append
13.11.105
group
_map
_string
_append
13.11.106
map
_atomic
_min
13.11.107
cond
_map
_atomic
_min
13.11.108
group
_map
_atomic
_min
13.11.109
map
_atomic
_max
13.11.110
cond
_map
_atomic
_max
13.11.111
group
_map
_atomic
_max
13.11.112
search
13.11.113
sorted
_search
13.11.114
count
13.12
Working with Signals
13.13
Working with Threads
14
C Admin API
14.1
Operations
14.1.1
read
_only
14.1.2
wait
_until
_stable
14.1.3
fault
_tolerance
14.1.4
validate
_space
14.1.5
add
_space
14.1.6
rm
_space
14.1.7
mv
_space
14.1.8
list
_spaces
14.1.9
list
_indices
14.1.10
list
_subspaces
14.1.11
add
_index
14.1.12
rm
_index
14.1.13
server
_register
14.1.14
server
_online
14.1.15
server
_offline
14.1.16
server
_forget
14.1.17
server
_kill
14.1.18
backup
14.1.19
enable
_perf
_counters
14.1.20
disable
_perf
_counters
15
Go Client API
15.0.21
Using Go Within Your Application
15.0.22
Hello World
15.0.23
Data Structures
15.0.24
Attributes
15.0.25
Map Attributes
15.0.26
Predicates
15.0.27
Error Handling
15.0.28
Operations
16
Java API
16.1
Client Library
16.1.1
Building the HyperDex Java Binding
16.1.2
Using Java Within Your Application
16.1.3
Hello World
16.1.4
Asynchronous Operations
16.1.5
Data Structures
16.1.6
Attributes
16.1.7
Map Attributes
16.1.8
Predicates
16.1.9
Error Handling
16.1.10
Operations
16.1.11
Working with Signals
16.1.12
Working with Threads
17
Node API
17.1
Client Library
17.1.1
Building the HyperDex Node.js Binding
17.1.2
Using Node.js Within Your Application
17.1.3
Hello World
17.1.4
Asynchronous Operations
17.1.5
Data Structures
17.1.6
Attributes
17.1.7
Operations
17.1.8
Working with Signals
17.1.9
Working with Events
18
Python Client API
18.0.10
Building the HyperDex Python Binding
18.0.11
Using Python Within Your Application
18.0.12
Hello World
18.0.13
Asynchronous Operations
18.0.14
Data Structures
18.0.15
Attributes
18.0.16
Map Attributes
18.0.17
Predicates
18.0.18
Error Handling
18.0.19
Operations
18.0.20
Working with Signals
18.0.21
Working with Threads
19
Ruby API
19.1
Client Library
19.1.1
Building the HyperDex Ruby Binding
19.1.2
Using Ruby Within Your Application
19.1.3
Hello World
19.1.4
Asynchronous Operations
19.1.5
Data Structures
19.1.6
Attributes
19.1.7
Map Attributes
19.1.8
Predicates
19.1.9
Error Handling
19.1.10
Operations
19.1.11
Working with Signals
19.1.12
Working with Threads