cassandra 入门

要求

要遵循本教程,您应该已经有一个正在运行的Cassandra实例( 一个小型集群会很好 ,但不是必需的),已安装Datastax Java驱动程序( 请参阅第I部分 ),并且已经在这里进行了10分钟的演练: http ://planetcassandra.org/create-a-keyspace-and-table/ 。

试试看

对于本演示,我们将创建一个简单的控制台应用程序,该应用程序几乎与第I部分中的应用程序相同,只是这次我们将探索连接策略,准备好的语句和查询生成器。 打开文本编辑器,并使用“ GettingStartedTwo”类和单个main方法创建一个Java文件。

public class GettingStartedTwo {public static void main(String[] args) {Cluster cluster;Session session;ResultSet results;Row rows;

然后,我们可以连接到集群并创建一个会话实例。

// Connect to the cluster and keyspace "demo"
Cluster cluster = Cluster.builder().addContactPoint("localhost").build();
Session session = cluster.connect("demo");

但是,等等,既然我们正在运行一个群集而不是一个实例,那么我们将在故障转移时采取一些保护措施。 我们可以使用RetryPolicy来做到这一点。retry策略确定当请求超时或节点不可用时要采用的默认行为。 在这种情况下,我们使用DefaultRetryPolicy,它将重试查询之一:

  • 在读取超时时,已回复足够多的副本但未接收到数据。
  • 在写超时时,如果我们在写批处理语句使用的日志时超时。
cluster = Cluster.builder().addContactPoint("192.168.0.30").withRetryPolicy(DefaultRetryPolicy.INSTANCE).build();
session = cluster.connect("demo");

负载平衡策略将确定要运行查询的节点。 由于客户端可以读取或写入任何节点,因此有时效率低下。 如果一个节点收到另一个节点拥有的读取或写入,它将为客户端协调该请求。 我们可以使用负载平衡策略来控制该操作。 TokenAwarePolicy确保请求将转到负责主键指示的数据的节点或副本。 它包装在DCAwareRoundRobinPolicy周围,以确保请求保留在本地数据中心中。 对于我们来说,这是一个不错的选择,尽管目前我们只有一个本地集群,但我们已经在考虑下一步,将其扩展到多数据中心。

cluster = Cluster.builder().addContactPoint("192.168.0.30").withRetryPolicy(DefaultRetryPolicy.INSTANCE).withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy())).build();
session = cluster.connect("demo");

现在您已连接到“演示”键空间,让我们将用户插入“用户”表。 这正是我们先前在第I部分中所做的,但是这次我们的做法有所不同。 使用准备好的语句更加安全,这是将数据移入或移出数据库的最有效方式。 集群只需将准备好的语句解析一次,然后将值绑定到变量,然后我们执行绑定的语句以从集群读取/写入数据。

// Insert one record into the users tablePreparedStatement statement = session.prepare("INSERT INTO users" + "(lastname, age, city, email, firstname)"+ "VALUES (?,?,?,?,?);");BoundStatement boundStatement = new BoundStatement(statement);session.execute(boundStatement.bind("Jones", 35, "Austin","bob@example.com", "Bob"));

使用Java驱动程序,我们可以轻松地撤消用户。 在Java的Apache Cassandra入门入门的第一部分中,我们使用了CQL的字符串表示形式。 现在(以及本教程的其余部分),我们将使用Query Builder进行相同的操作,它更加安全,并且可以避免潜在的CQL注入攻击。

// Use select to get the user we just enteredStatement select = QueryBuilder.select().all().from("demo", "users").where(eq("lastname", "Jones"));results = session.execute(select);for (Row row : results) {System.out.format("%s %d \n", row.getString("firstname"),row.getInt("age"));}

既然是Bob的生日,我们将更新他的年龄。

// Update the same user with a new ageStatement update = QueryBuilder.update("demo", "users").with(QueryBuilder.set("age", 36)).where((QueryBuilder.eq("lastname", "Jones")));session.execute(update);
// Select and show the changeselect = QueryBuilder.select().all().from("demo", "users").where(eq("lastname", "Jones"));results = session.execute(select);for (Row row : results) {System.out.format("%s %d \n", row.getString("firstname"),row.getInt("age"));

现在,让我们从表中删除Bob,并打印出剩余在users表中的所有信息。 您会注意到,鲍勃的信息在删除后不再返回(如果您以前插入过用户,则其他人可能会回来)。

// Delete the user from the users tableStatement delete = QueryBuilder.delete().from("users").where(QueryBuilder.eq("lastname", "Jones"));results = session.execute(delete);// Show that the user is goneselect = QueryBuilder.select().all().from("demo", "users");results = session.execute(select);for (Row row : results) {System.out.format("%s %d %s %s %s\n", row.getString("lastname"),row.getInt("age"), row.getString("city"),row.getString("email"), row.getString("firstname"));}

完成后,请确保连接关闭。

// Clean up the connection by closing it
cluster.close();}
}

