GenStage

GenStage is a specification for exchanging events between producers and consumers. It also provides a mechanism to specify the computational flow between stages.

This project currently provides the following functionality:

The module names are marked as Experimental to avoid conflicts as they are meant to be included in future Elixir releases. In your code, you may add alias Experimental.{DynamicSupervisor, GenStage} to the top of your files and use the relative names from then on.

You can find examples on how to use the modules above in the examples directory:

Installation

GenStage requires Elixir v1.3.

  1. Add :gen_stage to your list of dependencies in mix.exs:

    def deps do

     [{:gen_stage, "~> 0.4"}]

    end

  2. Ensure :gen_stage is started before your application:

    def application do

     [applications: [:gen_stage]]

    end

Future research

Here is a list of potential topics to be explored by this project (in no particular order or guarantee):

Other research topics include the Titan (4), Naiad's Differential Dataflow engine (5) and Lasp (6).

Links

  1. https://cloud.google.com/blog/big-data/2016/05/why-apache-beam-a-google-perspective
  2. http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf
  3. http://www.vldb.org/pvldb/vol8/p702-tangwongsan.pdf
  4. http://asc.di.fct.unl.pt/~nmp/pubs/clouddp-2013.pdf
  5. http://research-srv.microsoft.com/pubs/176693/differentialdataflow.pdf
  6. https://lasp-lang.org/

License

Same as Elixir.