SQL database Sharding

很多系统设计的时候都想用SQL database来支持join query或者transaction,但是数据量都很大所以需要sharding(并且每个节点都要master-slave replica)

  1. 可是如果sharding的话,还可以方便的做join query了吗? transaction也许可以,因为可以限定写的时候就在master,所以会在一台机器上,这样想对吗?
  2. 像MySQL, PostgreSQL这种都不natively支持sharding,所以在说SQL vs NoSQL的tradeoff的时候,是不是可以说SQL database需要自己integrate with proxy或者自己实现sharding?

谢谢老师!

  1. Sharded DB join 需要看情况,Cross Shard Inner Join 不推荐。Transaction 在一台 Master 上是没问题的。
  2. 是的,比如 ProxySQL 可以解决 MySQL Sharding 的问题,不需要自己实现。