Cassandra数据存储

gyunling 2011-09-15

版本:0.7.6

客户端:cassandra自带的thrift客户端

标准column的查询、删除、新增:

写道
TTransport tr = new TFramedTransport(new TSocket("localhost",9160));

TProtocolproto=newTBinaryProtocol(tr);

Cassandra.Clientclient=newCassandra.Client(proto);

tr.open();

client.set_keyspace("Keyspace1");

ColumnPathpath=newColumnPath();

longtimestamp=System.currentTimeMillis();

//插入数据

Columncolumn=newColumn();

column.setName("age".getBytes());

column.setValue("19".getBytes());

column.setTimestamp(timestamp);

client.insert(ByteBuffer.wrap("user".getBytes()),newColumnParent("standard1"),column,ConsistencyLevel.ONE);

//读取数据

path=newColumnPath();

path.setColumn_family("standard1");

path.setColumn("age".getBytes("UTF-8"));

ColumnOrSuperColumncc=client.get(ByteBuffer.wrap("user".getBytes()),path,ConsistencyLevel.ONE);

Columnc=cc.getColumn();

Stringv=newString(c.getValue(),"UTF-8");

System.out.println("Value--------"+v);

//删除数据

//path=newColumnPath();

//path.setColumn_family("standard1");

//path.setColumn("age".getBytes("UTF-8"));

//client.remove(ByteBuffer.wrap("user".getBytes()),path,timestamp,ConsistencyLevel.ONE);

//关闭数据库连接

tr.close();

 SuperColumn新增和查询:

/**
	 * 插入SuperColumn
	 * 
	 * @throws Exception
	 */
	public void insertSuperColumn() throws Exception {
		TTransport tr = new TFramedTransport(new TSocket("localhost",9160));
		 TProtocol proto = new TBinaryProtocol(tr); 
		 Cassandra.Client client = new Cassandra.Client(proto); 
		 tr.open(); 
		 
		client.set_keyspace("Keyspace1");
		
		ColumnParent cp1 = new ColumnParent();
		cp1.setColumn_family("Super2");
		cp1.setSuper_column("address".getBytes());
		
		Column city = new Column();
		city.setName("province".getBytes());
		city.setValue("guangdong".getBytes());
		city.setTimestamp(time);
		
		client.insert(ByteBuffer.wrap("user2".getBytes()), cp1, city, ConsistencyLevel.ONE);
	}
	

	/**
	 * 读取SuperColumn
	 * 
	 * @throws Exception
	 */
	public void getSuper() throws Exception {
		TTransport tr = new TFramedTransport(new TSocket("localhost",9160));
		 TProtocol proto = new TBinaryProtocol(tr); 
		 Cassandra.Client client = new Cassandra.Client(proto); 
		 tr.open(); 
		 
		client.set_keyspace("Keyspace1");
		
		ColumnPath path = new ColumnPath("Super2");
		
		path.setSuper_column("address".getBytes());
		path.setColumn("province".getBytes());
		ColumnOrSuperColumn s = client.get(ByteBuffer.wrap("user5".getBytes()), path, ConsistencyLevel.ONE);
		
		System.out.println(new String(s.column.getValue(), "utf8"));
	}

 困惑:如果superColumn下的Column是一个SuperColumn怎么插入数据?没有找到相关的api。

相关推荐