Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Temporal database stores full information in the payload ( CPS-192: Design data store for Temporal Service). 
  • It is a possibility that data stored for the different timestamps is the same, especially if the payload is used to filter data.

Query APIs 

Filtering Data

In CPS temporal, the data can be filtered based on three criteria

  • Datetime
    • Data in last X hours
    • Data after a particular DateTime ( epoch time in nanoseconds )
    • Data before a particular DateTime ( epoch time in nanoseconds )
    • Data at a particular time
    • Last X network data
  • DataTypes in CPS Core
    • Dataspace & schema-set

    • Dataspace & anchor
    • Dataspace & multiple anchors - To improve performance, if there is a need to fetch data for multiple anchors.
    • Dataspace
  • Payload
    • Based on a subsection or field in the payload. These criteria do need schema-set to be fixed to search in the same set of anchors

Adding payload filtering with DateTime criteria can make the query APIs complicated. Hence, we will implement the basic APIs first and will add complex ones when required.

Others Parameters
  • The query output can have many rows so it is important to limit the fetched data. To limit it and to add a pagination feature, we added below query parameters 
    • index 
    • maxSize
Proposed APIs

base-url: /cps-temporal/api/v1


NoAPI endpointDescriptionExample
1.
​<base-url>

GET /dataspaces/{dataspace-name}​/anchors/{anchor-name}​?after

=<epochtimeinnanoseconds>

=<epoch-time>&maxSize=1000

Return all the data entries for an anchor after the
specified epoch
specified epoch in nanoseconds
2.
​<base-url>
​GET /dataspaces/{dataspace-name}/schema-sets/{schema-set}?after=
<epochtimeinnanoseconds>
<epochtime>Return all the data entries based on provided schema-set after the specified epoch in nanoseconds.





Response
Code Block
{
  "header": {
    "next": "cps-temporal/api/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}?after=<epoch-time>&maxSize=1000&before=<epoch-time>",
    "dataspace" : "abcd",
    "schema-set": "ijkl"
  },
  "data": [
    {
      "timestamp": "1234567788889",
      "anchor-id": "pnf-name",
      "payload": {
        "status" : "UP",
        "key1" : "value1",
        "more-info": {
          "key2" : "value"
        }
      }
    }
  ]
}


Open Items

  1. Datetime format