Tablestore では、異なる操作を呼び出すことで、単一のデータ行の書き込み、単一のデータ行の更新、複数のデータ行の同時書き込みを行うことができます。データテーブルにデータを書き込むには、完全なプライマリキー情報と、追加、削除、または変更する属性列を指定する必要があります。高並列アプリケーションにデータを書き込む場合は、行存在条件または列ベースの条件を設定して、指定された条件に基づいてデータを更新できます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成とデータの書き込みを参照してください。
単一のデータ行の書き込み
API 操作
/**
* 特定の行にデータを挿入します。行が存在する場合、既存のデータは上書きされます。存在しない場合は、新しい行が追加されます。
*/
putRow(params, callback)
パラメーター
パラメーター | 説明 |
tableName | データテーブルの名前。 |
primaryKey | 行に関するプライマリキー情報。プライマリキー情報には、プライマリキー列の名前、タイプ、値が含まれます。 重要
|
condition | 操作を実行するために満たす必要がある条件。行存在条件または列値に基づく条件を指定できます。詳細については、条件付き更新の設定を参照してください。 説明
|
attributeColumns | 行の属性列。各属性列は、属性列名、属性列タイプ(オプション)、属性列値、タイムスタンプ(オプション)の順序でパラメーターによって指定されます。
|
returnContent | 戻り値のタイプ。 returnType: returnType パラメーターを TableStore.ReturnType.Primarykey に設定して、行のプライマリキーを返すことができます。このパラメーターは、自動インクリメントプライマリキー列機能で使用されます。 |
例
次のサンプルコードは、単一のデータ行を書き込む方法の例を示しています。
var TableStore = require('../index.js');
var Long = TableStore.Long;
var client = require('./client');
var currentTimeStamp = Date.now();
var params = {
tableName: "sampleTable",
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [{ 'gid': Long.fromNumber(20013) }, { 'uid': Long.fromNumber(20013) }],
attributeColumns: [
{ 'col1': 'Tablestore' },
{ 'col2': '2', 'timestamp': currentTimeStamp },
{ 'col3': 3.1 },
{ 'col4': -0.32 },
{ 'col5': Long.fromNumber(123456789) }
],
returnContent: { returnType: TableStore.ReturnType.Primarykey }
};
client.putRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
詳細なサンプルコードを表示するには、PutRow@GitHub にアクセスしてください。
単一のデータ行の更新
API 操作
/**
* 指定された行のデータを更新します。行が存在しない場合は、新しい行が追加されます。行が存在する場合は、リクエストコンテンツに基づいて、行の指定された列の値が追加、変更、または削除されます。
*/
updateRow(params, callback)
パラメーター
パラメーター | 説明 |
tableName | データテーブルの名前。 |
primaryKey | 行に関するプライマリキー情報。 重要 指定するプライマリキー列の数とタイプは、テーブル内のプライマリキー列の実際の数とタイプと同じである必要があります。 |
condition | 操作を実行するために満たす必要がある条件。行存在条件または列値に基づく条件を指定できます。詳細については、条件付き更新の設定を参照してください。 |
updateOfAttributeColumns | 更新する属性列。 |
例
次のサンプルコードは、単一のデータ行を更新する方法の例を示しています。
var TableStore = require('../index.js');
var Long = TableStore.Long;
var client = require('./client');
var params = {
tableName: "sampleTable",
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [{ 'gid': Long.fromNumber(9) }, { 'uid': Long.fromNumber(90) }],
updateOfAttributeColumns: [
{ 'PUT': [{ 'col4': Long.fromNumber(4) }, { 'col5': '5' }, { 'col6': Long.fromNumber(6) }] },
{ 'DELETE': [{ 'col1': Long.fromNumber(1496826473186) }] },
{ 'DELETE_ALL': ['col2'] }
]
};
client.updateRow(params,
function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
詳細なサンプルコードを表示するには、UpdateRow@GitHub にアクセスしてください。
複数のデータ行の同時書き込み
使用上の注意
BatchWriteRow 操作を呼び出して複数のデータ行を同時に書き込むと、一部の行の書き込みに失敗することがあります。この場合、Tablestore は例外を返しません。 Tablestore は、失敗した行のインデックスとエラーメッセージが含まれる BatchWriteRowResponse を返します。そのため、BatchWriteRow 操作を呼び出すときは、戻り値を確認してすべての行が書き込まれたかどうかを確認してください。戻り値を確認しないと、書き込みに失敗した行が無視される可能性があります。
BatchWriteRow 操作を呼び出して、最大 200 行の最大 4 MB のデータを同時に書き込むことができます。
API 操作
/**
// 複数のテーブルの複数のデータ行を追加、削除、または更新します。
*/
batchWriteRow(params, callback)
パラメーター
BatchWriteRow 操作は、複数の PutRow、UpdateRow、および DeleteRow 操作で構成されます。
テーブルの階層が作成されます。複数のテーブルを同時に処理できます。
tables パラメーターを設定して、書き込み、更新、または削除操作を実行するテーブルと行に関する情報を指定できます。
type パラメーターが追加され、異なる操作タイプが区別されます。
操作タイプを PUT、UPDATE、または DELETE に設定できます。
操作タイプを PUT または UPDATE に設定すると、primaryKey と attributeColumns が有効になります。
操作タイプを DELETE に設定すると、primaryKey が有効になります。
例
次のサンプルコードは、複数のデータ行を同時に書き込む方法の例を示しています。
var client = require('./client');
var TableStore = require('../index.js');
var Long = TableStore.Long;
var params = {
tables: [
{
tableName: 'sampleTable',
rows: [
{
type: 'UPDATE',
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [{ 'gid': Long.fromNumber(20010) }, { 'uid': Long.fromNumber(20010) }],
attributeColumns: [{ 'PUT': [{ 'col1': 'test3' }, { 'col2': 'test4' }] }],
returnContent: { returnType: 1 }
},
{
type: 'PUT',
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [{ 'gid': Long.fromNumber(20020) }, { 'uid': Long.fromNumber(20020) }],
attributeColumns: [{ 'col1': 'test1' }, { 'col2': 'test2' }],
returnContent: { returnType: TableStore.ReturnType.Primarykey }
},
{
type: 'DELETE',
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [{ 'gid': Long.fromNumber(20018) }, { 'uid': Long.fromNumber(20018) }],
}
]
}
],
};
client.batchWriteRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
詳細なサンプルコードを表示するには、BatchWriteRow@GitHub にアクセスしてください。
FAQ
参照
指定された条件に基づいて高並列アプリケーションのデータを更新するには、条件付き更新機能を使用できます。詳細については、条件付き更新の設定を参照してください。
さまざまなトピックのページビュー(PV)数など、オンラインアプリケーションに関するリアルタイム統計を収集するには、アトミックカウンター機能を使用できます。詳細については、アトミックカウンター機能の使用を参照してください。
1 つ以上のデータ行を書き込むためのアトミック操作を実行するには、ローカル トランザクション機能を使用できます。詳細については、ローカル トランザクションの設定を参照してください。
テーブルにデータを書き込んだ後、ビジネス要件に基づいてテーブル内のデータを読み取ったり削除したりできます。詳細については、データの読み取りとデータの削除を参照してください。