中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

Apache Cassandra入門

發(fā)布于:2021-01-07 16:17:58

0

199

0

Apache Cassandra 教程 入門

Apache Cassandra是提供高可用性和大規(guī)模可伸縮性的數(shù)據(jù)庫。在本教程中,DataStax的云架構(gòu)師團(tuán)隊(duì)負(fù)責(zé)人Scott Hendrickson向您展示了如何開始使用Apache Cassandra。了解如何為視頻推薦應(yīng)用程序創(chuàng)建服務(wù),以此作為開始學(xué)習(xí)更多有關(guān)Apache Cassandra工作原理的起點(diǎn)。

當(dāng)今的應(yīng)用程序會(huì)創(chuàng)建大量數(shù)據(jù),如果您想從這些數(shù)據(jù)中獲取價(jià)值,則必須以正確的方式捕獲它。如果您的應(yīng)用程序必須擴(kuò)大規(guī)模以服務(wù)于成千上萬的客戶,或者如果您打算從設(shè)備中獲取大量數(shù)據(jù)寫入,那么您就必須能夠輕松擴(kuò)大規(guī)模。如果您正在尋找具有大規(guī)模可伸縮性和高可用性的數(shù)據(jù)庫,則需要考慮Apache Cassandra?。 

首先,Apache Cassandra具有完全分布式的架構(gòu),這使得隨著時(shí)間的推移擴(kuò)展非常容易-您只需添加更多節(jié)點(diǎn)即可。其次,借助Cassandra,您的數(shù)據(jù)可以輕松地在數(shù)據(jù)中心和云平臺(tái)之間復(fù)制,這意味著您無需擔(dān)心停機(jī)時(shí)間或因意外情況而導(dǎo)致的維護(hù)。這也意味著可以同時(shí)跨多個(gè)云服務(wù)運(yùn)行,并且避免被鎖定在特定的云服務(wù)中。這可以使您保持控制。

最后,選擇Apache Cassandra意味著您會(huì)很出色。Cassandra目前在CERN,Comcast,eBay,GitHub,GoDaddy,Hulu,Instagram,Intuit,Netflix,Reddit,The Weather Channel和運(yùn)行活躍全局?jǐn)?shù)據(jù)集的許多公司中使用。

Cassandra入門

啟動(dòng)并運(yùn)行Apache Cassandra涉及創(chuàng)建Cassandra實(shí)例或節(jié)點(diǎn)的集群。然后,您可以使用Apache Cassandra?的任何驅(qū)動(dòng)程序連接到群集,這些驅(qū)動(dòng)程序以Java,Python,C ++,C#,Node.js,Ruby和PHP等不同語言提供。

下面,我們將使用用于Apache Cassandra?的DataStax Java驅(qū)動(dòng)程序3.7.1版創(chuàng)建一個(gè)簡單的Java應(yīng)用程序。對(duì)Java驅(qū)動(dòng)程序(4.0+)的較新版本進(jìn)行了API更改。請(qǐng)確保為此示例使用適當(dāng)?shù)陌姹尽?/span>

在本教程中,我們將為視頻推薦應(yīng)用程序創(chuàng)建一個(gè)服務(wù),該服務(wù)將獲取數(shù)據(jù)并使用它。這個(gè)名為KillrVideo的應(yīng)用程序應(yīng)該是了解更多有關(guān)Cassandra的工作原理以及如何在自己的應(yīng)用程序中應(yīng)用它的有用的起點(diǎn)。 

它具有三層體系結(jié)構(gòu),這對(duì)于云規(guī)模的應(yīng)用程序是常見的,具有Web應(yīng)用程序,服務(wù)層和數(shù)據(jù)庫層。在完整的應(yīng)用程序中,它將使用具有多個(gè)無狀態(tài)服務(wù)的微服務(wù)方法。

先決條件:

  • 將您的部署設(shè)置為對(duì)節(jié)點(diǎn)使用公共IP。

  • 從Github下載驅(qū)動(dòng)程序并添加到CLASSPATH,或者可以將以下依賴項(xiàng)添加到Maven POM文件:

<dependencies>

<dependency>

<groupId>com.datastax.cassandra</groupId>

<artifactId>cassandra-driver-core</artifactId>

<version>3.7.1</version>

<dependency>

<dependencies>

1.創(chuàng)建一個(gè)群集對(duì)象

Cluster cluster = Cluster.builder().addContactPoint("40.83.177.33").build();
  • Cluster對(duì)象是連接到Cassandra集群的起點(diǎn),并且是使用Cluster.builder()幫助器類創(chuàng)建的。

  • 用部署中節(jié)點(diǎn)的公共IP替換addContactPoint()方法中顯示的IP地址。

2.創(chuàng)建一個(gè)會(huì)話對(duì)象

Session session = cluster.connect();
  • 這是驅(qū)動(dòng)程序連接到群集節(jié)點(diǎn)的時(shí)間。

3.使用Session對(duì)象執(zhí)行語句

session.execute("CREATE KEYSPACE IF NOT EXISTS killrvideo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};"); session.execute("CREATE TABLE IF NOT EXISTS killrvideo.videos (name TEXT, description TEXT, PRIMARY KEY(name))"); session.execute("INSERT INTO killrvideo.videos (name, description) VALUES (?, ?);", "Avengers: Endgame", "No spoilers"); ResultSet rs = session.execute("SELECT * FROM killrvideo.videos WHERE name = ?;", "Avengers: Endgame"); for (Row row : rs) { System.out.println("Name:" + row.getString("name")); System.out.println("Description: " + row.getString("description")); }
  • execute()方法用于運(yùn)行CQL語句。

  • 前兩個(gè)語句創(chuàng)建了我們的數(shù)據(jù)模型,它是一個(gè)鍵空間killrvideo和一個(gè)表格videos。通常,您將需要在應(yīng)用程序外部創(chuàng)建數(shù)據(jù)模型,但是我們在此處這樣做是為了最小化此示例的步驟。

  • 第三條語句在新創(chuàng)建的表中插入一行。

  • 最后一條語句運(yùn)行查詢,該查詢返回ResultSet對(duì)象。

  • ResultSet是一個(gè)Iterable對(duì)象,可以使用for循環(huán)進(jìn)行處理以遍歷查詢結(jié)果中的每一行。

完整代碼

import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; public class Application {    public static void main(String[] args) {        Cluster cluster = Cluster.builder().addContactPoint("40.83.177.33").build();        Session session = cluster.connect();        session.execute("CREATE KEYSPACE IF NOT EXISTS killrvideo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};");        session.execute("CREATE TABLE IF NOT EXISTS killrvideo.videos (name TEXT, description TEXT, PRIMARY KEY(name))");        session.execute("INSERT INTO killrvideo.videos (name, description) VALUES (?, ?);", "Avengers: Endgame", "No spoilers");        ResultSet rs = session.execute("SELECT * FROM killrvideo.videos WHERE name = ?;", "Avengers: Endgame");        for (Row row : rs) {            System.out.println("Name:" + row.getString("name"));            System.out.println("Description: " + row.getString("description"));        }        cluster.close();    } }

運(yùn)行應(yīng)用程序

{xunruicms_img_title}