3.1.1.2 RecordSet

RecordSet: A collection of records accessed by way of an implementation-specific API. RecordSet is used on both the client and the server.

Each client maintains as many RecordSets as needed. RecordSets maintained in this fashion are unrelated to each other. Concurrency control ensures that changes to records are maintained in the correct order.

A RecordSet MUST maintain all of the properties of the data store specified in section 3.1.1.1. In addition, RecordSets MUST maintain the following elements:

  • Cache: A mechanism to maintain an in-memory cache of the snapshot of data from a data store.

  • Concurrency tracking: A mechanism to track original values along with changes so that database concurrency can be managed. This works with change tracking. For details, see section 3.1.1.2.2.

  • Hierarchal relationships: Manage multiple tables and maintain parent-child relationships between those tables.

  • Change tracking: A mechanism to track the updates to the RecordSet such that change, delete, and insert operations can be forwarded to the backend data store.

  • TableGram generation: A facility to encode the RecordSet's tables and records as a TableGram. For details, see section 2.2.3.14.

A RecordSet can be used in local cache-only mode where the data on the client is generated, processed, and thrown away. A RecordSet can also coordinate changes with a backend data store. In this mode, the dataset is filled from the data store, changes are made, and results are sent back to the data store.