# US 2017/0288939 A1 · Abstraction layer for streaming data sources

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0288939 A1
- Document ID: US20170288939A1
- Status: Published application
- Kind: A1
- Application number: 15/627,327
- Filed: 2017-06-19
- Published: 2017-10-05
- Earliest claimed: 2013-06-04
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Daniel Massaguer; Upendra Bhalchandra Shevade
- Web page: https://patentgrep.com/patent/US20170288939A1

## CPC

- H04L 65/65: Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
- G06F 16/24568: {Data stream processing; Continuous queries}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Methods and systems for implementing an abstraction layer for streaming data sources are disclosed. A request to perform an operation based on one or more keys is received using a key-value interface. A streaming data source is selected based on the request. The operation is performed using the streaming data source, wherein the operation comprises storing or retrieving one or more values based on the one or more keys.

## Claims

### Claim 1

A system, comprising:
one or more computing devices configured to implement a stream interface system, wherein the stream interface system is operable to:
receive a request from a client to interact with a key-value data store, wherein the request comprises a put request for a key or a get request for the key;
determine a streaming data source corresponding to the key-value data store in the request;
if the request comprises the put request, store a first value in the streaming data source using the key; and
if the request comprises the get request, retrieve a second value from the streaming data source using the key and send the second value to the client.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the get request is a continuous get request, and wherein the stream interface system is operable to:
retrieve a first set of one or more additional values from the streaming data source using the key;
return the first set of one or more additional values to the client;
after returning the first set of one or more additional values to the client, retrieve a second set of one or more additional values from the streaming data source using the key; and
return the second set of one or more additional values to the client.

### Claim 3 (depends on 1)

The system as recited in claim 1, wherein the request comprises a put request for a range of keys comprising the key or a get request for the range of keys comprising the key, and wherein the stream interface system is operable to:
if the request comprises the put request, store the first value and a first set of one or more additional values in the streaming data source using the range of keys; and
if the request comprises the get request, retrieve the second value and a second set of one or more additional values from the streaming data source using the range of keys and send the second value and the second set of one or more additional values to the client.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the stream interface system is operable to:
receive a second request from the client to interact with a second key-value data store, wherein the second request comprises a second put request for a second key or a second get request for the second key;
determine a non-streaming, non-relational data store corresponding to the second key-value data store in the second request;
if the second request comprises the second put request, store a third value in the non-streaming, non-relational data store using the second key; and
if the second request comprises the second get request, retrieve a fourth value from the non-streaming, non-relational data store using the second key and send the fourth value to the client.

### Claim 5

A computer-implemented method, comprising:
receiving a request to perform an operation based on one or more keys, wherein the request is received using a key-value interface;
selecting a streaming data source based on the request; and
performing the operation using the streaming data source, wherein the operation comprises storing or retrieving one or more values based on the one or more keys.

### Claim 6 (depends on 5)

The method as recited in claim 5, wherein the request comprises a put request based on the one or more keys, wherein the request comprises the one or more values associated with the one or more keys, and wherein the operation comprises storing the one or more values based on the one or more keys.

### Claim 7 (depends on 5)

The method as recited in claim 5, wherein the request comprises a get request based on the one or more keys, wherein the operation comprises retrieving the one or more values from the streaming data source based on the one or more keys, and wherein the method further comprises:
sending the one or more values retrieved from the streaming data source to a client.

### Claim 8 (depends on 5)

The method as recited in claim 5, wherein the request is a continuous request, and wherein performing the operation using the streaming data source comprises retrieving a plurality of values from the streaming data source based on the one or more keys over a period of time specified in the request.

### Claim 9 (depends on 5)

The method as recited in claim 5, wherein the one or more keys comprise a range of keys.

### Claim 10 (depends on 5)

The method as recited in claim 5, further comprising:
receiving a second request to perform a second operation based on a second set of one or more keys, wherein the second request is received using the key-value interface;
selecting a non-streaming, non-relational data store based on the second request; and
performing the second operation using the non-streaming, non-relational data store, wherein the second operation comprises storing or retrieving a second set of one or more values based on the second set of one or more keys.

### Claim 11

A computer-readable storage medium storing program instructions computer-executable to perform:
receiving a request from a client to perform an operation based on one or more keys, wherein the request is received using an abstraction layer for a plurality of heterogeneous data sources;
selecting one of the heterogeneous data sources based on the request; and
performing the operation using the selected data source, wherein the operation comprises storing or retrieving one or more values based on the one or more keys.

### Claim 12 (depends on 11)

The computer-readable storage medium as recited in claim 11, wherein the selected data source comprises a streaming data source that generates a stream of data.

### Claim 13 (depends on 11)

The computer-readable storage medium as recited in claim 11, wherein the selected data source comprises a non-streaming, non-relational data store.

### Claim 14 (depends on 11)

The computer-readable storage medium as recited in claim 11, wherein the request is a continuous request, and wherein performing the operation using the selected data source comprises retrieving a plurality of values from the selected data source based on the one or more keys over a period of time specified in the request.

### Claim 15 (depends on 11)

The computer-readable storage medium as recited in claim 11, wherein the program instructions are computer-executable to perform:
receiving a second request from the client to perform a second operation based on a second set of one or more keys, wherein the second request is received using the abstraction layer for the plurality of heterogeneous data sources;
selecting a second one of the heterogeneous data sources based on the request; and
performing the second operation using the second selected data source, wherein the second operation comprises storing or retrieving a second set of one or more values based on the second set of one or more keys.

### Claim at position 16

-20. (canceled)
