What is BEDEX
BEDEX (Bayes Esports Data EXchange) is a digital data exchange platform. It provides means for data providers to list and advertise access to streams of data, and allows interested data consumers to purchase access to these streams.
The data provider (the seller) creates offers on the platform for the available data streams. The data consumer (the buyer) signs a contract for the purchase of a data stream or several data streams. Customers can act as both data consumers and data providers by purchasing a data stream, processing it, and providing a new stream. A simple example: a data provider from the United States is streaming temperature values in Fahrenheit; a data consumer in Europe consumes these temperatures, converts them to Celsius and provides them in a new stream.
When a data provider pushes data for a specific stream, it is transmitted to all data consumers with a contract for this stream. Such a distribution platform is highly scalable and remains convenient for all users: the data providers can reach all their customers publishing each stream just once and the data consumers get access to different data streams by integrating with a single system.
The data within any stream on BEDEX has a uniform message structure, with the payload
field holding the actual data from the provider. This eliminates the overhead of integrating with a new message structure for each new stream, while allowing to carry any type of data. The logic of parsing metadata and detecting errors, such as missed or incorrectly structured messages, only has to be written once.
Terminology
Data Provider: A customer of BEDEX who wishes to sell data streams on the platform.
Data Consumer: A customer of BEDEX who wishes to purchase data streams on the platform.
Offer: An advertised proposal by a Data Provider for a specifically defined set of data streams, along with a variety of conditions associated with providing it.
Contract: An agreement based on an offer between a Data Consumer and a Data Provider to acquire access to one or several data streams for a specified (or derivable) price.
Message: A single communication unit of a data stream.
Stream: An ordered and related list of messages, sharing a common stream-path.
Stream-path: A string that identifies and signifies the messages belonging to a single stream. Stream-paths are unique within one provider. Stream-path example:
/esports/lol/riot/riot/lcs-summer-2022/
.
Transport Technology
Overview
BEDEX uses RabbitMQ open-source message broker for external data communication. RabbitMQ is a mature and widespread technology with excellent support in any modern programming language. Consumers won’t miss the messages if they are disconnected for short periods (for example during code deployment, or a brief network outage), while configured TTL makes sure that unattended queues won’t waste system resources.
For a Data Provider
Each data provider receives an exchange to which they can publish their messages. These messages must follow DataProviderMessage
format (see below).
For a Data Consumer
Depending on the routing configuration (see Custom Routing below), a data consumer will connect to one or more queues to receive their data. A customer can decide, whether they want to connect multiple RabbitMQ consumers, or one, that is receiving from multiple queues. A customer should expect all received messages to follow the DataProviderMessage
format.
DataProviderMessage
All messages transported via BEDEX must comply with a valid DataProviderMessage
format. This format consists of the following fields:
field | type | description |
---|---|---|
version | String | The version of DataProviderMessage structure (current is 1.0 ) |
path | String | An identifier for the stream-path |
seqIdx | Long | An incrementally increasing message counter (for the specific path) |
timeSent | Instant | The time message was sent to BEDEX |
payload | Object | Customer’s defined data payload. Must be a UTF-8 encoded string |
Custom Routing
Data consumers can configure custom queue routing to specify which contracts feed into which queues. This is an advanced feature that, if not enabled, will lead to all messages for a data consumer being put into a single outbox queue (which for some customers is what they want).
For customized routing please contact a sales or support representative who will ensure this is configured correctly for you.
Training Wheels
For live data consumers that are integrating with our system for the first time, we offer a feature called training wheels. It is a sample message stream that serves data from historic matches periodically (for example, every 30 minutes). Training wheels contract may be enabled free of charge to help you test your integration logic.
Please contact a sales or support representative, who will create the contract and ensure it is configured correctly for you.
Analytics & Metrics
We gather anonymized statistics (number of messages, payload size, transport latency, message match-rates) for various use-cases:
- consumer frequency tracking for providers to see how many customers are acquiring their data stream
- producer frequency tracking for consumers to see where their stream-data is coming from
- provider-consumer tuples
- popular data streams
At no point do we inspect or data-mine the payloads of any data streams beyond the overall message size and the non-payload fields defined in the Data Provider Message definition.
Support
For additional information and support, please mail us at support@bayesesports.com.