JAVA with Cassandra
maven项目,在pom.xml里加入依赖。不是的话下载相应的jar包放到lib目录下。
这里驱动包的版本要和你cassandra的大版本一致。 <dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0</version>
</dependency>
新建一个类CassandraTest。
连接cassandra

1 public Cluster cluster;
2
3 public Session session;
4
5 public void connect()
6 {
7 // addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
8 // withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
9 cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
10 .withCredentials("cassandra", "cassandra").build();
11 session = cluster.connect();
12 }

驱动里自带了cassandra连接池的配置,将上面的稍作修改

1 public Cluster cluster;
2
3 public Session session;
4
5 public void connect()
6 {
7 PoolingOptions poolingOptions = new PoolingOptions();
8 // 每个连接的最大请求数 2.0的驱动好像没有这个方法
9 poolingOptions.setMaxRequestsPerConnection(HostDistance.LOCAL, 32);
10 // 表示和集群里的机器至少有2个连接 最多有4个连接
11 poolingOptions.setCoreConnectionsPerHost(HostDistance.LOCAL, 2).setMaxConnectionsPerHost(HostDistance.LOCAL, 4)
12 .setCoreConnectionsPerHost(HostDistance.REMOTE, 2).setMaxConnectionsPerHost(HostDistance.REMOTE, 4);
13
14 // addContactPoints:cassandra节点ip withPort:cassandra节点端口 默认9042
15 // withCredentials:cassandra用户名密码 如果cassandra.yaml里authenticator:AllowAllAuthenticator 可以不用配置
16 cluster = Cluster.builder().addContactPoints("192.168.3.89").withPort(9042)
17 .withCredentials("cassandra", "cassandra").withPoolingOptions(poolingOptions).build();
18 // 建立连接
19 // session = cluster.connect("test");连接已存在的键空间
20 session = cluster.connect();
21
22 }

创建键空间和表(这2个最好在搭建cassandra的时候完成)

1 /**
2 * 创建键空间
3 */
4 public void createKeyspace()
5 {
6 // 单数据中心 复制策略 :1
7 String cql = "CREATE KEYSPACE if not exists mydb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}";
8 session.execute(cql);
9 }
10
11 /**
12 * 创建表
13 */
14 public void createTable()
15 {
16 // a,b为复合主键 a:分区键,b:集群键
17 String cql = "CREATE TABLE if not exists mydb.test (a text,b int,c text,d int,PRIMARY KEY (a, b))";
18 session.execute(cql);
19 }

对test表的CURD操作

1 /**
2 * 插入
3 */
4 public void insert()
5 {
6 String cql = "INSERT INTO mydb.test (a , b , c , d ) VALUES ( 'a2',4,'c2',6);";
7 session.execute(cql);
8 }
9
10 /**
11 * 修改
12 */
13 public void update()
14 {
15 // a,b是复合主键 所以条件都要带上,少一个都会报错,而且update不能修改主键的值,这应该和cassandra的存储方式有关
16 String cql = "UPDATE mydb.test SET d = 1234 WHERE a='aa' and b=2;";
17 // 也可以这样 cassandra插入的数据如果主键已经存在,其实就是更新操作
18 String cql2 = "INSERT INTO mydb.test (a,b,d) VALUES ( 'aa',2,1234);";
19 // cql 和 cql2 的执行效果其实是一样的
20 session.execute(cql);
21 }
22
23 /**
24 * 删除
25 */
26 public void delete()
27 {
28 // 删除一条记录里的单个字段 只能删除非主键,且要带上主键条件
29 String cql = "DELETE d FROM mydb.test WHERE a='aa' AND b=2;";
30 // 删除一张表里的一条或多条记录 条件里必须带上分区键
31 String cql2 = "DELETE FROM mydb.test WHERE a='aa';";
32 session.execute(cql);
33 session.execute(cql2);
34 }
35
36 /**
37 * 查询
38 */
39 public void query()
40 {
41 String cql = "SELECT * FROM mydb.test;";
42 String cql2 = "SELECT a,b,c,d FROM mydb.test;";
43
44 ResultSet resultSet = session.execute(cql);
45 System.out.print("这里是字段名:");
46 for (Definition definition : resultSet.getColumnDefinitions())
47 {
48 System.out.print(definition.getName() + " ");
49 }
50 System.out.println();
51 System.out.println(String.format("%s\t%s\t%s\t%s\t\n%s", "a", "b", "c", "d",
52 "--------------------------------------------------------------------------"));
53 for (Row row : resultSet)
54 {
55 System.out.println(String.format("%s\t%d\t%s\t%d\t", row.getString("a"), row.getInt("b"),
56 row.getString("c"), row.getInt("d")));
57 }
58 }

