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

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

最終更新日:Aug 27, 2024

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

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

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

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

    説明

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

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

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

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

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

テストの説明

Tairデータベースのテスト環境

環境アイテム

説明

リージョンとゾーン

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

ストレージタイプ

Redis 6.0と互換性のあるDRAMベースのインスタンス

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

6.2.4.6

アーキテクチャ

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

インスタンスタイプ

テスト結果は、インスタンスタイプの影響を受けにくくなります。 この例では、tair.rdb.4gインスタンスタイプが使用されています。 詳細については、「DRAMベースのインスタンス」をご参照ください。

クライアントのテスト環境

環境アイテム

説明

クライアントのホスト

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

リージョンとゾーン

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

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

Alibaba Cloud Linux 3.2104 LTS 64ビット

ネットワーク

TairインスタンスとECSインスタンスの両方が存在する仮想プライベートクラウド (VPC)

ソフトウェア

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の場合、passwordパラメーターを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 -- スレッド10 -n 10000 JSON。GETキー

      テスト結果:

      データベースCPU使用率

      QPS

      平均レイテンシ (ミリ秒)

      99パーセンタイル遅延 (ミリ秒)

      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-スレッド10 -n 10000 JSON。GET key $.plugins.ant.de velopers[0].developerId

      テスト結果:

      データベースCPU使用率

      QPS

      平均レイテンシ (ミリ秒)

      99パーセンタイル遅延 (ミリ秒)

      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 -- スレッド10 -n 10000 JSON.SETキー。plugins.ant.de velopers[0].developerId '"developer_foo"'

      テスト結果:

      データベースCPU使用率

      QPS

      平均レイテンシ (ミリ秒)

      99パーセンタイル遅延 (ミリ秒)

      95%

      79865.83

      1.221

      2.639

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

      サンプルコマンド:

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

      テスト結果:

      データベースCPU使用率

      QPS

      平均レイテンシ (ミリ秒)

      99パーセンタイル遅延 (ミリ秒)

      30%

      3043.68

      32.649

      65.311

概要

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