rdbc-io / rdbc

Asynchronous database access for Scala and Java

Website Github

Travis Codecov Maven Central Gitter license

What is rdbc?

rdbc is a SQL-level relational database connectivity API targeting Scala and Java programming languages. The API is fully asynchronous and provides a possibility to leverage Reactive Streams' stream processing capabilities.

Documentation

See the documentation at http://rdbc.io.

Goals

Following list outlines the goals of the API:

  1. Provide vendor neutral access to most commonly used database features.

    The API is meant to be vendor neutral in a sense that if clients stick to using only standard SQL features no vendor-specific code should be needed and database backends can be switched with no client code changes.

  2. Be asynchronous and reactive.

    All methods that can potentially perform I/O actions don't block the executing thread so the API fits well into non-blocking application design. rdbc allows building applications according to the Reactive Manifesto by using Reactive Streams for asynchronous streaming results with a back-pressure.

  3. Provide a foundation for higher-level APIs.

    rdbc is a rather low-level API enabling clients to use plain SQL queries and get results back. While it can be used directly it's also meant to provide a foundation for higher-level APIs like functional or object relational mapping libraries.