ステージングとコミット

アイテムの編集、作成、ステージした削除は、DynamoDB に触れる前にステージング エリアを通ります。安全ラッチ付きの git ステージングエリアだと考えてください: 変更が確認可能な差分として蓄積され、コミットしたときに初めて として送信されます。

設計上、ステージを飛ばす経路が 2 つあります。PartiQL の書き込み ステートメントは警告付きでテーブルに直接実行され、⌘⇧⌫ は選択した行を 削除して 1 ステップでコミットします。

仕組み

テーブルは独自のステージングエリアを持ち、そのテーブルのすべてのビューで 共有されます。アイテム編集を保存したり、行を作成したり、 削除したりすると、その変更が属性ごとの差分としてパネルに現れます — 追加・削除・ 変更された属性が並べて表示されます。グリッド内の該当する行は、操作ごとに 色付けされます:

  • — 新しいアイテム(作成)
  • オレンジ — 更新(変更されたセルがハイライト)
  • — 削除(取り消し線付き)

同じテーブルを 2 つのタブで開くと、両方が同じ保留中の変更を表示します。タブを 閉じて開き直しても、ステージは残っています。タブを閉じてもステージング済みの 変更が破棄されることは決してありません。

⌘⇧D でパネルを切り替えます。端をドラッグしてサイズを変更します。

保留中の DynamoDB 変更を属性ごとの差分カードとして表示する DynoTable のステージングパネル。行ごとおよびまとめてコミットが可能。
保留中の DynamoDB 変更を属性ごとの差分カードとして表示する DynoTable のステージングパネル。行ごとおよびまとめてコミットが可能。

変更の確認

各差分カードは、何が変わるかを正確に示します:

  • スカラーは旧 → 新を、赤/緑のハイライトでレンダリングします。
  • 長い文字列は、単語レベルのインライン差分を表示します。
  • Map と List は、整形された JSON としてレンダリングされます(v1 では属性全体)。

カードの属性ごとの Reject を使って、単一の属性を元の値に戻します。すべての 属性を Reject すると、変更全体が破棄されます。

コミット

コミットして、ステージング済みの変更を DynamoDB に書き込みます:

  • Commit N は、そのテーブルのステージング済み変更を — そのすべてのタブに またがって — すべて送信します。
  • Commit just this はカードから単一の変更を送信します。

コミットは、楽観的ロックの条件付きで TransactWriteItems バッチとして 送信されます: 更新は、属性が開始時の値をまだ保持している場合にのみ成功し、 作成は、アイテムがまだ存在しない場合にのみ成功し、削除は、アイテムがまだ 存在する場合にのみ成功します。同じ UpdateExpression と ConditionExpression の形は、 ステージングパネルの外で確認したい場合、このサイトの 式ビルダーでも組み立てられます。大きなステージは、 DynamoDB のトランザクション制限内に収まるよう自動的にチャンク分割されます。

エディタの保存ショートカットはここでも適用されます:

  • ⌘S — ステージング(コミットなし)
  • ⌘⇧S — 保存してコミット
  • ⌘⇧X — ステージング済み変更をすべて破棄(確認あり)

グリッドの選択から、エディタを開かずに削除をステージングできます:

  • ⌘⌫ — 選択した行の削除をステージング
  • ⌘⇧⌫ — 選択した行を削除してコミット

競合

コミットは楽観的ロックを使うため、あなたがステージングした後に他の誰かが コミットした変更は、静かに上書きされるのではなく検出されます。カードには インラインのバナーが表示されます:

  • Drift — リモートのアイテムがあなたの下で変わりました。Rebase onto remote でベースラインを更新して再確認するか、変更を Abort します。
  • Remote deleted — アイテムはもう存在しません。変更を Abort します。
  • Network unavailable — コミットが DynamoDB に到達できませんでした。 Retry するか abort します。

コミットは最初に失敗したバッチで停止します — それ以前の成功したバッチは 書き込まれたまま残り、残りは試行されず、失敗は解決すべき競合として表示されます。

コミットをブロックするもの

編集、ステージング、コミットのいずれにも、Trialing または Active の ライセンスが必要です。の状態は、 コミットだけでなくこの経路全体をブロックします — アプリが有効な状態に戻ると、 再びロック解除されます。

更新日