Hector
Hector是基于Thrift Java API包装的一个Java客户端,提供一个更加高级的一个抽象。
程序范例
import static me.prettyprint.cassandra.utils.StringUtils.bytes;
import static me.prettyprint.cassandra.utils.StringUtils.string;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnPath;
import me.prettyprint.cassandra.service.CassandraClient;
import me.prettyprint.cassandra.service.CassandraClientPool;
import me.prettyprint.cassandra.service.CassandraClientPoolFactory;
import me.prettyprint.cassandra.service.Keyspace;
import me.prettyprint.cassandra.service.PoolExhaustedException;
public class ExampleClient {
public static void main(String[] args) throws IllegalStateException, PoolExhaustedException,Exception {
//setting pool
CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();
//setting client
CassandraClient client = pool.borrowClient("localhost", 9160);
//keyspaceName and columnFamily
String keyspaceName = "Keyspace1";
String columnFamily = "Standard1";
//key Name
String key = "逖靖寒的世界";
//这里可以设置均衡
// A load balanced version would look like this:
// CassandraClient client = pool.borrowClient(new String[] {"cas1:9160", "cas2:9160", "cas3:9160"});
try {
//get keySpace
Keyspace keyspace = client.getKeyspace(keyspaceName);
//create columnPath
ColumnPath columnPath = new ColumnPath(columnFamily);
columnPath.setColumn("网址".getBytes("UTF8"));
//insert
keyspace.insert(key, columnPath, bytes("
http://gpcuster.cnblogs.com
")); // read
//get single column
Column col = keyspace.getColumn("逖靖寒的世界", columnPath);
//print name and value
System.out.println("name: " + string(col.getName()));
System.out.println("value: " + string(col.getValue()));
} finally {
// return client to pool. do it in a finally block to make sure it's executed
pool.releaseClient(client);
}
}
}
优点
1 提供连接池。
2 提供错误处理:当操作失败的时候,Hector会根据系统信息(token map)自动连接另一个Cassandra Service。
3 编程接口容易使用。
4 支持JMX。
缺点
1 不支持多线程的环境。
2 keyspace封装过多(数据校验和数据重新封装),如果进行大量的数据操作,这里的消耗需要考虑。
3 错误处理不够人性化:如果所有的Cassandra Service都非常繁忙,那么经过多次操作失败后,最终的结果失败。
总结
Hector已经是一个基本足够使用的Java客户端了,但是还是缺乏一些相关的功能,比如:
1 线程安全。
2 支持自动的多线程查询和插入,提高操作效率。
3 人性化的错误处理机制。
4 避免过多的封装。
分享到:
相关推荐
Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
官方离线安装包,亲测可用
Scylladb或Cassandra 客户端工具 DevCenter
Cassandra(apache-cassandra-3.0.25-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
apache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gzapache-cassandra-0.6.1-bin.tar.gz
8. **教学和学习工具**:对于初学者,DevCenter提供了一个学习Cassandra和CQL的理想环境。用户可以即时看到查询结果,理解NoSQL数据库的工作方式。 通过使用DevCenter,开发人员和管理员能够更加高效地管理他们的...
4. **CQL**:Cassandra Query Language,Cassandra的数据操作语言,类似于SQL,但更适合NoSQL环境。 5. **数据模型**:理解Cassandra的数据模型,如超级列(Super Column)、列族和行键(Row Key),对于有效使用...
官方离线安装包,亲测可用
cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift cassandra-thrift
官方离线安装包,亲测可用
Cassandra(apache-cassandra-4.0.1-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...
cassandra-driver-core,A driver for Apache Cassandra 1.2+ that works exclusively with the Cassandra Query Language version 3 (CQL3) and Cassandra's binary protocol.
**Python库cassandra_driver**是Python编程语言中用于与Cassandra数据库交互的客户端驱动程序。Cassandra是一款分布式NoSQL数据库系统,广泛应用于大数据处理、实时分析和大规模存储场景。cassandra_driver库允许...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
jdbc 驱动,用于连接 cassandra http://www.cnblogs.com/piaolingzxh/p/4198228.html
3. **可调整的压缩策略**:Cassandra 1.0引入了一种创新的压缩算法,能够针对每一列独立进行压缩,这不仅增强了数据的压缩效果,还提供了更大的灵活性。 4. **Windows系统服务支持**:现在,Cassandra可以作为...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
【Cassandra一致性详解】 在2019云栖大会上,郭泽晖(索月)对Cassandra的一致性进行了深入的解析。Cassandra是一个分布式NoSQL数据库系统,它遵循CAP定理,即在分布式系统中,无法同时保证一致性(Consistency)、...
官方离线安装包,亲测可用
官方离线安装包,亲测可用