feat(tvix/castore/directory): add bigtable backend

This adds a Directory service using
https://cloud.google.com/bigtable/docs/ as a K/V store.

Directory (closures) are put in individual keys.

We don't do any bucketed upload of directory closures (yet), as castore/
fs does query individually, does not request recursively (and buffers).
This will be addressed by store composition at some point.

Change-Id: I7fada45bf386a78b7ec93be38c5f03879a2a6e22
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11212
Tested-by: BuildkiteCI
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
Florian Klink 2024-03-19 12:12:03 +02:00 committed by clbot
parent 84ad8a0bbd
commit 17849c5c00
12 changed files with 2767 additions and 22 deletions

View file

@ -29,6 +29,15 @@ tracing = "0.1.37"
url = "2.4.0"
walkdir = "2.4.0"
zstd = "0.13.0"
serde = { version = "1.0.197", features = [ "derive" ] }
serde_with = "3.7.0"
serde_qs = "0.12.0"
[dependencies.bigtable_rs]
optional = true
# https://github.com/liufuyang/bigtable_rs/pull/72
git = "https://github.com/flokli/bigtable_rs"
rev = "0af404741dfc40eb9fa99cf4d4140a09c5c20df7"
[dependencies.fuse-backend-rs]
optional = true
@ -71,6 +80,7 @@ prost-build = "0.12.1"
tonic-build = "0.11.0"
[dev-dependencies]
async-process = "2.1.0"
rstest = "0.18.2"
tempfile = "3.3.0"
tokio-retry = "0.3.0"
@ -80,6 +90,7 @@ rstest_reuse = "0.6.0"
[features]
default = []
cloud = [
"dep:bigtable_rs",
"object_store/aws",
"object_store/azure",
"object_store/gcp",