Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 3.79 KB

motivation.md

File metadata and controls

82 lines (63 loc) · 3.79 KB

Use Cases {#usage}

The following use cases can benefit from the multipart query service.

Simple Batch Query

The simplest use case is to query a batch of ALTO resources in a single request.

Although the ALTO client can perform ALTO requests for multiple times, it is not only inefficient but also inconsistent.

For example, the ALTO server provides a network map resource A and a dependent cost map resource B. Both resources may change frequently. Assume the ALTO client queries the network map first, and it gets the revision A1. When the client queries the cost map, the network map may be already changed from A1 to A2, and the client receives cost map B2 which depends on A2 not A1. So the responded cost map B2 is not consistent with the previous network map A1.

This case requires the ALTO server to provide a way for the ALTO client to query multiple ALTO resources in a single transaction.

Properties Constrained Query

Beyond the simple batch query, there are also some another use cases requiring a new service for relational query. For example, Some clients may need to query an endpoint property map first, and find endpoints with some properties fitting some conditions. And then they query the endpoint cost of these endpoints.

In this case, the endpoint cost query depends on the result of the property map query. Although the ALTO client can cache the whole property map in its local storage, it is still not efficient and may conduct the consistency issue if the property map changes frequently. So it requires a new service to provide multiple dependent resources efficiently and consistently.

A general multipart query service benefits the ALTO client in two aspects:

  • It allows the ALTO client to specify the boolean test to reduce the transmission of the useless data from the ALTO server.
  • It compounds multiple ALTO information resources in a single response to reduce the communication times. Thus, the transmission latency can be reduced.

Path Vector Query

Another use case requiring the multiple resource query is the relational query between the on-demand generated resources. A straightforward example is the path vector query demonstrated in {{I-D.ietf-alto-path-vector}}.

{{I-D.ietf-alto-path-vector}} introduces an extension of ALTO to provide path vector information by cost map and unified property map {{I-D.ietf-alto-unified-props-new}}. The client using path vector extension will usually query cost map and a dynamically generated property map sequentially. It is even hard to cache the full data of resources, because both the cost map and the property map are on-demand generated by the query input here. Thus, the only way to reduce the time consumption is to compound the two resources.

Requirements

From the use cases described in , there are three additional requirements for ALTO protocol:

MPQ-Req1: : The ALTO protocol SHOULD allow the client to query multiple ALTO resources in a single request, and return the result in a single response. : It is the basic requirement to provide the query for the compound resources. Even simple cases can benefit if this requirement is realized.

MPQ-Req2: : The ALTO protocol SHOULD provide general filter schema for any ALTO resources. : Current filter schema in ALTO protocol only supports the simple boolean test of numerical comparison. And the boolean filtered query is only supported by the cost map and the endpoint cost resource. It is not enough for the general cases. Even simple property map may require more general filter schema.

MPQ-Req3: : The ALTO protocol SHOULD support relational query for mulitple joint resources. : Some ALTO resources are relational and cannot be used individually. The path vector query is such an example. In these use cases, the support of relational query for multiple joint resources is very helpful.