共用方式為


教學課程:使用 Java 應用程式,在 Azure Cosmos DB 中建立 API for Cassandra 帳戶來儲存金鑰/值資料

適用於: Cassandra

身為開發人員,您可能有使用索引鍵/值組的應用程式。 您可以使用 Azure Cosmos DB 中的 API for Cassandra 帳戶來儲存金鑰/值資料。 此教學課程描述如何使用 Java 應用程式,在 Azure Cosmos DB 中建立 API for Cassandra 帳戶、新增資料庫 (也稱為 Keyspace),以及新增資料表。 Java 應用程式會使用 Java 驅動程式來建立使用者資料庫,其中包含使用者識別碼、使用者名稱、使用者所在城市等詳細資料。

本教學課程涵蓋下列工作:

  • 建立 Cassandra 資料庫帳戶
  • 取得帳戶連接字串
  • 建立 Maven 專案和相依性
  • 新增資料庫和資料表
  • 執行應用程式

必要條件

建立資料庫帳戶

  1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]

  2. 在 [新增] 頁面上,搜尋並選取 [Azure Cosmos DB]

  3. [Azure Cosmos DB] 頁面上,選取 [建立]

  4. 在 [API] 頁面上的 [Cassandra] 區段下面,選取 [建立]

    API 會決定要建立的帳戶類型。 Azure Cosmos DB 提供五個 API:NoSQL (適用於文件資料庫)、Gremlin (適用於圖形資料庫)、MongoDB (適用於文件資料庫)、Azure 資料表與 Cassandra。 您必須為每個 API 建立個別帳戶。

    選取 [Cassandra],因為在此快速入門中,您會建立可搭配 API for Cassandra 使用的資料表。

    深入了解適用於 Cassandra 的 API

  5. 在 [建立 Azure Cosmos DB 帳戶] 頁面中,輸入新 Azure Cosmos DB 帳戶的基本設定。

    設定 Description
    訂用帳戶 您的訂用帳戶 選取您要用於此 Azure Cosmos DB 帳戶的 Azure 訂用帳戶。
    資源群組 新建

    然後,輸入與帳戶名稱相同的名稱
    選取 [新建] 然後為您的帳戶輸入新的資源群組名稱。 為求簡化,請使用與 Azure Cosmos DB 帳戶名稱相同的名稱。
    客戶名稱 輸入唯一名稱 輸入唯一名稱來識別您的 Azure Cosmos DB 帳戶。 您的帳戶 URI 將是 cassandra.cosmos.azure.com,並附加至您的唯一帳戶名稱。

    帳戶名稱只能使用小寫字母、數字和連字號 (-),且長度必須介於 3 到 31 個字元之間。
    Location 最接近使用者的區域 選取用來裝載 Azure Cosmos DB 帳戶的地理位置。 使用最接近使用者的位置,讓他們能以最快速度存取資料。
    容量模式 佈建輸送量或無伺服器 選取 [佈建的輸送量],以佈建的輸送量模式建立帳戶。 選取 [無伺服器],以無伺服器模式建立帳戶。
    申請 Azure Cosmos DB 免費階層折扣 適用不適用 使用 Azure Cosmos DB 免費層,您將可在帳戶中免費取得前 1000 RU/秒和 25 GB 的儲存體。 深入了解免費層
    限制帳戶總輸送量 選取此選項會限制帳戶的輸送量 如果您想要將帳戶的總輸送量限制為特定值,這會很有用。

    注意

    每個 Azure 訂用帳戶最多可以有一個免費層的 Azure Cosmos DB 帳戶,而且必須在建立帳戶時選擇加入。 如果您看不到套用免費層折扣的選項,這表示訂用帳戶中的另一個帳戶已透過免費層啟用。

    適用於 Apache Cassandra 的 Azure Cosmos DB 新帳戶頁面

  6. 在 [全域散發] 索引標籤中,設定下列詳細資料。 您可以保留預設值,以供本快速入門的目的之用:

    設定 Description
    異地備援 停用 藉由將您的區域與配對區域進行配對,在您的帳戶上啟用或停用全域散發。 您可以在稍後將更多區域新增至您的帳戶。
    多重區域寫入 停用 多重區域寫入功能可讓您利用在全球為資料庫及容器佈建的輸送量。
    可用性區域 停用 可用性區域是 Azure 區域內的隔離位置。 每個區域都是由一或多個資料中心所組成,配備了獨立的電力、冷卻系統及網路系統。

    注意

    如果您選取 [無伺服器] 作為容量模式,則無法使用下列選項:

    • 套用免費層折扣
    • 異地備援
    • 多重區域寫入
  7. (選擇性) 您可以在下列索引標籤中設定其他詳細資料:

    • 網路 - 設定從虛擬網路存取
    • 備份原則 - 設定定期連續備份原則。
    • 加密 - 使用服務管理的金鑰或客戶自控金鑰
    • 標籤 - 標籤為成對的名稱和值,可讓您將相同的標籤套用至多個資源與資源群組,以便為資源分類及檢視合併的帳單。
  8. 選取 [檢閱 + 建立]。

  9. 檢閱帳戶設定,然後選取 [建立]。 建立帳戶需要幾分鐘的時間。 請等候入口網站頁面顯示 [您的部署已完成]

    Azure 入口網站的 [通知] 窗格

  10. 選取 [前往資源] 前往 Azure Cosmos DB 帳戶頁面。

