What is rdbc?
rdbc is a SQL-level relational database access API targeting Scala and Java programming languages. The API is fully asynchronous and provides a possibility to leverage Reactive Streams' stream processing capabilities.
Following list outlines the goals of the API:
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.
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 a non-blocking application design. rdbc allows building applications according to the Reactive Manifesto by using Reactive Streams for asynchronous results streaming with a back-pressure.
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.
Following list outlines the areas that the API is not meant to cover.
Will not provide a full type-safety.
rdbc works on a SQL level, meaning that requests made to the database are strings. There is no additional layer that would ensure type-safety when working with SQL. The API is also meant to be dynamic and allow type converters to be registered at runtime. This approach sacrifices some type-safety but at the same time makes it possible to implement wider range of higher-level APIs on top of rdbc.
Both Scala and Java APIs are now complete. More feedback from the community is needed before releasing the first 1.0.0 milestone.
See also rdbc tag on StackOverflow.
rdbc is an open source software licensed under Apache License 2.0.