Cmdlets for Cassandra

Build 24.0.9062

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でCassandra Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module CassandraCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module CassandraCmdlets;

Connect-Cassandra cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-Cassandra -Database 'MyCassandraDB' -Port 9042 -Server '127.0.0.1'

Cassandra への接続

Cassandra インスタンスだけでなく、Cosmos DB やDataStax Astra DB にも、それぞれのCassandra API を介して直接接続できます。

Cassandra

Cassandra インスタンスに接続するには以下を設定します。

  • Server:Cassandra データベースをホストしているサーバーのホスト名、またはIP アドレスに設定。ポートは、このプロパティの末尾、またはPort で指定します。
  • PortServer 接続プロパティの一部としてポートを指定していない場合は、Cassandra データベースがホストされているポートに設定。
  • Database:テーブルを含むCassandra キースペースの名前に設定。
  • ConsistencyLevel:クエリが成功したとみなされる前に、レスポンスを強制したいレプリカの数に設定。
  • User:Cassandra データベースへのアクセスに使用するユーザーネームに設定。
  • Password:Cassandra データベースへのアクセスに使用するパスワードに設定。

Cosmos DB

Cassandra のデータストアとしてCosmos DB を使用する場合は、以下の値を指定して接続します。

  • Server:Host 値(アカウント用にプロビジョニングされたサーバーのFQDN)に設定。ポートは、このプロパティの末尾、またはPort で指定します。
  • PortServer 接続プロパティの一部としてポートを指定していない場合は、Cosmos DB インスタンスがホストされているポートに設定。
  • Database:読み書きするデータベースに設定。
  • ConsistencyLevel:クエリが成功したとみなされる前に、レスポンスを強制したいレプリカの数に設定。
  • User:Cosmos DB アカウント名に設定。
  • Password:Cosmos DB アカウントに関連付けられているアカウントキーに設定。

DataStax Astra DB

Cassandra のデータストアとしてAstra DB を使用する場合は、以下の値を指定して接続します。

  • Server:BASE_ADDRESS 値でサーバーに設定。ポートもここで指定できます。またはPort で指定します。
  • PortServer 接続プロパティの一部としてポートを指定していない場合は、Astra DB インスタンスがホストされているポートに設定。
  • Database:読み書きするデータベースに設定。
  • ConsistencyLevel:クエリが成功したとみなされる前に、レスポンスを強制したいレプリカの数に設定。
  • User:Astra DB ユーザーネームに設定。
  • Password:Astra DB ユーザーネームに紐づいているパスワードに設定。

セキュアバンドル接続

以下の接続プロパティを設定することで、任意の接続をセキュアバンドルとして設定できます。

  • Server:サーバー名に設定。
  • Port29042 に設定。
  • User:Atra DB ユーザーに設定。
  • Password:Astra DB ユーザーパスワードに設定。
  • SSLClientCert:identity.jks ファイルへのパスに設定。
  • SSLClientCertTypeJKSFILE に設定。
  • SSLClientCertPassword:identity.jks ファイルのパスワードに設定。
  • SSLClientCertSubjectCERTIFICATE SUBJECT INFORMATION に設定。
  • UseSSL:"true" に設定。

セキュアバンドルに含まれるファイルのリストについてはSecure connect bundle contents を参照してください。

Cassandra への認証

本製品 は、ログイン資格情報でのBasic 認証と、DataStax Enterprise (DSE) の追加の認証機能をサポートしています。次のセクションでは、認証方式が必要とすることがある接続プロパティを説明します。

AuthScheme に、システム用に設定された認証器に対応する値を設定する必要があります。cassandra.yaml ファイル内のauthenticator プロパティを指定してください。ファイルは、通常/etc/dse/cassandra に存在します。または、DSE Cassandra のDSE Unified Authenticator で発見できます。

Basic

ログイン資格情報のみで認証するには、AuthSchemeBasic に設定します。

