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
tenantcan create as manyRecordSpaceas 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 aProtobufdefinition. 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
JWTandMacaroonsto 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.