汎用コントラクトおよびファンクションのリファレンスガイド
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、汎用コントラクトおよびファンクションの仕様について説明します。
汎用コントラクトおよびファンクションのリスト
- オブジェクト管理
object.Put
コントラクト: オブジェクトのハッシュ値を持つオブジェクトを配置します。object.PutToMutableDatabase
ファンクション:object.Put
コントラクトと組み合わせて可変レコードを配置します。object.Get
コントラクト: オブジェクトを取得します。object.Validate
コントラクト: オブジェクトのハッシュ値を検証します。
- コレクション管理
collection.Create
コントラクト: コレク ションを作成します。collection.Add
コントラクト: コレクションに ID を追加します。collection.Remove
コントラクト: コレクションから ID を削除します。collection.Get
コントラクト: コレクションを取得します。collection.GetHistory
コントラクト: コレクションの変更履歴を取得します。collection.GetCheckpointInterval
コントラクト: チェックポイント間隔を取得します。
object.Put
コントラクト
オブジェクトのハッシュ値を含むオブジェクト ID を入力します。オブジェクトがすでに存在する場合は、アセットレコードが更新されます。存在しない場合は、新しいアセットレコードが追加されます。
入力
入力として次のフィールドを持つ JSON オブジェクトを指定します。
フィールド | 説 明 |
---|---|
object_id | 配置するオブジェクトの ID。 |
hash_value | 指定されたオブジェクトのハッシュ値。 |
metadata | (オプション) 追加情報を保存するための JSON オブジェクト。 |
出力
成功した場合は null 値が返されます。
例
scalardl execute-contract --properties client.properties \
--contract-id object.Put \
--contract-argument '{"objct_id": "a.txt", "hash_value": "a3ae11", "metadata": {"note": "something"}}'
object.PutToMutableDatabase
ファンクション
object.Put
コントラクトと組み合わせて、変更可能なレコードを ScalarDB テーブルに格納します。レコードがすでに存在する場合は、レコードが更新されます。存在しない場合は、新しいレコードが追加されます。このファンクションの呼び出しはオプションです。
入力
入力として次のフィールドを持つ JSON オブジェクトを指定します。
フィールド | 説明 |
---|---|
namespace | 名前空間名の文字列値。 |
table | テーブル名の文字列値。 |
partition_key | パーティションキー列の JSON オブジェクトの配列。 |
clustering_key | クラスタリングキー列の JSON オブジェクトの配列。 |
columns | 通常の列の JSON オブジェクトの配列。 |
各列は、次のフィールドを持つ JSON オブジェクトです。
フィールド | 説明 |
---|---|
column_name | 列名の文字列値。 |
value | JSON 値。 |
data_type | ScalarDB でサポートされているデータ型の大文字と小文字を区別しない文字列値。 |
出力
成功した場合は null 値が返されます。
例
scalardl execute-contract --properties client.properties \
--contract-id object.Put \
--contract-argument '{"object_id": "a.txt", "hash_value": "a3ae11"}' \
--function-id object.PutToMutableDatabase \
--function-argument '{...}'
ファンクションの引数については、次の JSON オブジェクトの例を参照してください。
{
"namespace": "myns",
"table": "objects",
"partition_key": [
{ "column_name": "object_id", "value": "a.txt", "data_type": "TEXT" }
],
"clustering_key": [
{ "column_name": "version", "value": "1234aef", "data_type": "TEXT" }
],
"columns": [
{ "column_name": "status", "value": 3, "data_type": "INT" },
{ "column_name": "size", "value": 10.000, "data_type": "DOUBLE" },
{ "column_name": "timestamp", "value": 123456789, "data_type": "BIGINT" },
{ "column_name": "comment", "value": "hash-registered", "data_type": "TEXT" }
]
}
object.Get
コントラクト
指定された ID を持つオブジェクトを取得します。指定されたオブジェクトが存在しない場合は、null 値が返されます。
入力
入力として次のフィールドを持つ JSON オブジェクトを指定します。
フィールド | 説明 |
---|---|
object_id | 取得するオブジェクトの ID。 |
出力
次のフィールドを持つ JSON オブジェクトが返されます。
フィールド | 説明 |
---|---|
object_id | 取得するオブジェクトの ID。 |
hash_value | オブジェクトのハッシュ値。 |
metadata | 存在する場合は JSON オブジェクト。 |
例
scalardl execute-contract --properties client.properties \
--contract-id object.Get \
--contract-argument '{"objct_id": "a.txt"}'
Contract result:
{
"object_id" : "a.txt",
"hash_value" : "a3ae11",
"metadata" : {
"note" : "something"
}
}
object.Validate
コントラクト
オブジェクトの指定されたハッシュ値が、オブジェクトの保存されたハッシュ値と同じかどうかを検証します。デフォルトでは、最新のハッシュ値から指定された数のハッシュ値のみが検証されます。all
オプションを使用すると、指定されたバージョンの数が ScalarDL に保存されているバージョンの数と一致するかどうかも検証できます。