Cassandra コネクタ

Select

Cassandra コネクタは、Apache Cassandra 3.1 用 DataStax Java ドライバを実装します。このコネクタは、このドキュメントの「関連情報」セクションにリストされている「Cassandra コネクタリファレンス」の複数の操作を公開します。一部の操作は、DataSense 機能で必要とされる一部のカスタム POJO を入力パラメータとして受け入れます。

Cassandra の操作は、addNewColumn、changeColumnType、createKeyspace、createTable、deleteColumnsValue、deleteRows、dropColumn、dropKeyspace、dropTable、executeCQLQuery、getTableNamesFromKeyspace、renameColumn、select、および update です。

前提条件

このドキュメントは、読者が Cassandra、Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通していることを前提としています。

対象リソースへの接続をテストするには、ログイン情報が必要です。

互換性に関する情報は、「コネクタリリースノート」を参照してください。

Maven でこのコネクタを使用するには、Anypoint Exchange の [Dependency Snippets (連動関係スニペット)] で pom.xml の連動関係情報を確認してください。

このコネクタの新機能

Mule 4 のサポートが追加されました。

Cassandra 認証の設定方法

Cassandra コネクタの設定は、基本認証の観点で Cassandra の設定と一致する必要があります。デフォルトでは、Cassandra データベースへのアクセスにログイン情報は必要ありません。認証を有効にするように Cassandra を設定する必要があります。認証を有効にしたら、Cassandra インストールのホームディレクトリから次の例のように cqlsh コマンドを実行できます。次の例では、デフォルトのログイン情報 (ユーザ名 cassandra、パスワード cassandra) を使用しています。