JAVA with Cassandra的更多相关文章
- JAVA操作cassandra数据库
如果是maven项目,在pom.xml里加入依赖.不是的话下载相应的jar包放到lib目录下.这里驱动包的版本要和你cassandra的大版本一致.我这里cassandra的版本是最新的3.9,驱动是 ...
- cassandra 之 jdbc 使用【java、scala】
1.数据库创建 参考接上文cassandra入门 http://www.cnblogs.com/piaolingzxh/p/4197833.html 2.下载jdbc驱动源码,构建jar包 源码下载地 ...
- cassandra高级操作之分页的java实现(有项目具体需求)
接着上篇博客,我们来谈谈java操作cassandra分页,需要注意的是这个分页与我们平时所做的页面分页是不同的,具体有啥不同,大家耐着性子往下看. 上篇博客讲到了cassandra的分页,相信大家会 ...
- 分布式 Key-Value 存储系统:Cassandra 入门
Apache Cassandra 是一套开源分布式 Key-Value 存储系统.它最初由 Facebook 开发,用于储存特别大的数据. Cassandra 不是一个数据库,它是一个混合型的非关系的 ...
- Cassandra issue - "The clustering keys ordering is wrong for @EmbeddedId"
在Java连接Cassandra的情况下, 当使用组合主键时, 默认第一个是Partition Key, 后续的均为Clustering Key. 如果有多个Clustering Key, 在Java ...
- cassandra简单介绍与基本操作
项目中用到了cassandra,用来存储海量数据,且要有高效的查询:本博客就进行简单的介绍和进行一些基本的操作 一.使用场景: 是一款分布式的结构化数据存储方案(NoSql数据库),存储结构比Key- ...
- 从Stage角度看cassandra write
声明 文章发布于CSDN cassandra concurrent 具体实现 cassandra并发技术文中介绍了java的concurrent实现,这里介绍cassandra如何基于java实现ca ...
- NoSql Cassandra
我们为什么要使用NOSQL非关系数据库? 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付web2.0网站,特别 ...
- 转】在Ubuntu中安装Cassandra
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/ 感谢! Posted: Mar 22, 2014 Tags: cas ...
随机推荐
- 标准C程序设计七---33
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 16深入理解C指针之---迷途指针
一.若程序中存在迷途指针,轻则导致程序退出,重则使程序出现重大逻辑错误 1.定义:内存已释放,指针依旧指向原始内存,这种指针就是迷途指针 2.迷途指针和指针别名: 1).指针依旧指向已释放的内存,无法 ...
- window.getComputedStyle——ref
componentDidMount() { const LeftHeight = window.getComputedStyle(this.leftDom).height; console.log(L ...
- mysql数据库引擎(InnoDB MyISAM)
MySQL的默认存储引擎’在5.5版本以前是MYISAM,5.5之后是INNODB. 两种存储引擎的索引结构都是B+树,B+树的详细介绍可参考https://www.cnblogs.com/yange ...
- 作为使用者对qq拼音输入法和搜狗输入法的评价
我还记得在打字方面从一开始XP里面自带的中文输入法到QQ拼音输入法的过度,当时第一次使用qq拼音最大的感受就是这个输入法很智能,给人一种恍然一新的感觉,对于XP系统中自带的拼音输入法,QQ拼音最大的特 ...
- xcopy中文文件名,中文件目录乱码问题
1.保存成bat脚本文件 2.且该bat文件不能使用utf-8格式,使用ANSI即正常
- NMM3DViewer 设计
在FrameworkInterfaces工程的INMM3DServer.cs中定义了 岩石材料结构 BlockMaterial -----> StrBLOCKProperty publ ...
- PS 如何使用抽出滤镜抠人物的头发丝等细节
1.打开图片,复制背景,关闭背景眼睛.单击 滤镜 -抽出, 我们要学会观察图片,先来看下面这张图: 这张图片色彩虽然不算丰富,但也不是纯色背景,甚至有些许的零乱,但人物的主题却被黑色长发包围, 我们只 ...
- odoo 的时差 坑 [updated]
很多人掉进了odoo的时间坑 odoo约定关于日期的数据,存放在数据库时,以 utc0 时区也就是不带时区存放,应用程序读取日期展示日期时,转换成用户的时区展示.用户的时区通过context传递. o ...
- 实现TextView中link的点击效果
朋友们,你们在TextView处理link的时候是不是一直被苦逼的android默认的方式困扰?每次点击link的时候,点击效果是整个textview来响应.非常烂吧?原因就不多赘述了. 那么以下这个 ...