@Override
  public long beginTransaction(String signature) {
    // commit an empty snapshot to ChangeStore, and use the sequence of this empty snapshot as
    // TransactionId
    AppendFiles appendFiles = changeTable.newAppend();
    appendFiles.set(
        SnapshotSummary.TRANSACTION_BEGIN_SIGNATURE, signature == null ? "" : signature);
    appendFiles.commit();
    CreateSnapshotEvent createSnapshotEvent = (CreateSnapshotEvent) appendFiles.updateEvent();
    return createSnapshotEvent.sequenceNumber();
  }
Basic implementation of {@link KeyedTable}, wrapping a {@link BaseTable} and a {@link
ChangeTable}.
amoro-format-iceberg/src/main/java/org/apache/amoro/table/BasicKeyedTable.java