Large Groups

The subscription data model supports groups that contain both subscriptions and subgroups. To handle large groups consisting of 100 subscriptions or more, the SubMan APIs act on subscriptions and groups in configured sizes or chunks.

SubMan APIs

The SubMan API QuerySize parameter specifies the chunk size in the following APIs:
  • MtxRequestSubscriberQuery
  • MtxRequestGroupQuery
  • MtxRequestUserQuery
  • MtxRequestSubscriptionQuery
  • MtxRequestSubscriberQueryMembership
  • MtxRequestGroupQueryMembership
  • MtxRequestUserQueryMembership

The default QuerySize is 100 and the maximum QuerySize is 250. If you specify a QuerySize greater than 250, the MATRIXX Engine returns an error.

During a SubMan API query, a QueryCursor value, similar to a SQL database cursor, is returned for QuerySize=N. Subsequent queries should specify the returned QueryCursor value to return additional results. When there are no more entities to return, MATRIXX Engine returns a QueryCursor value of 0.

Important: If you do not specify the QuerySize parameter, the query returns a maximum of 100 results. If more than 100 entities match the query, only the first 100 results are returned with an error. If the number of entities that match the query is less than or equal to 100, the query successfully returns the requested information.

The QueryCursor does not expire, and member additions or deletions that occur during a query are usually captured in the query results. However, due to the dynamic nature of subscription and group membership, as the QueryCursor ages, query results may be less accurate (for example, if there are concurrent out-of-order commits during active queries). Also, the QueryCursor is query-specific. For example, if you use the QueryCursor returned for an MtxRequestSubscriberQuery with an MtxRequestGroupQuery, the query does not return any result.

Configuration

During system configuration, you must configure the following parameters that determine the maximum number of relationships between users and subscriptions, and users and groups:
  • MemberJoin
  • UserGroupJoin
  • UserSubscriptionJoin

These parameters must be proportionate to the number of possible relationships between groups and subscriptions. For example, if a group has 1,000 members, there must be 1,000 MemberJoin objects. If there are 10 groups, each with 1,000 members, there must be 10,000 (10 * 1,000) MemberJoin objects. To ensure that there are enough MemberJoin objects for all possible relationships, you should double the MemberJoin parameter value. For example, if there are 10 groups, each with 1,000 members, you should configure the MemberJoin parameter value to be 20,000 (10 * 1,000 * 2).

You can also specify the number of groups that you want to create: How many groups do you want to support?

The default number of groups is 1000.

Note: MATRIXX Engine supports up to 1,000,000 subscriptions per group.