You can specify alpha keys (case sensitive/insensitive)
You can specify numeric keys (2^64 range)
Good for large on-line systems, with more users than you can handle comfortably (memory, disk, network, cache)
The "normal" (or operating) state, is when all keys and values are in memory (sort of like in-memory database)
The "degraded" state, is when some values (not keys) are on disk, in LRU (least recently used) basis
As soon as you plug another node in, the system will re-balance, and you'll get back to normal (non-degraded state)
Nodes can be defined for QUERY or PERSISTENCE (or both, though not ideal)
No database, filer, storage back-end needed... make best use of "spindles"
Supports both TCP and UDP for query interface, outrageous performance!
Makes full use of Dual core 2 Duos... or any number of threads/cpu's you throw at it... optimized for 2-8 cores per node
64 bit app (compiles for 32 for proof of concept)
Uses all the RAM you can throw at it... 8GB, 16GB, 32GB... no RAM disk, but real usage
Good uses?
Millions of rows/records, need to keep a BLOb quickly accessible
Have you ever actually tried putting 50 million files/blobs on a filer, or a file system?
Complex session data caching
When you have hundreds of thousands of queries per second, from hundreds of web servers...
Ran out of database scale-out capacity
Replication/scalability problems
Need a lookup (i.e. zero to one record returned, not a result set)
Hundreds of apache servers pounding on master/slave database system
This is not a database... if you think a database is what you need for your user lookups, then go on with your life — come back when you figure it out.
This project will expose a database like API, to lookups, but optimized for WEB 2.0 type uses.