取得您帳戶的連線詳細資料

從 Azure 入口網站取得連接字串資訊,並將其複製到 Java 設定檔。 連接字串可讓您的應用程式與託管資料庫進行通訊。

  1. Azure 入口網站中,移至您的 Azure Cosmos DB 帳戶。

  2. 開啟 [連接字串] 窗格。

  3. 複製接觸點連接埠使用者名稱以及主要密碼的值,以用於後續步驟。

建立專案和相依性

您在本文中使用的 Java 範例專案會裝載在 GitHub 中。 您可以執行本文件中的步驟,或從 azure-cosmos-db-cassandra-java-getting-started 存放庫下載範例。

下載檔案後,請更新 java-examples\src\main\resources\config.properties 檔案內的連接字串資訊,並加以執行。

cassandra_host=<FILLME_with_CONTACT POINT> 
cassandra_port = 10350 
cassandra_username=<FILLME_with_USERNAME> 
cassandra_password=<FILLME_with_PRIMARY PASSWORD> 

使用下列步驟從頭建置範例:

  1. 從終端機或命令提示字元中,建立名為 Cassandra-demo 的新 Maven 專案。

    mvn archetype:generate -DgroupId=com.azure.cosmosdb.cassandra -DartifactId=cassandra-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 
    
  2. 找到 cassandra-demo 資料夾。 使用文字編輯器,開啟產生的 pom.xml 檔案。

    新增 Cassandra 相依性,並建置專案所需的外掛程式,如 pom.xml 檔案中所示。

  3. cassandra-demo\src\main 資料夾下方,建立名為 resources 的新資料夾。 在資源資料夾下方,新增 config.properties 和 log4j.properties 檔案:

    • Config.properties 檔案會儲存 API for Cassandra 帳戶的連線端點和金鑰值。

    • Log4j.properties 檔案會定義與 API for Cassandra 互動所需的記錄層級。

  4. 瀏覽至 src/main/java/com/azure/cosmosdb/cassandra/ 資料夾。 在 Cassandra 資料夾內,建立名為 utils 的另一個資料夾。 新的資料夾會儲存連線至 API for Cassandra 帳戶所需的公用程式類別。

    新增 CassandraUtils 類別來建立叢集,以及開啟和關閉 Cassandra 工作階段。 叢集會連線至 Azure Cosmos DB 中的 API for Cassandra 帳戶,並傳回要存取的工作階段。 使用 Configurations 類別來讀取 config.properties 檔案中的連接字串資訊。

  5. Java 範例會以使用者的資訊 (例如使用者名稱、使用者識別碼、使用者所在城市) 來建立資料庫。 您需要定義 get 和 set 方法,以在main 函式中存取使用者詳細資料。

    使用 get 和 set 方法,在 src/main/java/com/azure/cosmosdb/cassandra/ 資料下方建立 User.java 類別。

