Welcome to S-Store! S-Store is the world’s first streaming OLTP engine, which seeks to seemlessly combine online transactional processing with push-based stream processing for real-time applications. We accomplish this by designing our workloads as dataflow graphs of transactions, pushing the output of one transaction to the input of the next.
S-Store provides three fundamental guarantees, which together are found in no other system:
- ACID - All updates to state are accomplished within ACID transactions
- Ordering - S-Store executes on batches of data items, and ensures that batches are processed in an order consistent with their arrival.
- Exactly-once - All operations are performed on data items once and only once, even in the event of failure
S-Store is designed for a variety of streaming use cases that involve shared mutable state, including real-time data ingestion, heartrate waveform analysis, and bicycle sharing applications, to name a few. To learn more about applications, the transaction model, and design of S-Store, please read our publications at sstore.cs.brown.edu.
S-Store is built on top of H-Store, a distributed main-memory OLTP database. You can read more about H-Store here.
A simple example¶
S-Store comes with a number of benchmarks, including a simple streaming example meant to showcase the functionalities of S-Store. This benchmark, votersstoreexample, mimics an online voting competition in which the audience votes for their favorite contestant, a sliding window is generated of the current leaderboard, and periodically, based on who has the least votes in that moment, a contestant is removed from the running.
This workload can be broken down into three stored procedures: Vote (collect the audience’s votes), Generate Leaderboard (update the sliding window), and Delete Contestant (remove the lowest contestant every X votes).