MATRIXX Data Containers
MATRIXX Data Containers (MDCs) are the fundamental data structures used by MATRIXX. They hold objects in the in-memory databases and carry messages through the system. The messages are for incoming network events, subscriber care activities, pricing updates, and any activity that must be handled transactionally.
MDCs are organized hierarchically and are optimized for flexibility and performance. MATRIXX Engine uses them for all operations it performs. When a message is received from the network, a MATRIXX gateway translates the needed protocol fields, maps them to MATRIXX data fields, and sets the field values in the appropriate MDC. As the MDC is passed from process to process, other field values that were not present in the network message are also set appropriately. These fields contain information only required for transaction processing. Any fields not required by a service provider, for example fields for a network protocol that are not used, can be commented out to speed processing. The information is passed between the processes that manipulate the data and between the database objects that are updated.
The MDC implementation allows for fields from the network message, the device, subscriber, and group objects to be used as rating parameters and supports the addition of new MDCs and new MDC fields.
- The key value is used to look up the MDC during transaction processing and the prefix is used to identify the data container as either a system MATRIXX data container or a private customer data container. The key values are positive integers for system MDCs and negative integers for custom MDCs. This guards data collisions during processing.
- The prefix for system MDCs is
Mtx
and the prefix for custom MDCs (also called private MDCs) is a three-letter naming convention that identifies the MDC as belonging to the company for which it was implemented. For example, the system MATRIXX device MDC is named MtxDeviceObject and has a key value of 21. A company named "LTD" can extend the system device MDC with a private device MDC that has a name LtdDeviceObject and a key value of -21. The LtdDeviceObject MDC is linked to the system MtxDeviceObject MDC and inherits all fields from it.
MDCs and MDC fields are also identified by a schema version, which represents a snapshot in time. One is provided for system MDCs and one must be
added by service providers for custom MDCs. The MATRIXX schema version is an unsigned 16-bit number that represents a software release, for example 5290
. Every MDC and
MDC field has a created schema version to identify when it was added to the schema. If it was removed from the schema, it also has a deleted schema version. An engine with an older
MATRIXX schema version does not start if an engine with a later version is already running.
A service provider schema version represents a version of a customer-defined MDC or MDC field. Each MDC has its own schema version that must be
incremented each time one or more MDCs have changed. The first version number that can be assigned to a custom MDC or MDC field is 2
. MATRIXX uses 0 and 1 internally
to cause the system to always use the latest version of an MDC (0
) and that an MDC has no service provider information (1
). When you add an MDC or
field to the schema, the create_config.py script prompts you to enter a created schema version and when you remove an MDC or field, the script prompts you to enter a
deleted schema version. The system uses these values to ensure schema compatibility when a client application is using a different schema version than the engine is running.
Each MDC header has the schema version for the MDC fields. One schema version has the highest schema version of any MATRIXX field in the MDC, the other stores the highest schema version of any Service Provider field in the MDC.
For more information about the MATRIXX provided System MDC Definitions file, see the discussion about MATRIXX system MDC definitions in MATRIXX Integration.