# Learning Resources

This documents contains a list of papers articles etc. that are useful for understanding the design of Flux.

## Stream Processing

* Set of articles by Tyler Akidau on building stream processing engines with correctness guarantees.
    https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101
    https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
* Published paper by Tyler AKidau on building stream processing engines with correctness guarantees.
    http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf
* Paper from UC Berkley introducing Spark and RDDs
    https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf
* A summary of the different data APIs in Spark
    https://databricks.com/blog/2016/07/14/a-tale-of-three-apache-spark-apis-rdds-dataframes-and-datasets.html

## Map Reduce

 * Google research paper on Dremel
     https://research.google.com/pubs/pub36632.html


## DataFrames

* Good overview on various sparse matrix implementations. https://en.wikipedia.org/wiki/Sparse_matrix


## Query Optimization

* Volcano Optimizer Generator
    https://pdfs.semanticscholar.org/a817/a3e74d1663d9eb35b4baf3161ab16f57df85.pdf
* The Cascades Framework for Query Optimization
    http://db.informatik.uni-mannheim.de/downloads/hauptstudium/seminare/papers/Cascades_01.PDF
* Chapter 7: Query Optimization
    From Readings in Database Systems, 5th Edition (2015)
    http://www.redbook.io/pdf/ch7-queryoptimization.pdf
    This chaper references various other valuable readings.
* Cost-based Optimization in Parallel Data Frameworks
    https://www.cse.iitb.ac.in/~pararth09/btp/report.pdf
