如何异构数据库解决Partition后各种JOIN问题?

众所周知,一个数据库表partition后如果按照某一维度查询,需要跨多个库操作。例如:按orderID 做horizontal partition,需要查某userID的所有order时就要query多个库,一个库被删库跑路挂了的话操作就失败了。所以通常对数据库进行异构/denormalization避免跨多个库查询。那么上面这个例子如何设计异构机制?

你说的异构是什么意思?

异构相当于把冗余数据存到当前partition里。

另外除了异构,还有其他方法解决这个问题吗?

你自己也说了用denormalization,不就是存user的信息同时存他的orders (一个table中)。这样优化了读操作,写操作就得同步了。dynamodb自带这种机制,比如global secondary index。相当于又维护了用userid做partition key的cluster。

user有1000个order就把1000个orderID serialized存user table的一个column里?

其他方法呢?

NOSQL的解决方案一般就是 denormalization
你还需要什么fancy的解决方案吗?
或者你产生orderID的时候用userid做prefix

prefix似乎不错。。。

你如果是个全新系统的话可以这么搞