Each database has a set of . The set of object stores can be changed, but only using an , i.e. in response to an event. When a new database is created it doesn’t contain any object stores.

    An has a list of records which hold the data stored in the object store. Each record consists of a key and a . The list is sorted according to key in ascending order. There can never be multiple records in a given object store with the same key.

    An has a name, which is a name. At any one time, the name is unique within the to which it belongs.

    An object store optionally has a .

    An object store can derive a key for a from one of three sources:

    2.2.1. Object Store Handle

    Script does not interact with object stores directly. Instead, within a , script has indirect access via an object store handle.

    An object store handle has an associated object store and an associated transaction. Multiple handles may be associated with the same in different transactions, but there must be only one associated with a particular object store within a .

    An object store handle has a name, which is initialized to the of the associated object store when the is created. The name will remain constant except when an upgrade transaction is running.