Cassandra Hector分布式数据库入门到高效实用实例 - doliu6的专栏 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/06/13 08:53:52

Cassandra+Hector分布式数据库入门到高效实用实例收藏

    Cassandra是一个由Dynamo演化而来借鉴BigTable的分布式数据库(严格讲是提供分布式存储服务)。

    选择的理由:1、大数据量Key/Value存储,2、分布式存取,不容许应用因为存储导致故障,3、替代管理复杂的HBASE等

                      或者分布式环境下替代MySQL。(很多案例,可以搜一搜)

    运行架构上:Cassandra由平等的N个节点构成,每个节点之间通过“闲话”(Gossip,比如在一次心跳时随机选择一个该节点所知道的邻居发送心跳消息等)协议通信。平等的架构最终形成简单的管理和配置。

    配置和管理:基本上需要很少的配置(最少配置网络端口、监听地址、一个邻居的地址就可以建成一个相当大分布式存储),启动和关闭管理非常简单。

    编程:本来很简单的接口,但缺乏很多控制,但有Hector作为上层编程抽象,事情正变得容易。

    首先,有很多好文章了,所以请先百度或者谷歌,推荐两篇:

    总体说明: http://hi.baidu.com/lzpsky/blog/item/77b18830155f8b92a8018e75.html

    配置运行:http://www.cnblogs.com/gpcuster/archive/2010/03/25/1695490.html

    如果有问题,Google/Baidu吧,现在又万能的钥匙了:)

    对了,Cassandra有一个特性,写快读慢,呵呵。推荐一个地儿:

    http://database.51cto.com/art/201006/203344.htm

   

    下面是一个编程实例,使用Hector:

   view plaincopy to clipboardprint?

  1. CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();  
  2. client =  pool.borrowClient(new String[]{"192.168.1.128:9160","localhost:9160"});  
  3. try {  
  4.     Keyspace keyspace = client.getKeyspace("Keyspace1");  
  5.     //插入数据  
  6.     ColumnPath columnPath = new ColumnPath("Standard1");  
  7.     columnPath.setColumn(bytes("ColumnName_can_Ignore"));  
  8.     keyspace.insert("Key", columnPath, bytes("Value")); //插入  
  9.     //查询  
  10.     Column col = keyspace.getColumn("Key", columnPath);  
  11.     System.out.println("Read from cassandra: " + string(col.getValue())); //"Value"  
  12. }  
  13. finally {  
  14.     pool.releaseClient(client);  
  15. }  

Hector提供了连接池、自动切换到其他Cassandra主机等机制(如代码中连接localhost:9160不行时可能去连接192.168.1.128:9160,但这不能完全保证,可以看看它的打印信息就知道它如何工作的了)

其实Cassandra和Hector的代码量不是太大,所以从源代码去分析问题和学习还是不错的。

抛砖引玉之入门到此:)以上的代码已经能满足一般的key/value存储了,当然Cassandra并不仅仅如此。