分布式数据库问题

时间:2016-06-06 20:30:53

标签: database distributed-transactions

当我们谈论分发数据库时,所有这些数据库必须具有相同的信息吗? 例如,想象表客户

select * from customers

此查询必须在任何数据库中返回相同的结果吗? 换句话说,所有用户必须存在于所有数据库中?例如"用户1"必须存在于所有数据库中?

现在想象一下表格主要细节,例如sale和sale_detail 如果你正在使用这个系统,那么就插入一个新的销售(销售及其细节)"是否必须在所有数据库中插入此新销售?

以及交易如何运作?或者sale-sale_details不一定要在所有数据库中?

分布式事务如何工作?

1 个答案:

答案 0 :(得分:0)

分布式数据库并不意味着数据被复制到所有服务器计算机。数据复制有点像拓扑。

分布式数据库意味着多台机器协同工作以存储和提供数据。他们如何做到这是另一回事。来自维基

  

分布式数据库是一种数据库,其中存储设备并非全部连接到公共处理单元(如CPU),而是由分布式数据库管理系统控制

您要问的是数据如何在分布式数据库中分发。

通常最常见的分发方法是Hashbased distribution。它针对值的每个hashkey计算ID值,并将其存储在其中一个节点中。是的,数据不存储在所有服务器中(因此分发)

Hash分发可确保数据在数据库服务器计算机或集群之间或多或少地均匀分布。

您可以通过首先了解服务器的所有不同节点一起工作来查找查询结果来回答您提供查询的其他问题。每个数据库服务器基本上在其自己的本地数据集上执行查询(记住数据未分发的数据)并回复给客户端。客户端API应该足够智能以累积结果或连接所有服务器以使返回的阅读器准确执行。