我正在阅读Cassandra- The definitive guide by E.Hewitt
。我在第四章,作者描述了示例酒店应用程序的代码。本书中的图片在此提供以供参考。
这是插入HotelByCityrowkeys
的方法column Family
private void insertByCityIndex(String rowKey, String hotelName) throws Exception {
Clock clock = new Clock(System.nanoTime());
Column nameCol = new Column(hotelName.getBytes(UTF8), new byte[0], clock);
ColumnOrSuperColumn nameCosc = new ColumnOrSuperColumn();
nameCosc.column = nameCol;
Mutation nameMut = new Mutation();
nameMut.column_or_supercolumn = nameCosc;
//set up the batch
Map<String, Map<String, List<Mutation>>> mutationMap =
new HashMap<String, Map<String, List<Mutation>>>();
Map<String, List<Mutation>> muts =
new HashMap<String, List<Mutation>>();
List<Mutation> cols = new ArrayList<Mutation>();
cols.add(nameMut);
String columnFamily = "HotelByCity";
muts.put(columnFamily, cols);
//outer map key is a row key
//inner map key is the column family name
mutationMap.put(rowKey, muts);
//create representation of the column
ColumnPath cp = new ColumnPath(columnFamily);
cp.setColumn(hotelName.getBytes(UTF8));
ColumnParent parent = new ColumnParent(columnFamily);
//here, the column name IS the value (there's no value)
Column col = new Column(hotelName.getBytes(UTF8), new byte[0], clock);
client.insert(rowKey.getBytes(), parent, col, CL);
LOG.debug("Inserted HotelByCity index for " + hotelName); } //end inserting ByCity index
我很难遵循代码。尤其是为什么要创建这么多容器(地图)。Mutation
对象等的目的是什么?行键到底是如何插入的?
如果你能解释一下代码的每一步发生了什么,那就太好了。这本书没有解释,我无法了解这是如何完成的。
PS:我是一名Java开发人员。所以我熟悉什么地图等。但我只是不明白为什么地图被塞进另一个地图和其他细节
谢谢