feat: add ashcubdb announcement.
This commit is contained in:
parent
a040413132
commit
a2c312be4e
2 changed files with 53 additions and 0 deletions
BIN
content/blog/announcing-ash-cubdb/cub.jpg
Normal file
BIN
content/blog/announcing-ash-cubdb/cub.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 90 KiB |
53
content/blog/announcing-ash-cubdb/index.md
Normal file
53
content/blog/announcing-ash-cubdb/index.md
Normal file
|
@ -0,0 +1,53 @@
|
|||
+++
|
||||
title = "Announcing AshCubDB"
|
||||
date = "2023-10-02"
|
||||
|
||||
[taxonomies]
|
||||
tags = ["elixir", "ash", "library", "database", "embedded"]
|
||||
|
||||
[extra]
|
||||
cover_image = "cub.jpg"
|
||||
+++
|
||||
|
||||
I'm happy to announce the first (useful) release of
|
||||
[AshCubDB](https://hex.pm/packages/ash_cubdb) an Ash data layer which allows you
|
||||
to back your Ash resources with [CubDB](https://hex.pm/packages/cubdb).
|
||||
|
||||
## CubDB
|
||||
|
||||
From [the CubDB documentation](https://hexdocs.pm/cubdb/readme.html):
|
||||
|
||||
> CubDB is an embedded key-value database for the Elixir language. It is
|
||||
> designed for robustness, and for minimal need of resources.
|
||||
|
||||
CubDB is an impressive piece of engineering which is widely used by folks
|
||||
working on [Nerves](https://nerves-project.org/) projects. I only learned about
|
||||
it earlier this year, but I've been itching to play with it since.
|
||||
|
||||
It supports ACID transactions, concurrent reads and writes and is generally
|
||||
resistant to data corruption during unexpected shutdowns or crashes.
|
||||
|
||||
## Status
|
||||
|
||||
`AshCubDB` does not support, not is it currently aiming to support all the many
|
||||
many features of other Ash data layers. It does support the basic CRUD
|
||||
operations and filtering. You can use it today.
|
||||
|
||||
There are a few things that I haven't nailed down:
|
||||
|
||||
1. How to handle "migrations" when the attributes of a resource change and thus
|
||||
the existing records are now invalid?
|
||||
2. How to handle transactions. CubDB essentially switches to a unit-of-work
|
||||
style structure when in a transaction, with a different API (`CubDB.Tx`).
|
||||
3. Should we dynamically start the CubDB processes when we need them (the
|
||||
current solution) or require that apps start them in their own supervision
|
||||
tree?
|
||||
|
||||
## Links
|
||||
|
||||
- [code.harton.nz/james/ash_cubdb](https://code.harton.nz/james/ash_cubdb)
|
||||
- [github.com/jimsynz/ash_cubdb](https://github.com/jimsynz/ash_cubdb)
|
||||
- [hex.pm/packages/ash_cubdb](https://hex.pm/packages/ash_cubdb)
|
||||
- [hexdocs.pm/ash_cubdb/readme.html](https://hexdocs.pm/ash_cubdb/readme.html)
|
||||
- [ash-hq.com](https://ash-hq.com)
|
||||
- [Ash Discord](https://discord.gg/NnkhUmkv)
|
Loading…
Reference in a new issue