Get APIの使用によるデータのフェッチ
GetRequest
APIを使用し、主キーを使用して単一のデータ行をフェッチします。
デフォルトでは、すべての読取り操作で最終的に整合性が維持されます。このタイプの読取りは、絶対的な整合性を使用する読取りよりもコストが低くなります。Consistency
クラスのsetConsistency()
メソッドを使用することで、NoSQLHandleインスタンスのデフォルトConsistencyを変更できます。
GetRequest
クラスでは、簡単かつ強力な方法でデータを読み取ることができますが、より複雑な読取りリクエストには問合せを使用できます。表からデータを読み取るには、GetRequest
クラスを使用してターゲット表とターゲット・キーを指定し、NoSQLHandle.get()
を使用してリクエストを実行します。この操作の結果はGetResult
で参照できます。NoSQLHandleConfig.setConsistency(oracle.nosql.driver.Consistency)
メソッドとGetRequest.setConsistency()
メソッドを使用することで、NoSQLHandleインスタンスのデフォルトConsistencyを変更できます。
//Fetch single row using get API
private static void getRow(NoSQLHandle handle,String colName,int Id) throws Exception {
MapValue key = new MapValue().put(colName, Id);
GetRequest getRequest = new GetRequest().setKey(key)
.setTableName(tableName);
GetResult getRes = handle.get(getRequest);
/* on success, GetResult.getValue() returns a non-null value */
if (getRes.getValue() != null) {
System.out.println("\t" +getRes.getValue().toString());
} else {
System.out.println("Get Failed");
}
}
ノート:
子表からデータをフェッチするには、setTableName
メソッドで表のフルネーム(parent_tablename.child_tablename)を指定します。親子表からのデータのフェッチ方法を理解するには、こちらでサンプルの中からフル・コードTableJoins.javaをダウンロードします。
GetRequest
APIを使用し、主キーを使用して単一のデータ行をフェッチします。borneo.NoSQLHandle.get()
メソッドを使用して単一行を読み取ることができます。このメソッドを使用すると、主キー値に基づいてレコードを取得できます。borneo.GetRequest
クラスは、単純なget操作に使用します。これは、ターゲット行の主キー値を含み、borneo.GetResult
のインスタンスを返します。ハンドルを作成する前に、borneo.NoSQLHandleConfig.set_consistency()
を使用してborneo.NoSQLHandle
のデフォルトConsistencyを変更できます。これは、borneo.GetRequest.set_consistency()
を使用して単一のリクエストで変更できます。
# Fetch single row using get API
def getRow(handle,colName,Id):
request = GetRequest().set_table_name('stream_acct')
request.set_key({colName: Id})
print('Query results: ')
result = handle.get(request)
print('Query results are' + str(result.get_value()))
ノート:
子表からデータをフェッチするには、set_table_name
メソッドで表のフルネーム(parent_tablename.child_tablename)を指定します。親子表からのデータのフェッチ方法を理解するには、こちらでサンプルの中からフル・コードTableJoins.pyをダウンロードします。
GetRequest
APIを使用し、主キーを使用して単一のデータ行をフェッチします。Client.Get
関数を使用して単一行を読み取ることができます。この関数を使用すると、主キー値に基づいてレコードを取得できます。nosqldb.GetRequest
は、単純なget操作に使用します。これは、ターゲット行の主キー値を含み、nosqldb.GetResult
のインスタンスを返します。get操作が成功すると、nil以外のGetResult.Version
が返されます。クライアントを作成する前に、RequestConfig.Consistency
を使用してnosqldb.RequestConfig
のデフォルトConsistencyを変更できます。これは、GetRequest.Consistency
フィールドを使用して単一のリクエストで変更できます。
//fetch data from the table
func getRow(client *nosqldb.Client, err error, tableName string, colName string, Id int)(){
key:=&types.MapValue{}
key.Put(colName, Id)
req:=&nosqldb.GetRequest{
TableName: tableName,
Key: key,
}
res, err:=client.Get(req)
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
if res.RowExists() {
fmt.Printf("Got row: %v\n", res.ValueAsJSON())
} else {
fmt.Printf("The row does not exist.\n")
}
}
ノート:
子表からデータをフェッチするには、TableName
パラメータで表のフルネーム(parent_tablename.child_tablename)を指定します。親子表からのデータのフェッチ方法を理解するには、こちらでサンプルの中からフル・コードTableJoins.goをダウンロードします。
get
APIを使用し、主キーを使用して単一のデータ行をフェッチします。get
メソッドを使用して単一行を読み取ることができます。このメソッドを使用すると、主キー値に基づいてレコードを取得できます。メソッドの詳細は、NoSQLClientクラスを参照してください。
Consistencyの列挙を使用して、読取り操作の整合性を設定します。初期構成で、読取り操作用のデフォルトConsistencyを設定できます。これは、consistencyプロパティを使用してNoSQLClientインスタンスを作成するために使用されます。また、getメソッドのGetOpt引数にconsistencyプロパティを設定することで、単一の読取り操作でこれを変更することもできます。
//fetches single row with get API
async function getRow(handle,idVal) {
try {
const result = await handle.get(TABLE_NAME,{acct_Id: idVal });
console.log('Got row: %O', result.row);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
get
メソッドおよびその他のデータ関連メソッドに、行に関するオプションのtypeパラメータを指定することもできます。typeパラメータを使用すると、TypeScriptコンパイラで、返されたGetResult
メソッドにtypeヒントを提供でき、渡されたキーを型チェックできます。型チェック中に、コンパイラで、主キー・フィールドがテーブル・スキーマに含まれているかどうかと、主キー・フィールドの型が、許可されている型 (文字列、数値、日付、またはブール)であるかどうかが調査されます。こちらにあるサンプルの中からフル・コードQueryData.tsをダウンロードします。interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/*fetches single row with get API*/
async function getRow(handle: NoSQLClient,idVal: Integer) {
try {
const result = await handle.get<StreamInt>(TABLE_NAME,{acct_Id: idVal });
console.log('Got row: %O', result.row);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
GET APIを使用し、主キーを使用して単一のデータ行をフェッチします。GetAsync
メソッドを使用して単一行を読み取ることができます。このメソッドを使用すると、主キー値に基づいて行を取得できます。フィールド名は、表の主キー列名と同じである必要があります。オプションをGetOptions
として渡すこともできます。
Consistencyの列挙を使用して、読取り操作の整合性を設定できます。読取り操作のデフォルトの整合性は、NoSQLConfig
のConsistencyプロパティとして設定できます。GetOptions
のConsistencyプロパティを使用することで、単一のGet操作の整合性を変更することもできます。GetAsync
メソッドでは、Task<GetResult<RecordValue>>
が返されます。GetResult
インスタンスには、返された行、行バージョンおよびその他の情報が含まれています。指定された主キーを持つ行が表に存在しない場合、行プロパティとバージョン・プロパティの両方の値がnullになります。
private static async Task getRow(NoSQLClient client,String colName, int Id){
var result = await client.GetAsync(TableName,
new MapValue
{
[colName] =Id
});
if (result.Row != null){
Console.WriteLine("Got row: {0}\n", result.Row.ToJsonString());
}
else {
Console.WriteLine("Row with primaryKey {0} doesn't exist",colName);
}
}
ノート:
子表からデータをフェッチするには、TableName
パラメータで表のフルネーム(parent_tablename.child_tablename)を指定します。親子表からのデータのフェッチ方法を理解するには、こちらでサンプルの中からフル・コードTableJoins.csをダウンロードします。