bin/cqlsh localhost -u cassandra -p cassandra
Connected to Test Cluster at localhost:9042.
[cqlsh 5.0.1 | Cassandra 3.10 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
  1. Cassandra をインストールしたら、編集目的で conf\cassandra.yaml ファイルを開きます。

  2. 必要に応じて、AllowAllAuthenticator の値を PasswordAuthenticator に変更します。

  3. Cassandra を再起動します。

  4. 別の端末タブで、Cassandra が実行されていることを確認します。

    bin/nodetool status

Design Center での接続方法

  1. Design Center で、[Set Up (セットアップ)] > [Upload (アップロード)] をクリックし、ファイルシステムにあるこのコネクタのドライバを参照して選択し、アップロードします。または、すでにアップロードされているドライバを検索して選択します。

  2. トリガをクリックします。トリガ時にこのコネクタを選択することで、グローバル要素を作成できます。 グローバル要素が不要な場合は、HTTP リスナまたはスケジューラをトリガとして使用できます。

    トリガオプション
  3. To create an HTTP global element for the connector, set these fields:

    HTTP リスナの設定
    項目 説明

    Protocol (プロトコル)

    HTTP エンドポイントのプロトコル。HTTP または HTTPS (セキュア) を選択できます。

    Host (ホスト)

    Mule アプリケーションが要求をリスンしている IP アドレス。

    Port (ポート)

    Mule アプリケーションが要求をリスンしているポートアドレス。

    Base Path (ベースパス)

    Mule アプリケーションが要求をリスンしているパス。

  4. プラス記号を選択して、コンポーネントを追加します。

  5. コンポーネントとしてコネクタを選択します。

  6. 操作を選択します。

    コネクタの操作
    操作 説明

    Add New Column

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: AlterColumnInput POJO

      POJO には、次の項目があります。

      • 作成する列の名前

      • 新しい列のデータ型

    Change Column Type

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: AlterColumnInput POJO

    Create Keyspace

    SimpleStrategy を使用するこの操作の入力は次のとおりです。

    • キースペース名

    • 複製係数

    • 複製戦略クラス

    Create Table

    この操作の入力は次のとおりです。

    • 列名

    • テーブル名

    • 省略可能なキースペース名

    Delete Columns Value

    この操作の入力は次のとおりです。

    • パラメータ: パラメータとしてのテーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および columns を持つ 2 つのレコードを含む Map<String, Object>

    Delete Rows

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および WHERE 句を含む値 Map<String, Object> を持つ 1 つのレコードを含む Map<String, Object>

    Drop Keyspace

    この操作は、キースペース名を表す文字列パラメータを受け入れます。

    Drop Table

    この操作の入力は次のとおりです。

    • テーブル名

    • テーブルを含むキースペース。

    Execute CQL Query

    メッセージペイロードを変換します。

    Get Table Names from Keyspace

    この操作の入力は次のとおりです。

    パラメータ: パラメータとしてのテーブル名 ペイロード: テーブルに挿入するエンティティを表す Map<String, Object> ** 省略可能なキースペース名

    Insert Examples

    メッセージペイロードを変換します。

    Rename column

    この操作のパラメータは次のとおりです。

    • テーブル名

    • 古い列名

    • 新しい列名

    Update

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および columns を持つ 2 つのレコードを含む Map<String, Object>

  7. コネクタのグローバル要素を設定します。

    コネクタの設定
    項目 説明

    Host (ホスト)

    Cassandra ノードのホスト名または IP アドレスを入力します。

    Port (ポート)

    ポート番号を入力します。デフォルトポートは 9042 です。

    Keyspace (キースペース)

    Cassandra キースペースを入力します。キースペースは列ファミリをグループ化します。

    Username (ユーザ名)

    Cassandra YAML ファイルで PasswordAuthenticator を有効にしている場合、Cassandra ユーザ名を入力します。AllowAllAuthenticator を有効にしている場合、この値を空白のままにします。

    Password (パスワード)

    PasswordAuthenticator を有効にしている場合、パスワードを入力します。それ以外の場合、この値を空白のままにします。

  8. 必要に応じて、Cassandra クラスタへの接続を設定します。

    コネクタのクラスタ
    項目 説明

    Cluster name (クラスタ名)

    Cassandra クラスタ名。

    Protocol version (プロトコルバージョン)

    ドライバでサポートされるネイティブプロトコルのバージョン。

    Max schema agreement wait seconds (スキーマ一致の最大待機時間)

    DDL クエリから戻るまでスキーマ一致を待機する最大時間。

    Compression (圧縮)

    トランスポートで使用する圧縮。

    SSL

    クラスタに対して SSL の使用を有効または無効にします。

Anypoint Studio 7 で接続する方法

このコネクタは、連動関係として Mule アプリケーションに追加すれば Anypoint Studio で使用できます。

Studio にこのコネクタをインストールする方法

  1. Anypoint Studio で Mule プロジェクトを開きます。

  2. コネクタを連動関係として pom.xml ファイルに追加します。

    <dependency>
      <groupId>org.mule.connectors</groupId>
      <artifactId>mule-module-cassandradb</artifactId>
      <version>3.0.0</version>
      <classifier>mule-plugin</classifier>
    </dependency>

Anypoint Studio での設定方法

  1. 操作コネクタをドラッグして Studio キャンバスにドロップします。

    操作 説明

    Add New Column

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: AlterColumnInput POJO

      POJO には、次の項目があります。

      • 作成する列の名前

      • 新しい列のデータ型

    Change Column Type

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: AlterColumnInput POJO

    Create Keyspace

    SimpleStrategy を使用するこの操作の入力は次のとおりです。

    • キースペース名

    • 複製係数

    • 複製戦略クラス

    Create Table

    この操作の入力は次のとおりです。

    • 列名

    • テーブル名

    • 省略可能なキースペース名

    Delete Columns Value

    この操作の入力は次のとおりです。

    • パラメータ: パラメータとしてのテーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および columns を持つ 2 つのレコードを含む Map<String, Object>

    Delete Rows

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および WHERE 句を含む値 Map<String, Object> を持つ 1 つのレコードを含む Map<String, Object>

    Drop Keyspace

    この操作は、キースペース名を表す文字列パラメータを受け入れます。

    Drop Table

    この操作の入力は次のとおりです。

    • テーブル名

    • テーブルを含むキースペース。

    Execute CQL Query Examples

    a メッセージペイロードを変換します。

    Get Table Names from Keyspace

    この操作の入力は次のとおりです。

    * パラメータ: パラメータとしてのテーブル名 * ** ペイロード: テーブルに挿入するエンティティを表す Map<String, Object> * 省略可能なキースペース名

    Insert Examples

    メッセージペイロードを変換します。

    Rename column

    この操作のパラメータは次のとおりです。

    • テーブル名

    • 古い列名

    • 新しい列名

    Update

    この操作の入力は次のとおりです。

    • パラメータ: テーブル名

    • 省略可能なキースペース名

    • ペイロード: キー where および columns を持つ 2 つのレコードを含む Map<String, Object>

  2. Configure the global element for the connector.

    コネクタの設定
    項目 説明

    Host (ホスト)

    Cassandra ノードのホスト名または IP アドレスを入力します。

    Port (ポート)

    ポート番号を入力します。デフォルトポートは 9042 です。

    Keyspace (キースペース)

    Cassandra キースペースを入力します。キースペースは列ファミリをグループ化します。

    Username (ユーザ名)

    Cassandra YAML ファイルで PasswordAuthenticator を有効にしている場合、Cassandra ユーザ名を入力します。AllowAllAuthenticator を有効にしている場合、この値を空白のままにします。

    Password (パスワード)

    PasswordAuthenticator を有効にしている場合、パスワードを入力します。それ以外の場合、この値を空白のままにします。

  3. 必要に応じて、Cassandra クラスタへの接続を設定します。

    コネクタの設定
    項目 説明

    Cluster name (クラスタ名)

    Cassandra クラスタ名。

    Protocol version (プロトコルバージョン)

    ドライバでサポートされるネイティブプロトコルのバージョン。

    Max schema agreement wait seconds (スキーマ一致の最大待機時間)

    DDL クエリから戻るまでスキーマ一致を待機する最大時間。

    Compression (圧縮)

    トランスポートで使用する圧縮。

    SSL

    クラスタに対して SSL の使用を有効または無効にします。

ユースケース: Studio

このユースケースでは、列ファミリをグループ化する Cassandra キースペースを作成した後、Cassandra テーブルを作成します。

キースペースの作成方法

キースペースの作成の Studio フロー
  1. Anypoint Studio で新しい Mule プロジェクトを作成し、src/main/resources/mule-app.properties の Cassandra ログイン情報を入力します。

    config.host=<HOST>
    config.port=<PORT>
    config.keyspace=<KEY_SPACE>
    config.username=<USERNAME>
    config.password=<PASSWORD>
  2. HTTP コネクタをキャンバスにドラッグし、[Host (ホスト)] と [Port (ポート)] はデフォルト値のままにして、パスを /test/createKeyspace に設定します。

    [Transform Message (メッセージの変換)] コンポーネントを Mule パレットからフローの右 (プロセス) 側にドラッグし、コンポーネントを選択して、出力ペイロードを設定します。次に例を示します。
    %dw 2.0
    output application/java
    ---
    {
      "keyspaceName": payload.keyspaceName,
      "replicationFactor": payload.replicationFactor,
      "replicationStrategyClass": payload.replicationStrategyClass
    } as Object {
      class : "org.mule.modules.cassandradb.api.CreateKeyspaceInput"
    }
  3. Create Keyspace 用の Cassandra コンポーネントをキャンバスにドラッグします。

    項目 説明

    Host (ホスト)

    Cassandra ノードのホスト名または IP アドレスを入力します。

    Port (ポート)

    ポート番号を入力します。デフォルトポートは 9042 です。

    Keyspace (キースペース)

    Cassandra キースペースを入力します。キースペースは列ファミリをグループ化します。

    Username (ユーザ名)

    Cassandra YAML ファイルで PasswordAuthenticator を有効にしている場合、Cassandra ユーザ名を入力します。AllowAllAuthenticator を有効にしている場合、この値を空白のままにします。

    Password (パスワード)

    PasswordAuthenticator を有効にしている場合、パスワードを入力します。それ以外の場合、この値を空白のままにします。

    注意: [Test Connection (接続をテスト)] オプションをクリックして、Mule が Cassandra インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。それ以外の場合、無効なパラメータを確認および修正して、再度テストします。

  4. アプリケーションを実行します。ブラウザで、次の URL を使用して、キースペース名 (ks_name)、複製係数 (rf)、および複製戦略クラス (rs_class) のクエリパラメータを入力します。

    http://localhost:8081/simple?ks_name=simple_keyspace&rf=3&rs_class=SimpleStrategy

Cassandra テーブルの作成方法

Cassandra テーブルの作成の Studio フロー
  1. Anypoint Studio で新しい Mule プロジェクトを作成し、src/main/resources/mule-app.properties の Cassandra ログイン情報を入力します。

    config.host=<HOST>
    config.port=<PORT>
    config.keyspace=<KEY_SPACE>
    config.username=<USERNAME>
    config.password=<PASSWORD>
  2. HTTP コネクタをキャンバスにドラッグし、[Host (ホスト)] と [Port (ポート)] はデフォルト値のままにして、パスを /test/createTable に設定します。

  3. [Transform Message (メッセージの変換)] コンポーネントを Mule パレットからフローの右 (プロセス) 側にドラッグし、コンポーネントを選択して、出力ペイロードを設定します。次に例を示します。

    %dw 2.0
    output application/java
    ---
    {
      "columns": payload.columns,
      "tableName": payload.tableName,
      "keyspaceName": payload.keyspaceName
    } as Object {
      class : "org.mule.modules.cassandradb.api.CreateTableInput"
    }
  4. Create Table 操作用の Cassandra コンポーネントをキャンバスにドラッグします。

    項目 説明

    Host (ホスト)

    Cassandra ノードのホスト名または IP アドレスを入力します。

    Port (ポート)

    ポート番号を入力します。デフォルトポートは 9042 です。

    Keyspace (キースペース)

    Cassandra キースペースを入力します。キースペースは列ファミリをグループ化します。

    Username (ユーザ名)

    Cassandra YAML ファイルで PasswordAuthenticator を有効にしている場合、Cassandra ユーザ名を入力します。AllowAllAuthenticator を有効にしている場合、この値を空白のままにします。

    Password (パスワード)

    PasswordAuthenticator を有効にしている場合、パスワードを入力します。それ以外の場合、この値を空白のままにします。

    注意: [Test Connection (接続をテスト)] オプションをクリックして、Mule が Cassandra インスタンスに接続できることを確認します。接続に成功した場合は、[OK] をクリックして設定を保存します。失敗した場合は、パラメータを確認して修正し、もう一度テストを実行してください。

  5. Mule アプリケーションを実行します。Postman で [POST] を選択します。[Body (内容)] > [Raw (未加工)] を選択し、JSON (application/json) MIME タイプを選択して、大文字のデータ型を使用して次のテーブル記述を入力します。

    {
      "tableName": "users",
      "keyspaceName": "Excelsior",
      "columns":
      [
        {
          "name": "id",
          "type": "INT",
          "primaryKey": "true"
        },
        {
          "name": "username",
          "type": "TEXT",
          "primaryKey": "true"
        },
        {
          "name": "name",
          "type": "TEXT",
          "primaryKey": "false"
        },
        {
          "name": "email",
          "type": "TEXT",
          "primaryKey": "false"
        }
      ]
    }
  6. Postman で [Send (送信)] をクリックし、[Status: 200 OK (状況: 200 OK)] を探します。

ユースケース: XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:cassandra-db="http://www.mulesoft.org/schema/mule/cassandra-db"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/cassandra-db
http://www.mulesoft.org/schema/mule/cassandra-db/current/mule-cassandra-db.xsd">

  <configuration-properties file="mule-app.properties" />
  <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config">
    <http:listener-connection host="0.0.0.0" port="8081" />
    </http:listener-config>
  <cassandra-db:config name="CassandraDB_Config" doc:name="CassandraDB Config">
    <cassandra-db:connection host="${config.host}" port="${config.port}" keyspace="${config.keyspace}" username="${config.username}" password="${config.password}"/>
	</cassandra-db:config>
  <flow name="HTMLForm">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
    <parse-template doc:name="Parse Template" location="form.html"/>
  </flow>
  <flow name="CreateKeyspace">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/createKeyspace"/>
    <ee:transform doc:name="Transform Message">
      <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
  "keyspaceName": payload.keyspaceName,
  "replicationFactor": payload.replicationFactor,
  "replicationStrategyClass": payload.replicationStrategyClass
} as Object {
  class : "org.mule.modules.cassandradb.api.CreateKeyspaceInput"
}]]></ee:set-payload>
      </ee:message>
    </ee:transform>
    <cassandra-db:create-keyspace doc:name="Create keyspace" config-ref="CassandraDB_Config"/>
    <ee:transform doc:name="Transform Message">
      <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
      </ee:message>
    </ee:transform>
  </flow>
  <flow name="CreateTable">
    <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/createTable"/>
    <ee:transform doc:name="Transform Message">
      <ee:message>
        <ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
  "columns": payload.columns,
  "tableName": payload.tableName,
  "keyspaceName": payload.keyspaceName
} as Object {
  class : "org.mule.modules.cassandradb.api.CreateTableInput"
}]]></ee:set-payload>
      </ee:message>
    </ee:transform>
    <cassandra-db:create-table doc:name="Create table" config-ref="CassandraDB_Config"/>
    <ee:transform doc:name="Transform Message">
      <ee:message>
        <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
      </ee:message>
    </ee:transform>
  </flow>
</mule>

関連情報

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub