Misunderstanding on Composite Key for Cassandra

2020-02-26 10:48发布

问题:

I've to test different datamodels for Cassandra. I'm thinking about to use a composite key made by key1:key2 for the row key. With this configuration on Cassandra, for example, I can query to have all the rows having a specific key1 value and any key2 value but It's impossible otherwise (obtain all the rows having a specific key2's value and any key1). Is it right?

thanks in advance

Cesare

回答1:

If you use Order Preserving Partitioning (OPP), then yes, the keys will be stored sorted, and then you can get slices over a range of keys e.g. A:A to A:Z -- but not necessarily any:A to any:Z.

But, OPP is not guaranteed to evenly distribute the keys across the nodes and you could end up with "hot spots" of too many or too few keys. You probably want to use Random Partitioning (RP) which distributes the keys by storing by hash across all nodes.

However, since Columns are stored sorted, using Composite values can be pretty powerful for accessing ranges of data.

See this question for details on querying Composite columns using Hector .

If necessary, the column names could then be used as keys to do Multiget queries for additional lookups.



回答2:

I hope these articles help you :)

http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

http://www.datastax.com/docs/0.7/data_model/cfs_as_indexes

http://www.anuff.com/2011/02/indexing-in-cassandra.html

Also checkout this question

Storing a list of values in Cassandra