Amazon DynamoDB

Types

The ARX types an application uses, grouped by what they are for. Each has its own page.

Services and connections

The service that talks to the database, and the connection, transaction and batch scope types that group calls.

Entities and values

A record, its id, and the values with a meaning of their own: a reference to another record, a selection set code, JSON, bytes, an attribute left out.

  • ArxEntityclassA record of one table: its name (EntityName), its attributes (column name to value) and, once written or read, its id (RecordId).
  • ArxEntityCollectionclassThe rows a RetrieveMultiple returns (Entities), whether another page follows (HasNextPage), and the total (TotalRecordCount) when the query asked for it.
  • ArxRecordIdclassThe id of one record: the value of its table's id column, of any declared id type.
  • ArxEntityReferenceclassA lookup: a reference to a record of another table, by that table's name and the record's id.
  • ArxSelectionSetValueclassA selection set (option set, picklist) value: the option's code, checked against the set named SetName in the developer's IArxSelectionSetCatalog and written in that set's storage form.
  • ArxJsonBclassA JSON value: written to a jsonb or json column as its SerializedValue text, and what those columns read back as.
  • ArxByteaclassBinary data for a binary column (Data): PostgreSQL bytea, SQL Server varbinary, MySQL BLOB or VARBINARY, a MongoDB binary, a DynamoDB B attribute.
  • ArxIgnoreclassAn attribute value meaning "leave this column out": Create and Update don't write an attribute set to new ArxIgnore().

The schema catalog

What the developer declares once: each table's id column, its business keys, lookups, display names, and the selection sets.

Preloading the schema

Reading the tables' ids, keys, lookups and column types from the database once, when the service is set up.

Finding the rows

How Update, Delete and Retrieve find their rows: by id, by a declared key, or by any columns.

Queries

RetrieveMultiple's query: what it reads from, which columns, the filters, the joins, the order, paging and aggregates.

  • ArxQueryExpressionclassA query for RetrieveMultiple: what to read from (Source: a table, view or function), the columns, the criteria (nested AND/OR), joins (LinkEntities), order, paging, distinct and aggregates.
  • ArxRowSourceclassWhat a query reads from: a table or view by name, or a function that returns rows, with its arguments.
  • ArxColumnSetclassThe columns a read returns: new ArxColumnSet("name", "email"), or All for all of them.
  • ArxFilterExpressionclassA group of conditions joined by And or Or (FilterOperator), with nested groups (Filters) for any mix of the two: a query's Criteria and a link entity's LinkCriteria.
  • ArxConditionExpressionclassOne condition: an attribute, an operator (ArxConditionOperator) and its values.
  • ArxConditionOperatorenumHow a condition compares its attribute with its values.
  • ArxLogicalOperatorenumHow a filter joins its conditions and nested filters: all of them (And) or any of them (Or).
  • ArxDateTimeConditionOptionclassA date and time condition value that says how to compare: the date only (the default) or the date and the time.
  • ArxDateTimeConditionOptionTypeenumWhether a date and time condition compares the date only or the date and the time.
  • ArxLinkEntityclassA join from a query's row source (or from another link) to another table: the column on each side, the join (JoinOperator), an alias, the columns it returns (read back as alias.column) and its own criteria.
  • ArxJoinOperatorenumThe join a link entity makes: Inner, Left or Right.
  • ArxOrderExpressionclassOne sort key of a query: an attribute, ascending or descending, of the main row source or of a joined entity (FromEntityAlias).
  • ArxOrderTypeenumAscending or descending.
  • ArxPagingInfoclassPaging for RetrieveMultiple: the page size (Count, 5,000 by default) and the 1-based page number.
  • ArxAggregateInfoclassAggregates and group by for RetrieveMultiple: each aggregate column has an alias, an attribute and an operator (ArxAggregateOperator); the group-by columns are listed apart.
  • ArxAggregateOperatorenumThe value an aggregate column computes: a count, the minimum, maximum, sum or average, a standard deviation or a variance.

Procedures and functions

Execute: a call to a stored procedure or function, its parameters and paging, and what comes back.

  • ArxProcedureExpressionclassA call to a routine the database owns: a stored procedure or a function, with its parameters, in the pattern of ArxQueryExpression.
  • ArxProcedureTypeenumWhat a routine is: PostgreSQL calls them differently (CALL against SELECT), so the caller says which.
  • ArxProcedureParameterclassOne parameter of a routine: by name or by position (Name null), with its value and, when needed, its type.
  • ArxProcedureParameterDirectionenumHow a parameter of a routine is passed.
  • ArxPagingParametersclassThe arguments of a routine that pages itself (way 1): ARX fills them from PageInfo, and reads the total from TotalRecordCount (an OUT parameter of a procedure, a result column of a function).
  • ArxExecuteOptionsclassOptions for one Execute call.
  • ArxExecuteResultclassWhat a routine returned: its OUT and INOUT values, its result sets (a procedure's tables, a function's rows) and the messages it sent.
  • ArxResultSetCollectionclassThe result sets of a call, in order, also by name (a cursor parameter's name, or the cursor's).
  • ArxDatabaseMessageclassA message a routine sent while it ran (PostgreSQL RAISE NOTICE, SQL Server PRINT, MySQL warnings), in the order sent.

Errors

What ARX throws: refused before the database, refused by it, or not supported; each with a stable code.

Routing, paging cookies and capabilities

Sending each tenant or key to its own service, the paging cookie format, and what a provider declares it can do.

Amazon DynamoDB's own types

What only Amazon DynamoDB has: its options and, where it has one, the model of its tables.

Other public types

The public types no group above lists: less common needs, extension points and interop.