Cassandra Map (および Set) タイプが順序を保持しないことは正しいです。
aploetz@cqlsh:stackoverflow2> CREATE TABLE maptest
(key text PRIMARY KEY, values map<text,text>);
aploetz@cqlsh:stackoverflow2> INSERT INTO maptest (key, values)
VALUES ('key1',{'4':'Four','1':'One','2':'Two'});
aploetz@cqlsh:stackoverflow2> SELECT * FROM maptest ;
key | values
------+---------------------------------------
key1 | {'1': 'One', '2': 'Two', '4': 'Four'}
(1 rows)
ただし、リスト型はこれをうまく処理します。
aploetz@cqlsh:stackoverflow2> CREATE TABLE listtest
(key text PRIMARY KEY, values list<text>);
aploetz@cqlsh:stackoverflow2> INSERT INTO listtest (key, values)
VALUES ('key2',['4','1','2']);
aploetz@cqlsh:stackoverflow2> SELECT * FROM listtest ;
key | values
------+-----------------
key2 | ['4', '1', '2']
(1 rows)
おそらく (回避策として) 試してみることができることは、リスト タイプの列をマップと共に含めることです。選択した順序でキーをリストに保存できます。行を読み戻すと、List を (選択した順序で) 反復処理し、List の値を使用して Map から取得するキー/値のペアを決定できます。