A sharded, caching, pooling, evented Object-Relational Mapper (ORM) for Erlang applications.
BossDB is an Object-Relational Mapper (ORM) for Erlang that provides a sharded, caching, pooling, and evented interface to multiple databases. It solves the problem of verbose data access in Erlang by automatically generating field accessor functions and supporting complex queries, associations, and real-time notifications. It integrates with databases like PostgreSQL, MySQL, MongoDB, and others through a pluggable adapter system.
Erlang developers building database-backed applications that require scalability, real-time features, or integration with multiple database backends. It's particularly useful for projects needing advanced ORM features like caching, sharding, and event-driven architectures within the Erlang/OTP ecosystem.
Developers choose BossDB for its comprehensive feature set tailored to Erlang's concurrency model, including automatic caching with invalidation, connection pooling, and real-time event notifications via BossNews. Its support for multiple databases and legacy system integration reduces boilerplate and simplifies data layer development compared to manual database handling.
BossDB: a sharded, caching, pooling, evented ORM for Erlang
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates Erlang functions for model field access automatically, as shown with the puppy:name() example, eliminating boilerplate proplist or dict lookups.
Supports adapters for various databases like PostgreSQL, MySQL, MongoDB, and even DynamoDB, allowing integration into diverse tech stacks without rewriting queries.
Provides automatic caching via Memcached, Redis, or ETS, with cache invalidation handled by BossNews events, reducing manual cache management overhead.
BossNews enables asynchronous notifications for data changes (e.g., puppy-*.name watches), facilitating real-time features without blocking save operations.
BossNews must be started for caching and events, adding complexity even if not needed, and the README admits it 'will be optional one day.'
Requires separate configuration and startup of boss_db, boss_cache, and boss_news with numerous options, which can be daunting for quick projects.
Only supports vertical sharding via db_shards config, lacking built-in horizontal sharding for scaling across multiple database instances in distributed systems.
Tied closely to Erlang's parameterized modules and OTP, making it less suitable for mixed-language environments or teams unfamiliar with Erlang idioms.