I’m looking for a data store that would be optimal for storing, incrementing, and retrieving only integers, and I’m wondering if `Aerospike`

would be a fair solution. The logical structure of my data would be akin to a `Map<Integer,Map<Integer,Integer>>`

. The data are groups of `Integer`

counters. Each counter has it’s own `Integer`

id that is unique within a group, and each group has its own unique `Integer`

id which is completely unique. So I need to use `Integer`

ids, to find a particular group of counters, and then increment a subset of those counters in the group.

Data usage:

- A group will always be queried for as a whole, never as a subset
- ~200 counters per group
- ~millions of groups

- Only subsets of groups will be incremented, never an entire group at once
- ~15 counters at a time

Operationally, that’s all I’ll be doing, and I’m wondering if anyone thinks `Aerospike`

would be a good fit for this case.

The only caveat is that I’m short for RAM, so I can’t keep data completely in-memory.

Right off the bat, I’m wondering if a single-bin namespace with `Integer`

's as the primary keys, and counter ids as secondary indexes would be the the most optimal organization of the data. Groups could be retrieved with the primary key, and counters can be referenced and incremented with their corresponding secondary key. Would this be the most appropriate organization of my data in `Aerospike`

?