日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Apache Cassandra和Java入门(第二部分)

發布時間:2023/12/3 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Cassandra和Java入门(第二部分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要求

要遵循本教程,您應該已經有一個正在運行的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");

現在您已連接到“演示”鍵空間,現在將用戶插入“用戶”表中。 這正是我們之前在第一部分中所做的,但是這次我們的做法有所不同。 使用準備好的語句更加安全,這是將數據移入或移出數據庫的最有效方式。 集群只需要對準備好的語句進行一次解析,然后將值綁定到變量,然后我們執行綁定的語句以從集群讀取/寫入數據。

// 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

總結

以上是生活随笔為你收集整理的Apache Cassandra和Java入门(第二部分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。