共用方式為


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

適用於: 卡珊德拉

身為開發人員,您可能有使用索引鍵/值組的應用程式。 您可以使用 Azure Cosmos DB 中 Cassandra 帳戶的 API 來儲存金鑰/值數據。 本教學課程說明如何使用 Java 應用程式在 Azure Cosmos DB 中建立 Cassandra 帳戶的 API、新增資料庫(也稱為 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 ,因為在本教學課程中,您會建立可與 Cassandra API 搭配運作的數據表。

    若要深入瞭解 Cassandra 的 API,請參閱 什麼是適用於 Apache Cassandra 的 Azure Cosmos DB?

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

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

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

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

    附註

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

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

  6. 全域分配 索引標籤上,設定下列詳細資料。 使用本教學課程的預設值。

    設定 說明
    異地備援 停用 藉由將您的區域與配對區域進行配對,在您的帳戶上啟用或停用全域散發。 您可以在稍後將更多區域新增至您的帳戶。
    多重區域寫入 停用 有了多區域寫入功能,您可以利用全球資料庫和容器的佈建輸送量。
    可用性區域 停用 可用性區域是 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 的新資料夾。 在資料夾底 resources 下,新增 config.propertieslog4j.properties 檔案:

    • Config.properties 檔案會儲存 API for Cassandra 帳戶的連線端點和金鑰值。
    • Log4j.properties 檔案會定義與 API for Cassandra 互動所需的記錄層級。
  4. 瀏覽至 src/main/java/com/azure/cosmosdb/cassandra/ 資料夾。 在資料夾內 cassandra ,建立另一個名為 utils的資料夾。 新的資料夾會儲存連線到 Cassandra 帳戶 API 所需的公用程式類別。

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

  5. Java 範例會建立具有使用者資訊的資料庫,例如使用者名稱、使用者標識碼和使用者城市。 您必須定義 getset 方法來存取 main 函式中的使用者詳細數據。

    資料夾中使用 src/main/java/com/azure/cosmosdb/cassandra/get 方法來建立set 類別。

新增資料庫和資料表

本節描述如何使用 Cassandra 查詢語言 (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 類別。 這個類別包含呼叫您稍早定義之 createKeyspacecreateTable 方法的主要方法。

    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 入口網站中,開啟 Data Explorer 以確認已建立 keyspace 和數據表。

後續步驟

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