Why is Protobuf a bad choice for a distributed database wire protocol?<p>I understand it's a popular choice for service development through the use gRPC, Twirp, etc. I assume there are good performance reasons why Protobuf is not used in database node-to-node communication, but I'm curious to know what they are.<p>As an aside, if I don't want to commit to one protocol like Postgres or MySQL or Memcached, is there an extensible wire protocol out there that can accommodate these different protocols under one umbrella? I'm considering generically pre-pending each frame with a set of bits to identify which protocol the frame uses. This seems like something that's probably already been solved, and I'm just not aware of it. Does anyone have any ideas?
So, a lot would depend on what you plan on passing the protobufs over. Plain TCP? gRPC? gRPC kinda sucks for this, the serialization/deserialization can be moderately expensive (CPU); and gRPC's multiplexing of multiple flows onto the same connection can be hard to reason about (i.e. debug); and the performance characteristics are not great either.