TairDocはRedisJSONに似たドキュメントデータ構造で、JSON標準に準拠しています。 このトピックでは、TairDocのパフォーマンスをテストするために使用される方法と、テスト結果について説明します。
テストの説明
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ツールを使用しています。
テスト手順と結果
ECSインスタンスにログインし、次のコマンドを実行してテストデータをコンピューターにダウンロードします。
wget https://raw.githubusercontent.com/chadaustin/sajson/master/testdata/update-center.json
次のスクリプトを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
に設定します。
次のコマンドを実行して、update-center.jsonのデータをTairインスタンスに書き込みます。
python3 insert.py
データがTairインスタンスに書き込まれると、次の出力が表示されます。
insert json to 127.0.0.1, ret is True
コマンドを実行してテストを開始します。
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は更新とクエリで優れたパフォーマンスを示します。