cassandra.yaml ファイル内で、authenticator プロパティを"PasswordAuthenticator" に設定してください。

DSE

AuthScheme プロパティを、ログイン資格情報とDSE Unified Authenticator で認証するためのDSE に設定。

ファイル内で、authenticator プロパティを"com.datastax.bdp.cassandra.auth.DseAuthenticator" に設定してください。

Kerberos

Kerberos で認証するには以下のように設定します。

  • AuthSchemeKERBEROS に設定。
  • KerberosKDC:ユーザーの認証で使用されるKerberos キー配布センター(KDC)サービスに設定。
  • KerberosRealm:ユーザー認証に使用されるKerberos 領域に設定。
  • KerberosSPN:Kerberos ドメインコントローラーのサービスプリンシパル名(SPN)に設定。
次に、これらのYAML ファイルを以下のように設定します。
  • cassandra.yaml ファイル内で、authenticator プロパティを"com.datastax.bdp.cassandra.auth.DseAuthenticator" に設定してください。
  • dse.yaml ファイル内のauthentication_options セクションを変更して、default_schemaother_schemas プロパティを"kerberos" に指定してください。
  • dse.yaml ファイル内のkerberos_options セクションを変更して、keytabservice_principlehttp_principle、およびqop プロパティを指定してください。

Kerberos に接続するために接続プロパティを設定する方法については、Kerberos の使用 を参照してください。

LDAP

認証するには以下のように設定します。

  • AuthScheme:LDAP ユーザーで認証するには、これをLDAP に設定。
  • LDAPServer:LDAP サーバーのホスト名またはIP アドレスに設定。
  • LDAPPassword:デフォルトLDAP ユーザーのパスワード。
次に、これらのYAML ファイルを以下のように設定します。
  • cassandra.yaml ファイル内で、authenticator プロパティを"com.datastax.bdp.cassandra.auth.DseAuthenticator" に設定してください。
  • dse.yaml ファイル内のauthentication_options セクションを変更して、default_schemaother_schemas プロパティを"ldap" に指定してください。
  • dse.yaml ファイル内のldap_options セクションを変更して、server_hostserver_portsearch_dnsearch_passworduser_search_base、およびuser_search_filter プロパティを指定してください。

セキュアなCassandra への接続

UseSSL を設定すると、接続時にSSL/TLS 暗号化をネゴシエートできます。 デフォルトでは、本製品 はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。

データの取得

Select-Cassandra cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-Cassandra -Connection $conn -Table ""CData"."Sample".Products" -Columns @("Id, Name") -Where "Industry='Floppy Disks'"
Invoke-Cassandra cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-Cassandra -Connection $conn -Table "CData"."Sample".Products -Where "Industry = 'Floppy Disks'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\my"CData"."Sample".ProductsData.csv -NoTypeInformation

Select-Cassandra からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-Cassandra -Database 'MyCassandraDB' -Port 9042 -Server '127.0.0.1'
PS C:\> $row = Select-Cassandra -Connection $conn -Table ""CData"."Sample".Products" -Columns (Id, Name) -Where "Industry = 'Floppy Disks'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  ""CData"."Sample".Products",
  "Columns":  [

  ],
  "Id":  "MyId",
  "Name":  "MyName"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-Cassandra -Connection $conn -Table "CData"."Sample".Products -Where "Industry = 'Floppy Disks'" | Remove-Cassandra

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをCassandra にロードします。

Import-Csv -Path C:\My"CData"."Sample".ProductsUpdates.csv | %{
  $record = Select-Cassandra -Connection $conn -Table "CData"."Sample".Products -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-Cassandra -Connection $conn -Table "CData"."Sample".Products -Columns @("Id","Name") -Values @($_.Id, $_.Name) -Where "Id  = `'$_.Id`'"
  }else{
    Add-Cassandra -Connection $conn -Table "CData"."Sample".Products -Columns @("Id","Name") -Values @($_.Id, $_.Name)
  }
}

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062