3 unstable releases

Uses old Rust 2015

0.6.0 Sep 28, 2016
0.5.2 Aug 19, 2016
0.5.0 Jul 1, 2016

#315 in WebSocket

Custom license

21KB
594 lines

Sonicd Build Status

The problem

  • Implementing data analytics APIs against multiple underlying data sources often results in code bloat and tight coupling.
  • If you're using Akka Streams for stream processing, you are probably missing a data sourcing component (like Storm's Spouts).
  • ODBC/JDBC are antiquated and not designed for streaming large datasets.

The solution

Sonicd is a data streaming gateway that abstracts over data source connectors and provides a modern protocol to stream data over WebSockets or over plain TCP.

Supported Sources

  • PrestoSource: non-blocking streaming connector for Facebook's Presto.
  • ElasticSearchSource: non-blocking streaming connector for ElasticSearch
  • JdbcSource: JDBC connector for any database with a JDBC driver implementation (tested with Hive, Redshift, H2, MySQL, PostgreSQL).
  • ZuoraObjectQueryLanguageSource: Zuora's SOAP API ZOQL streaming connector.
  • LocalJsonStreamSource: stream changes in local JSON files.
  • KafkaSource: Apache Kafka connector with simple DSL to select/filter streams efficiently.
  • Composer: Combine in a single Sonic stream, any of the previous sources.

Deploy

Check server/src/main/resources/reference.conf for a config reference and docker run -d -v ${CONFIG_DIR}:/etc/sonicd:ro -p 9111:9111 -p 10001:10001 xarxa6/sonicd;. If intend to use the JDBC source, then you'll want to add JDBC drivers jars to the classpath:

docker run -d -p 9111:9111 -p 10001:10001 -v ${CONFIG_DIR}:/etc/sonicd/ -v ${JDBC_DRIVERS}:/var/lib/sonicd/ xarxa6/sonicd

Install CLI

Sonicd also provides a CLI to run ad hoc queries. If you have the rust toolchain installed already, then simply cargo install sonic, otherwise install rustup first with curl https://sh.rustup.rs -sSf | sh or check https://www.rustup.rs/.

Examples

Check examples folder. For an example in Rust check the cli.

Client libraries

Contribute

If you would like to contribute to the project, please fork the project, include your changes and submit a pull request back to the main repository.

License

MIT License

Dependencies

~10MB
~202K SLoC