diff --git a/storage-bigtable/README.md b/storage-bigtable/README.md new file mode 100644 index 000000000..66914bf2a --- /dev/null +++ b/storage-bigtable/README.md @@ -0,0 +1,22 @@ + +## BigTable Setup + +### Development Environment +The Cloud BigTable emulator can be used during development/test. See +https://cloud.google.com/bigtable/docs/emulator for general setup information. + +Process: +1. Run `gcloud beta emulators bigtable start` in the background +2. Run `$(gcloud beta emulators bigtable env-init)` to establish the `BIGTABLE_EMULATOR_HOST` environment variable +3. Run `./init-bigtable.sh` to configure the emulator +4. Develop/test + +### Production Environment +Export a standard `GOOGLE_APPLICATION_CREDENTIALS` environment variable to your +service account credentials. The project should contain a BigTable instance +called `solana-ledger` that has been initialized by running the `./init-bigtable.sh` script. + +Depending on what operation mode is required, either the +`https://www.googleapis.com/auth/bigtable.data` or +`https://www.googleapis.com/auth/bigtable.data.readonly` OAuth scope will be +requested using the provided credentials. diff --git a/storage-bigtable/init-bigtable.sh b/storage-bigtable/init-bigtable.sh new file mode 100755 index 000000000..3b988e2ef --- /dev/null +++ b/storage-bigtable/init-bigtable.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# +# Configures a BigTable instance with the expected tables +# + +set -e + +instance=solana-ledger + +cbt=( + cbt + -instance + "$instance" +) +if [[ -n $BIGTABLE_EMULATOR_HOST ]]; then + cbt+=(-project emulator) +fi + +for table in blocks tx tx-by-addr; do + ( + set -x + "${cbt[@]}" createtable $table + "${cbt[@]}" createfamily $table x + "${cbt[@]}" setgcpolicy $table x maxversions=1 + "${cbt[@]}" setgcpolicy $table x maxage=360d + ) +done