Not sure I would have opted for Bigtable here over sharded PostgreSQL because it unduly limits flexibility but within this constrained use case it works fine. The big thing to remember which is covered by this article is your only real performant option to return multiple rows for BT is range scans so your keys should be setup to support this. If you need more than 1 index you are essentially shit out of luck - hence…
Breaking Through Scaling Barriers with Bigtable
11–20 of 21 posts
Re: Breaking Through Scaling Barriers with Bigtable
#12I would never build anything critical on Google's services.
Re: Breaking Through Scaling Barriers with Bigtable
#13Re: Breaking Through Scaling Barriers with Bigtable
#14Just out of curiosity, did you evaluate options like yugabyte db ?
One of our constraints that Bigtable met for us is native GCP support. I do see Yugabyte has a GCP provider though.
Re: Breaking Through Scaling Barriers with Bigtable
#15Surprised they didn't mention Cloud Spanner at all.
Re: Breaking Through Scaling Barriers with Bigtable
#16Earlier quoted context omitted.
To be honest, it never even made it onto our radar, not for any particular reason though :) IIRC, Spanner relies on precise timing to make certain guarantees, which is definitely relevant to our use case. I wonder how its write performance would stack up against Postgres and Bigtable.
Why would it matter how they do it under the covers? You see correct transactions. The interesting tech in this space is aws redshift, in my testing a few years ago they dominated in price performance when you used the then new node types.
It doesn't really matter, I suppose I just got nerd-sniped recalling the details of Spanner's internals and their (somewhat superficial) relevance to the issues of timekeeping mentioned in the blog post :)
Re: Breaking Through Scaling Barriers with Bigtable
#17Not sure I would have opted for Bigtable here over sharded PostgreSQL because it unduly limits flexibility but within this constrained use case it works fine. The big thing to remember which is covered by this article is your only real performant option to return multiple rows for BT is range scans so your keys should be setup to support this. If you need more than 1 index you are essentially shit out of luck - hence…
Re: Breaking Through Scaling Barriers with Bigtable
#18I’d be curious to know if cockroachdb was evaluated as a potential candidate. The various literature bits I’ve read seem to indicate its whole reason for existence is to solve these kinds of problems at scale while still providing some semblance of ACID compliance.
So it might help with inserts but would struggle with larger queries.
Re: Breaking Through Scaling Barriers with Bigtable
#19Not sure I would have opted for Bigtable here over sharded PostgreSQL because it unduly limits flexibility but within this constrained use case it works fine. The big thing to remember which is covered by this article is your only real performant option to return multiple rows for BT is range scans so your keys should be setup to support this. If you need more than 1 index you are essentially shit out of luck - hence…
We did consider sharding PostgreSQL and opted for something that would be fully managed for us to minimize our management overhead. Managing sharded databases can be complicated business and that wasn't something we wanted to take on if we could avoid it.
Re: Breaking Through Scaling Barriers with Bigtable
#20Not sure I would have opted for Bigtable here over sharded PostgreSQL because it unduly limits flexibility but within this constrained use case it works fine. The big thing to remember which is covered by this article is your only real performant option to return multiple rows for BT is range scans so your keys should be setup to support this. If you need more than 1 index you are essentially shit out of luck - hence…
Good points - sharded Postgres is more likely to be a better choice in most instances. I wouldn't be surprised even if sharded Postgres would have worked well for us, but as you mentioned, for this constrained use case, Bigtable works fine.
Would you use chain replication or a hash ring?