Carrier DB is the most memory efficient, secure, production oriented key-value database server.
Memory efficiency is an often ignored aspect of data storage. When you have multiple terabytes of expensive RAM, your budget cries every time you waste resources on unnecessary bloated data storage overhead.
Carrier DB is built with data efficiency and security from the ground up. Carrier DB uses custom memory-efficient data structures to store your in-memory data 200% to 1000% more efficiently than other in-memory databases (space savings based on data size vs. storage size considering all accounting metadata and data structure overhead).
Carrier DB implements design goals other in-memory databases completely ignore:
Carrier DB also supports the legacy redis protocol. We are currently increasing the number of supported built-in data structures accessible using legacy protocols.
As of right now Carrier DB supports strings, lists, HLLs, maps/dicts/hashes, sets, qsets, and qnsets. More data structures are showing up all the time, so join our mailing list to keep updated.
Carrier DB is an extremely multi-threaded database.
Carrier DB can efficiently be configured for hundreds or thousands of cores using terabytes of RAM all running under a single OS process (values inside Carrier DB are currently limited to 281 terabytes per key, please let us know if you need higher limits).
Carrier DB combines complex data structures, low latency atomic updates, and a massively multi-threaded architecture so your server doesn't collapse, stall, or become unresponsive due to large queries or greedy clients.
Encryption is a must-have feature these days. Any servers not giving you the option of connecting over TLS are being professionally irresponsible and opening up your company to increased liability.
If your in-memory databases stores user information and you are not using TLS for client connections, you are likely not GDPR compliant.
To ensure best performance, Carrier DB uses independent decryption thread pools and encryption thread pools. Carrier DB concurrently decrypts requests while also encrypting replies giving you the fastest TLS performance possible.
Carrier DB has conquered the tyranny of 64-bit platforms by minimizing pointers inside all data structures.
Carrier DB stores all data in various succinct data structures we've created solely for the purpose of low overhead in-memory data storage capable of growing to dozens of terabytes of RAM.
Carrier DB actually implements the smallest data structures physically possible. No other systems approach the memory efficiency of Carrier DB.
Carrier DB enables serving data from multiple IP addresses. Each IP address can be configured with independent security, encryption, protocol, and performance options.
Each Carrier DB virtual network can:
Carrier DBbeta is ready for evaluation and production use.
Beta releases expect you to have familiarity with legacy memcached/redis commands. Carrier DB also shares the same scalable server architecture as Carrier Cache so configuration documentation is at Carrier Cache Tech Specs.
If you run into any problems, let us know so we can prioritize fixes for you.
Most features of Carrier DB have unique implementation details and have little to no equivalent in other databases when measured against memory efficiency and security guarantees.
Here's an overview of released and in-progress Carrier DB features:
qset— deduplicating set storage with fast intersections
qnset— compact integer set storage with fast intersections
If your favorite command is currently missing, let us know what you need. We prioritize features based on request popularity.
[networkName] [listenAddress] [listenPort] [tls|notls] [protocol]
port 0(so Carrier DB picks a random usable port on startup), your notify script can tell your infrastructure where your DB can be contacted.
notifyUser [system username]and
notifyGroup [group name].
hs), the namespace could not be escaped unless you had admin permissions.
nset al) and exited freely (
nsreset), but exiting a namespace is limited to the depth specified by
nslockhas two forms:
nslock- set current namespace to the depth you get if you run
nsresetin the future.
nslock [ns|cs|hs] namespaceDepth...- lock client connection to the namespace (or cs or hs) specified.
nslock ns a namespace to lock clientsis useful for the per-network namespace configuration directive as
namespace "nslock ns my private namespace"so clients will be unable to
nsresetto any level above
my private namespace.
nslockprevents clients from reaching higher namespaces. Clients can always access deeper namespaces and clients can further
nslockdeeper namespaces, but once
nslockruns on a client (or when specified as part of a network configuration), the client will be unable to escape to any higher namespaces.
GETALL, etc now returns an array of arrays populated by each worker independently.
SYNTAX JSONon each connection, you can set a default reply syntax on virtual networks with per-network config directive
syntax json(even if a network has a default syntax, each connection can run
SYNTAXto change reply syntax at any time).
JSON, you can also request
SYNTAX PYTHONor configure a network with
syntax pythonto return set-type output using Python set syntax (JSON has no 'set' built-in type, so in JSON, sets are printed as arrays).
readonly), but those are now removed in favor of a simpler
accessconfig, you can enable access using a string with any combination of:
access "read write"
access "admin stats read write"
accessmust be specified for each listening interface. If no
accessis defined, the default is to not allow any data access.
echo | openssl s_client -connect [targetHost]:[targetPort] -reconnect
privatekeyconfigure statements per network and Carrier DB takes care of the rest.
namespacedirective describing the namespace all clients will be locked into before running any commands.
namespace "nslock ns users"— restrict all clients on Network A to the
namespace "nslock ns stats"— restrict all clients on Network B to a
qsetauto-indexes set elements to store elements only once on your entire server no matter how many times they are used in
qsethelps when you have many medium or large size repeated values across many sets and you need super efficient space savings combined with fast set intersections.
qnsetstores integer values in native binary format within range
qnsetsupports the smallest integer storage possible for sets with large value distributions as well as supporting fast numeric intersection capabilities for large sets.
admin tls reload
admin shutdown— clean shutdown — listening ports are closed but current in-flight requests run to completion.
admin shutdown fast— instant shutdown — stop the server without regard for clients or state or consistency.
SIGTERMto the Carrier DB parent process
|legacy memcached protocol||
enable by adding
For server setup, see: Carrier Cache Tech Specs.
|legacy redis protocol||
enable by adding
For server setup, see: Carrier Cache Tech Specs.
|Full JSON Output For All Commands||
enable for all clients by adding
or enable per-connection by running command
you can return to legacy redis protocol by running
Carrier DB JSON output is available in all legacy redis clients with no changes necessary since the JSON output is returned as legacy redis protocol strings.
legacy redis protocol [namespaces]
Note: namespaces are unique to Carrier DB and have no legacy redis equivalent.
|legacy redis protocol [sets]||
|legacy redis protocol [string]||
|legacy redis protocol [list]||
|legacy redis protocol [hyperloglog]||
legacy redis protocol [hash, dict, map]
Note: redis hash commands are just protocol adapters. All maps in Carrier DB are fully formed namespaces supporting nested types.
legacy redis protocol [server / admin]
Here at End Of The Page, we want to thank you for reading our page.
If you have any questions about Carrier DB, let us know and we can make the world a little bit better one program at a time.
For updates about new Carrier DB features and releases, sign up for our mailing list below.
This is the official site for all Carrier DB updates, releases, and feature notes. Check back often.
YOU CONSENT TO THE PLACEMENT OF COOKIES ON ANY SURFACE NEAR YOU FOR THE PURPOSE OF EASILY CONDUCTING CONSUMPTION OF AFOREMENTIONED COOKIES
NO WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED EXCEPT FOR AN EVERLASTING GUARANTEE OF BIG DATABASE ENERGY