CQL与SQL非常相似,在许多情况下,相同的语法将起作用。 如果您具有关系数据库的背景知识,这使得查询数据非常简单。您刚刚设法连接到Cassandra集群并针对实时(本地)数据库执行查询。 希望这证明了使用Java驱动程序使用Cassandra多么容易。 GitHub上提供了此示例的完整控制台应用程序的要点。

翻译自: https://www.javacodegeeks.com/2014/12/getting-started-with-apache-cassandra-and-java-part-ii.html

cassandra 入门

cassandra 入门_Apache Cassandra和Java入门(第二部分)相关推荐

  1. Java0基础学习笔记、心得-day01(Java入门需知、Java入门概述、Java语言相关知识、JDK与JRE关系,常用DOS命令、JDK的下载安装与HelloWorld案例实现与常见问题。)

    一.Java入门需知  * 1.你为什么要学习编程?--兴趣.职业.薪资?  * 2.具体Java开发岗位薪资可以参考-智联招聘 前程无忧 BOSS直聘等APP  * 3.如何进入IT行业:前端工程师 ...

  2. cassandra 入门_Apache Cassandra和Java入门(第一部分)

    cassandra 入门 在此页面上,您将学到足够的知识以开始使用NoSQL Apache Cassandra和Java,包括如何安装,尝试一些基本命令以及下一步要做什么. 要求 要遵循本教程,您应该 ...

  3. 会php学java入门要多久_php8(java入门要多久)

    PHP编程运算,如何得到3 4 7 8 11 12 15 16 19 20这个规律的数字 其实就是. arr = []; for (i = 3; i < 20;) { if (i % 2 != ...

  4. Java入门学习笔记(一)

    Bilibili入门课程 一.Java入门 Java简介 Java是Sun公司1990年开发的一门编程语言 java语言特点:简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态 ...

  5. java入门(七) | 循环结构

    java入门(七) | 循环结构 java入门系列,从零开始!!! 上一期是对方法(method)的基本运用的讲解和方法重载的实练 . 这一期是对循环结构的讲解,除了for循环你还知道几种?他们的使用 ...

  6. Java入门教程笔记(一)

    Java入门教程笔记(一) Java入门教程笔记系列仅适用于有过一定编程基础的人学习java时进行参考和借鉴 不适用于作为入门级教程 以下凡"小黑窗"都是表示"DOS命令 ...

  7. Cassandra Dev 1: Cassandra 入门

    2019独角兽企业重金招聘Python工程师标准>>> 本文转自我的javaEye博客,链接http://kylinsoong.javaeye.com/blog/731208 最近, ...

  8. 尚硅谷Java入门视频教程第二章——Java基本语法

    尚硅谷Java入门视频教程第二章 第一章复习 课后习题 Java语言概述 第2章:Java基本语法 2.1 关键字和保留字 2.2 标识符(Identifier) 2.3 变量 2.3.1 变量基本概 ...

  9. 计算机语言java入门,附源代码

    可以先学C语言之后再去学Java语言吗?并打算学习更高级语言做web开发,那可以考虑直接去学java.C语言是高级语言的基础,也是高级语言入门的最佳选择之一,C语言面向过程写程 毕竟现在JAVA火了太 ...

最新文章

  1. 爱情也许是最忧伤的童话
  2. WEP自动破解工具wesside-ng
  3. 63. Unique Paths II
  4. 计算机网络工程课程设计报告,计算机网络工程课程设计报告.doc
  5. VB与C#代码转换在线工具,亲测好用
  6. 使用 vue-cli 开发多页应用
  7. 开源C# Winform控件库《SunnyUI》强力推荐
  8. 【算法】学习笔记(4):分治思想 归并排序
  9. 使用memcache作为中间缓存区的步骤
  10. #if、#ifdef、#if defined之间的区别【转】
  11. 枚举Enumerations
  12. project不显示里程碑标志_如何在项目管理中使用里程碑
  13. 如何利用线程堆栈定位问题
  14. 植物大战僵尸:游戏中的“修改器【Python】”一定是作弊?善用增加趣味性!
  15. 通州区机器人比赛活动总结_机器人大赛总结报告
  16. C++标准库分析总结(一)——<标准库简介>
  17. Qiyuan - 接小球游戏4.0
  18. 哲学家问题(图形化实现)
  19. 修复树莓派鼠标移动缓慢迟滞问题
  20. Linux与TPM2芯片

热门文章

  1. YbtOJ#20067-[NOIP2020模拟赛B组Day5]糖果分配【dp】
  2. UOJ284 快乐游戏鸡(树上动态规划问题、长链剖分+单调栈)
  3. Cube Or 北方大学生训练赛
  4. 常用公有云接入——亚马逊
  5. art-template入门(七)之压缩页面
  6. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
  7. DML、DDl、DQL实战
  8. 你,下周可否“报上有名”?
  9. layui结合ajax实现下拉菜单联动效果
  10. EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?