Start with the reads and writes your application must support. A key-value store is a natural fit for fetching one value by a known key. A relational database supports joins, constraints and transactions across related rows. Document and wide-column stores can fit other access patterns, but their names alone don't establish whether an invariant is preserved.
An index trades write work and storage for a faster lookup or ordering path. Its column order matters. For a query that filters by account and orders by creation time, an index beginning with account can narrow the scan before reading the time range. A low-cardinality flag by itself may not narrow much. Each example uses a fictional workload. Pick a storage model or index from the actual access pattern, then test the awkward case: a collision, a broad scan or two concurrent writers.