ELEMENTIDCOMPUTE

ELEMENTIDCOMPUTE関数は、TimesTen Scaleoutのみでサポートされています。この関数は、分散キーが属している要素のIDを戻します。

SQL構文

ELEMENTIDCOMPUTE (Expression [,...])

パラメータ

ELEMENTIDCOMPUTEには、次のパラメータがあります。

パラメータ 説明

Expression

1つ以上の式。

説明

  • ELEMENTIDCOMPUTE SQL関数では、1つ以上の式を使用できます。この式のリストは、ハッシュ分散キーを表します。この関数によって戻される要素IDは、トランザクション内では固定されています。TimesTen Scaleoutのトポロジが変更されると、行が別の要素にマップされることで、特定の行の要素のIDが変化する場合があります。

  • この関数を使用すると、特定の分散キーが挿入される要素を予測できます。

  • ELEMENTIDCOMPUTEは、TT_INTEGERデータ型を戻します。

ノート:

K-safetyを2に設定した場合、ELEMENTIDCOMPUTEはレプリカ・セットのいずれかの要素のIDを戻します。戻される値は、データ行がローカル要素IDにマップされる場合でも、接続している要素IDでないことがあります。

これらの例では、ELEMENTIDCOMPUTE関数の使用方法を示します。

この例(最初の例)では、cust_id分散キーが属するレプリカ・セット内の1つの要素の要素IDを戻すために、ELEMENTIDCOMPUTE関数を呼び出します。また、この問合せによって、cust_id910から920customers表からcust_idlast_nameおよびfirst_name列も戻されます。

Command> SELECT ELEMENTIDCOMPUTE (cust_id), cust_id,last_name,first_name
         FROM customers WHERE cust_id BETWEEN 910 AND 920
         ORDER BY cust_id, last_name, first_name;
< 3, 910, Riley, Tessa >
< 1, 911, Riley, Rashad >
< 1, 912, Riley, Emma >
< 1, 913, Rivera, Erin >
< 1, 914, Roberts, Ava >
< 1, 915, Roberts, Lee >
< 3, 916, Roberts, Clint >
< 5, 917, Robertson, Faith >
< 3, 918, Robinson, Miguel >
< 3, 919, Robinson, Mozell >
< 5, 920, Rodgers, Darryl >
11 rows found.

この例(2番目の例)では、要素1と要素2は、同じレプリカ・セットに含まれています。この例は、要素1への接続とレプリカ(要素2)への2番目の接続を示しています。要素2に接続した場合、ELEMENTIDCOMPUTEから戻される値は、データ行が要素2にマップされる場合でも要素2ではありません。この例は、戻される値がアプリケーションの接続先の要素IDでない可能性があることを示しています。

Command> SELECT elementId# FROM dual;
< 1 >
1 row found.

Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers;
< 1, 1 >
< 1, 1 >
< 1, 1 >
< 1, 1 >
< 1, 1 >
5 rows found.

Command> SELECT elementId# FROM dual;
< 2 >
1 row found.

Command> SELECT FIRST 5 ELEMENTIDCOMPUTE (cust_id), elementid# FROM customers;
< 1, 2 >
< 1, 2 >
< 1, 2 >
< 1, 2 >
< 1, 2 >
5 rows found.

この例(3番目の例)は、ELEMENTIDCOMPUTE関数を使用して、データの特定の行が挿入される要素を予測する方法を示しています。customers表に、1から1000cust_id値があります。cust_id 10032000または2400が挿入される要素を予測します。たとえば、1003cust_id値は、customers表に挿入された場合、要素5を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 1003
< 5 >
1 row found.

2000cust_id値は、customers表に挿入された場合、要素3を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 2000
< 3 >
1 row found.

2400cust_id値は、customers表に挿入された場合、要素1を含むレプリカ・セットに格納されると予測されます。

Command> SELECT FIRST 1 ELEMENTIDCOMPUTE (CAST (? AS NUMBER)) FROM customers;
 
Type '?' for help on entering parameter values.
Type '*' to end prompting and abort the command.
Type '-' to leave the parameter unbound.
Type '/;' to leave the remaining parameters unbound and execute the command.
 
Enter Parameter 1 '_QMARK_1' (NUMBER) > 2400
< 1 >
1 row found.