すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):TairDocパフォーマンスホワイトペーパー

最終更新日:Dec 05, 2024

TairDocはRedisJSONに似たドキュメントデータ構造で、JSON標準に準拠しています。 このトピックでは、TairDocのパフォーマンスをテストするために使用される方法と、テスト結果について説明します。

TairDocは次の機能を提供します。

  • JSON標準を完全にサポートします。

  • JSONPath RFC draft-ietf-jsonpath-baseバージョン04と互換性があります。

    説明

    JSON.GETコマンドのみがこのドラフトバージョンをサポートしています。

  • JSONポインターを完全にサポートします。

  • 子要素の検索を簡単にするために、データをバイナリツリーに格納します。

  • JSON形式からXMLまたはYAML形式への変換をサポートします。

詳細については、「Doc」をご参照ください。

テストの説明

データベーステスト環境

項目

説明

リージョンとゾーン

中国 (張家口) リージョンのゾーンA

ストレージタイプ

Redis 6.0互換DRAMベースのインスタンス

インスタンスのバージョン

6.2.4.6

インスタンスアーキテクチャ

クラスターモードが無効になっている標準のマスターレプリカアーキテクチャ。 詳細については、「標準アーキテクチャ」をご参照ください。

インスタンスタイプ

テスト結果は、インスタンスタイプの影響を受けにくくなります。 このテストでは、tair.rdb.4gインスタンスタイプが使用されます。

クライアントテスト環境

項目

説明

クライアントのホスト

ECS. c6e.8xlargeタイプのElastic Compute Service (ecs) インスタンス。 詳細については、「インスタンスファミリーの概要」をご参照ください。

リージョンとゾーン

中国 (張家口) リージョンのゾーンA

オペレーティングシステム

Alibaba Cloud Linux 3.2104 LTS 64ビット

ネットワーク

ECSインスタンスはTairインスタンスと同じ仮想プライベートクラウド (VPC) にデプロイされ、VPCを介してTairインスタンスに接続されます。

ソフトウェア

Python-redisがインストールされているpython 3.7以降

テストデータ

この例では、GitHubのupdate-center.jsonのデータを使用します。 データのサイズは521 KBです。

テストツール

この例では、オープンソースのredisのRedis-benchmarkツールを使用しています。

テスト手順と結果

  1. ECSインスタンスにログインし、次のコマンドを実行してテストデータをコンピューターにダウンロードします。

    wget https://raw.githubusercontent.com/chadaustin/sajson/master/testdata/update-center.json
  2. 次のスクリプトをinsert.pyという名前のファイルとして、ダウンロードしたテストデータがあるディレクトリに保存します。

    import redis
    import json
    
    host = "r-bp1s02ae14mr****.redis.rds.aliyuncs.com"
    port = 6379
    password = "testaccount:Rp829dlwa"
    
    r = redis.Redis(host=host, port=port, password=password)
    with open("update-center.json", "r") as f:
              content = f.read()
    json = json.loads(content)
    ret = r.json().set("key", ".", json);
    print(f"insert json to {host}, ret is {ret}")
    説明

    パラメーター:

    • host: TairインスタンスのVPCエンドポイント。

    • port: Tairインスタンスのポート番号。 デフォルト値は6379です。 この例では、このパラメーターはデフォルト値に設定されています。

    • password: Tairインスタンスのユーザー名とパスワード。 コンソールで作成されたデータベースアカウントを使用してTairインスタンスに接続する場合は、<user >:< password> 形式でパスワードを指定する必要があります。 たとえば、ユーザー名がtestaccountで、パスワードがRp829dlwaの場合、Tairインスタンスへの接続に使用されるパスワードはtestaccount:Rp829dlwaです。

  3. 次のコマンドを実行して、update-center.jsonのデータをTairインスタンスに書き込みます。

    python3 insert.py

    データがTairインスタンスに書き込まれると、次の出力が表示されます。

    insert json to 127.0.0.1, ret is True
  4. コマンドを実行してテストを開始します。

    • JSONファイル全体を照会する

      サンプルコマンド:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key

      テスト結果

      データベースCPU使用率

      QPS

      平均レイテンシ (ms)

      99パーセンタイル遅延 (ms)

      20%

      569.57

      16.951

      29.279

    • JSONファイルの子要素を照会する

      サンプルコマンド:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key $.plugins.ant.developers[0].developerId

      テスト結果

      データベースCPU使用率

      QPS

      平均レイテンシ (ms)

      99パーセンタイル遅延 (ms)

      92%

      205879.94

      0.477

      0.943

    • JSONファイルの子要素を変更する

      サンプルコマンド:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.SET key .plugins.ant.developers[0].developerId '"developer_foo"'

      テスト結果

      データベースCPU使用率

      QPS

      平均レイテンシ (ms)

      99パーセンタイル遅延 (ms)

      95%

      79865.83

      1.221

      2.639

    • フィルター条件を指定するクエリの実行

      サンプルコマンド:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key '$.plugins[?(@.scm=="github.com" && @.releaseTimestamp>"2013-01-01")].name'

      テスト結果

      データベースCPU使用率

      QPS

      平均レイテンシ (ms)

      99パーセンタイル遅延 (ms)

      30%

      3043.68

      32.649

      65.311

概要

TairDocには、解析とクエリ実行のための社内JSONツリー構造とJSONPathフレームワークが用意されています。 このコンテキストでは、TairDocは更新とクエリで優れたパフォーマンスを示します。