nebulex icon indicating copy to clipboard operation
nebulex copied to clipboard

Nebulex v3 Roadmap

Open cabol opened this issue 2 years ago • 0 comments

Nebulex v3 Roadmap

v3.0.0-rc.0

  • [x] Ok/Error tuple Cache API
  • [x] Remove adapter implementations from Nebulex since they will be moved to separate repositories. Nebulex repo will only keep the generics, like the APIs, annotations, overall utilities, etc.
  • [x] All cache commands optionally support passing the wanted dynamic cache (name or PID) as the first argument to directly interact with a cache instance (additional to c:get_dynamic_cache/0 c:put_dynamic_cache/1, c:with_dynamic_cache/2).
  • [x] Deprecate Nebulex.Adapter.Stats behaviour in favor of Nebulex.Adapter.Info. Instead of having a behaviour that only returns cache stats, the idea is to have a more generic or broader behaviour Nebulex.Adapter.Info to return stats and more information about the cache, such as consumed memory, etc.
  • [x] Deprecate Nebulex.Adapter.Persistence behaviour. The current implementation only supports dumping the cache entries into a local file. It is quite a limited approach. Persistence can be implemented in many different ways depending on the use case. A persistence API with a specific implementation may not be very useful because it won't cover all possible use cases. For example, if your application is on AWS, perhaps it makes more sense to use S3 as persistent storage, not the local file system. Since Nebulex v3, persistence is an add-on that should be provided by the backend (e.g., Redis), another library, or the application itself. And it should be configured via the adapter's configuration (or maybe directly with the backend).
  • [x] Support dynamic cache in decorators.
  • [x] Evaluate the :cache option for decorated functions in runtime.
  • [x] Telemetry events for cache commands out-of-box.
  • [x] Unify all and get_all into one single callback get_all. The callback get_all will belong to the Query API and will support the predefined query {:in, keys} for getting multiple keys simultaneously.
  • [x] New option/flag :bypass_mode to bypass the cache while running tests.
  • [x] Fix possible inconsistencies on caching decorators when using references (reported in #215).
  • [ ] Review and fix the guides to ensure they are consistent with the v3 changes.
  • [ ] Review and fix the docs, ensuring proper grammar, no typos, mistakes, inconsistencies, etc.

Adapters

  • [x] Move the Nebulex.Adapters.Local adapter to a separate repository supporting the API v3.
  • [x] Move the Nebulex.Adapters.Partitioned adapter to a separate repository supporting the API v3.
  • [x] Move the Nebulex.Adapters.Multilevel adapter to a separate repository supporting the API v3.
  • [ ] Migrate nebulex_redis_adapter to v3.
  • [ ] Migrate nebulex_adapters_cachex to v3.

v3.0.0-rc.1

  • [ ] Implement nebulex_mnesia adapter. This new adapter will cover several use cases as well as distributed cache topologies. With Mnesia, it will be possible to have a local cache and a distributed cache with replication (and fragmentation). Maybe deprecate Nebulex.Adapters.Replicated adapter.

WIP - See branch v3.0.0-dev

cabol avatar Feb 05 '23 11:02 cabol