新增資料庫和資料表

本節說明如何使用 CQL 來新增資料庫 (Keyspace) 和資料表。

  1. src\main\java\com\azure\cosmosdb\cassandra 資料夾下方,建立名為 repository 的新資料夾。

  2. 建立 UserRepository Java 類別,並將下列程式碼新增至該類別:

    package com.azure.cosmosdb.cassandra.repository; 
    import java.util.List; 
    import com.datastax.driver.core.BoundStatement; 
    import com.datastax.driver.core.PreparedStatement; 
    import com.datastax.driver.core.Row; 
    import com.datastax.driver.core.Session; 
    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    
    /** 
     * Create a Cassandra session 
     */ 
    public class UserRepository { 
    
        private static final Logger LOGGER = LoggerFactory.getLogger(UserRepository.class); 
        private Session session; 
        public UserRepository(Session session) { 
            this.session = session; 
        } 
    
        /** 
        * Create keyspace uprofile in cassandra DB 
         */ 
    
        public void createKeyspace() { 
             final String query = "CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 }"; 
            session.execute(query); 
            LOGGER.info("Created keyspace 'uprofile'"); 
        } 
    
        /** 
         * Create user table in cassandra DB 
         */ 
    
        public void createTable() { 
            final String query = "CREATE TABLE IF NOT EXISTS uprofile.user (user_id int PRIMARY KEY, user_name text, user_bcity text)"; 
            session.execute(query); 
            LOGGER.info("Created table 'user'"); 
        } 
    } 
    
  3. 找到 src\main\java\com\azure\cosmosdb\cassandra 資料夾並建立名為 examples 的新子資料夾。

  4. 建立 UserProfile Java 類別。 此類別包含會呼叫您先前所定義 createKeyspace 和 createTable 方法的主要方法:

    package com.azure.cosmosdb.cassandra.examples; 
    import java.io.IOException; 
    import com.azure.cosmosdb.cassandra.repository.UserRepository; 
    import com.azure.cosmosdb.cassandra.util.CassandraUtils; 
    import com.datastax.driver.core.PreparedStatement; 
    import com.datastax.driver.core.Session; 
    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    
    /** 
     * Example class which will demonstrate following operations on Cassandra Database on CosmosDB 
     * - Create Keyspace 
     * - Create Table 
     * - Insert Rows 
     * - Select all data from a table 
     * - Select a row from a table 
     */ 
    
    public class UserProfile { 
    
        private static final Logger LOGGER = LoggerFactory.getLogger(UserProfile.class); 
        public static void main(String[] s) throws Exception { 
            CassandraUtils utils = new CassandraUtils(); 
            Session cassandraSession = utils.getSession(); 
    
            try { 
                UserRepository repository = new UserRepository(cassandraSession); 
                //Create keyspace in cassandra database 
                repository.createKeyspace(); 
                //Create table in cassandra database 
                repository.createTable(); 
    
            } finally { 
                utils.close(); 
                LOGGER.info("Please delete your table after verifying the presence of the data in portal or from CQL"); 
            } 
        } 
    } 
    

執行應用程式

  1. 開啟命令提示字元或終端機視窗。 貼上下列程式碼區塊。

    此程式碼會將目錄 (cd) 變更為您建立專案的資料夾路徑。 然後,會執行 mvn clean install 命令來在目標資料夾內產生 cosmosdb-cassandra-examples.jar 檔案。 最後,會執行 Java 應用程式。

    cd cassandra-demo
    
    mvn clean install 
    
    java -cp target/cosmosdb-cassandra-examples.jar com.azure.cosmosdb.cassandra.examples.UserProfile 
    

    終端機視窗會顯示 keyspace 和資料表已建立的通知。

  2. 現在,在 Azure 入口網站中開啟 [資料總管],確認已建立 Keyspace 和資料表。

下一步

在此教學課程中,您已了解如何使用 Java 應用程式,在 Azure Cosmos DB 中建立 API for Cassandra 帳戶、資料庫及資料表。 您現在可以繼續進行下一篇文章: