Azure Cosmos DB の Cassandra API でサポートされる Apache Cassandra の機能Apache Cassandra features supported by Azure Cosmos DB Cassandra API

Azure Cosmos DB は、Microsoft のグローバルに分散されたマルチモデル データベース サービスです。Azure Cosmos DB is Microsoft's globally distributed multi-model database service. Azure Cosmos DB の Cassandra API とは、Cassandra Query Language (CQL) v4 ワイヤ プロトコル準拠のオープン ソースの Cassandra クライアント ドライバー経由で通信できます。You can communicate with the Azure Cosmos DB Cassandra API through Cassandra Query Language (CQL) v4 wire protocol compliant open-source Cassandra client drivers.

Azure Cosmos DB の Cassandra API を使用することで、Apache Cassandra API のメリットと、Azure Cosmos DB が提供するエンタープライズ機能を享受できます。By using the Azure Cosmos DB Cassandra API, you can enjoy the benefits of the Apache Cassandra APIs as well as the enterprise capabilities that Azure Cosmos DB provides. エンタープライズ機能には、グローバル配信自動スケールアウトのパーティション分割、可用性と待機時間の保証、保存時の暗号化などがあります。The enterprise capabilities include global distribution, automatic scale out partitioning, availability and latency guarantees, encryption at rest, backups, and much more.

Cassandra プロトコルCassandra protocol

Azure Cosmos DB の Cassandra API は、CQL バージョン v4 と互換性があります。The Azure Cosmos DB Cassandra API is compatible with CQL version v4. サポートされている CQL コマンド、ツール、制限事項、および例外を、以下に示します。The supported CQL commands, tools, limitations, and exceptions are listed below. これらのプロトコルを認識するクライアント ドライバーはすべて、Azure Cosmos DB の Cassandra API に接続できるはずです。Any client driver that understands these protocols should be able to connect to Azure Cosmos DB Cassandra API.

Cassandra ドライバーCassandra driver

Azure Cosmos DB の Cassandra API では、次のバージョンの Cassandra ドライバーがサポートされています。The following versions of Cassandra drivers are supported by Azure Cosmos DB Cassandra API:

CQL データ型CQL data types

Azure Cosmos DB の Cassandra API では、次の CQL データ型がサポートされています。Azure Cosmos DB Cassandra API supports the following CQL data types:

  • asciiascii
  • bigintbigint
  • BLOBblob
  • ブール値boolean
  • countercounter
  • datedate
  • decimaldecimal
  • doubledouble
  • floatfloat
  • frozenfrozen
  • inetinet
  • intint
  • listlist
  • setset
  • smallintsmallint
  • texttext
  • timetime
  • timestamptimestamp
  • timeuuidtimeuuid
  • tinyinttinyint
  • tupletuple
  • uuiduuid
  • varcharvarchar
  • varintvarint
  • tuplestuples
  • udtudts
  • mapmap

CQL 関数CQL functions

Azure Cosmos DB の Cassandra API では、次の CQL 関数がサポートされています。Azure Cosmos DB Cassandra API supports the following CQL functions:

  • トークンToken
  • 集計関数Aggregate functions
    • min、max、avg、countmin, max, avg, count
  • Blob 変換関数Blob conversion functions
    • typeAsBlob(value)typeAsBlob(value)
    • blobAsType(value)blobAsType(value)
  • UUID および timeuuid 関数UUID and timeuuid functions
    • dateOf()dateOf()
    • now()now()
    • minTimeuuid()minTimeuuid()
    • unixTimestampOf()unixTimestampOf()
    • toDate(timeuuid)toDate(timeuuid)
    • toTimestamp(timeuuid)toTimestamp(timeuuid)
    • toUnixTimestamp(timeuuid)toUnixTimestamp(timeuuid)
    • toDate(timestamp)toDate(timestamp)
    • toUnixTimestamp(timestamp)toUnixTimestamp(timestamp)
    • toTimestamp(date)toTimestamp(date)
    • toUnixTimestamp(date)toUnixTimestamp(date)

Cassandra クエリ言語の制限Cassandra Query Language limits

Azure Cosmos DB の Cassandra API には、テーブルに格納されるデータのサイズに制限がありません。Azure Cosmos DB Cassandra API does not have any limits on the size of data stored in a table. パーティション キーの制限を確実に適用しながら、数百テラバイトまたはペタバイトのデータを格納することができます。Hundreds of terabytes or Petabytes of data can be stored while ensuring partition key limits are honored. 同様に、すべてのエンティティまたは同等の行に列数の制限はありませんが、エンティティの合計サイズが 2 MB を超えることはできません。Similarly every entity or row equivalent does not have any limits on the number of columns however the total size of the entity should not exceed 2 MB.

ツールTools

Azure Cosmos DB の Cassandra API は、管理されたサービス プラットフォームです。Azure Cosmos DB Cassandra API is a managed service platform. クラスターを管理するために、管理オーバーヘッドや、ガベージ コレクター、Java 仮想マシン (JVM)、nodetool などのユーティリティは必要ありません。It does not require any management overhead or utilities such as Garbage Collector, Java Virtual Machine(JVM), and nodetool to manage the cluster. バイナリ CQLv4 互換性を利用する cqlsh などのツールをサポートしています。It supports tools such as cqlsh that utilizes Binary CQLv4 compatibility.

  • Azure portal のデータ エクスプローラー、メトリック、ログの診断、PowerShell、および cli は、アカウントを管理するためにサポートされているその他のメカニズムです。Azure portal's data explorer, metrics, log diagnostics, PowerShell, and cli are other supported mechanisms to manage the account.

CQL シェルCQL Shell

CQLSH コマンドライン ユーティリティは、Apache Cassandra 3.1.1 付属しており、次の環境変数が有効にするとすぐに機能します。CQLSH command-line utility comes with Apache Cassandra 3.1.1 and works out of box with following environment variables enabled:

次のコマンドを実行する前に、Baltimore ルート証明書を cacerts ストアに追加します。Before running the following commands, add a Baltimore root certificate to the cacerts store.

Windows:Windows:

set SSL_VERSION=TLSv1_2 
SSL_CERTIFICATE=<path to Baltimore root ca cert>
set CQLSH_PORT=10350 
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl 

Unix/Linux/Mac:Unix/Linux/Mac:

export SSL_VERSION=TLSv1_2 
export SSL_CERTFILE=<path to Baltimore root ca cert>
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl 

CQL コマンドCQL commands

Azure Cosmos DB は、Cassandra API アカウントで以下のデータベース コマンドをサポートしています。Azure Cosmos DB supports the following database commands on Cassandra API accounts.

  • CREATE KEYSPACECREATE KEYSPACE
  • CREATE TABLECREATE TABLE
  • ALTER TABLEALTER TABLE
  • USEUSE
  • INSERTINSERT
  • SELECTSELECT
  • UPDATEUPDATE
  • BATCH - unlogged コマンドのみサポートされていますBATCH - Only unlogged commands are supported
  • DELETEDELETE

CQLV4 互換の SDK から実行された場合のすべての CRUD 操作により、エラー、消費された要求の単位数、アクティビティ ID に関する追加情報が返されます。All crud operations when executed through CQLV4 compatible SDK will return extra information about error, request units consumed, activity ID. コマンドの削除と更新は、プロビジョニングされたリソースの過剰使用を防ぐため、検討中のリソース ガバナンスで処理する必要があります。Delete and update commands need to be handled with resource governance in consideration, to avoid over use of provisioned resources.

  • gc_grace_seconds を指定する場合は値を 0 にする必要があることに注意してください。Note gc_grace_seconds value must be zero if specified.
var tableInsertStatement = table.Insert(sampleEntity); 
var insertResult = await tableInsertStatement.ExecuteAsync(); 
 
foreach (string key in insertResult.Info.IncomingPayload) 
        { 
            byte[] valueInBytes = customPayload[key]; 
            double value = Encoding.UTF8.GetString(valueInBytes); 
            Console.WriteLine($“CustomPayload:  {key}: {value}”); 
        } 

一貫性のマッピングConsistency mapping

Azure Cosmos DB の Cassandra API では、読み取り操作の一貫性を選択することができます。Azure Cosmos DB Cassandra API provides choice of consistency for read operations. 一貫性のマッピングについては、こちら に詳しく説明されています。The consistency mapping is detailed [here[(https://docs.microsoft.com/azure/cosmos-db/consistency-levels-across-apis#cassandra-mapping).

アクセス許可とロールの管理Permission and role management

Azure Cosmos DB は、プロビジョニングのためのロールベースのアクセス制御 (RBAC)、キーのローテーション、メトリックの表示、Azure portal から取得できる読み書きおよび読み取り専用のパスワードおよびキーをサポートしています。Azure Cosmos DB supports role-based access control (RBAC) for provisioning, rotating keys, viewing metrics and read-write and read-only passwords/keys that can be obtained through the Azure portal. Azure Cosmos DB では、CRUD アクティビティのためのユーザーとロールはまだサポートされていません。Azure Cosmos DB does not yet support users and roles for CRUD activities.

計画されているサポートPlanned support

  • create keyspace コマンドのリージョン名は現在無視されます。データのディストリビューションは、基礎となる Cosmos DB プラットフォームに実装され、アカウントのポータルまたは PowerShell を介して公開されます。Region name in create keyspace command is ignored at present- Distribution of data is implemented in underlying Cosmos DB platform and exposed via portal or powershell for the account.

次の手順Next steps