TL;DR: I'm really happy to announce my latest open-source project called Record-Store 🚀 Please check it out on https://pierrez.github.io/record-store.
🔗What?
Record-Store
is a layer running on top of FoundationDB. It provides abstractions to create, load and deletes customer-defined data called records
, which are hold into a RecordSpace
. We would like to have this kind of flow for developers:
- Opening RecordSpace, for example
prod/users
- Create a protobuf definition which will be used as schema
- Upsert schema
- Push records
- Query records
- delete records
You need another KeySpace
to store another type of data, or maybe a KeySpace
dedicated to production env? Juste create it and you are good to go!
🔗Features
It is currently an experiment, but it already has some strong features:
-
Multi-tenant A
tenant
can create as manyRecordSpace
as we want, and we can have manytenants
. -
Standard API We are exposing the record-store with standard technologies:
-
Scalable We are based on the same tech behind CloudKit called the Record Layer,
-
Transactional We are running on top of FoundationDB. FoundationDB gives you the power of ACID transactions in a distributed database.
-
Encrypted Data are encrypted by default.
-
Multi-model For each
RecordSpace
, you can define aschema
, which is in-fact only aProtobuf
definition. You need to store someusers
, or a more complicated structure? If you can represent it as Protobuf, you are good to go! -
Index-defined queries Your queries's capabilities are defined by the indexes you put on your schema.
-
Secured We are using Biscuit, a mix of
JWT
andMacaroons
to ensure auth{entication, orization}.
🔗Why?
Lately, I have been playing a lot with my ETCD-Layer that is using the Record-Layer. Thanks to it, I was able to bootstrap my ETCD-layer very quickly, but I was not using a tenth of the capacities of this library. So I decided to go deeper. What would a gRPC abstraction of the Record-Layer look like?
The name of this project itself is a tribute to the Record Layer as we are exposing the layer within a gRPC interface.
🔗Try it out
Record-Store is open sourced under Apache License V2 in https://github.com/PierreZ/record-store and the documentation can be found https://pierrez.github.io/record-store.
Thank you for reading my post! Feel free to react to this article, I am also available on Twitter if needed.