分布式数据库问题
Distributed Databases questions
当我们谈论分布式数据库时,它们必须具有相同的信息吗?
例如想象 table 客户
select * from customers
此查询必须 return 在任何数据库中得到相同的结果?
换句话说,所有用户都必须存在于所有数据库中?例如 "user 1" 必须存在于所有数据库中吗?
现在想象一个 table 主从,例如销售和 sale_detail
如果您正在使用该系统并且必须 "insert a new sales (sale and its details)" 将此新销售插入所有数据库?
这里的交易是如何运作的?或 sale-sale_details 不必在所有数据库中?
分布式事务如何工作?
分布式数据库并不意味着数据被复制到所有服务器机器上。数据复制有点像拓扑结构。
分布式数据库的意思是多台机器协同工作来存储和提供数据。他们是如何做到的是另一回事。来自维基
A distributed database is a database in which storage devices are not all attached to a common processing unit such as the CPU and which is controlled by a distributed database management system
你问的是数据在分布式数据库中是如何分布的。
通常最常见的分配方式是Hashbased distribution
。它根据值的每个 key
或 ID
计算一个 hash
值,并将其存储在其中一个节点中。是的,数据并未存储在所有服务器中(因此分布)
Hash
分布确保数据或多或少均匀地分布在数据库服务器机器或集群中。
您的另一个问题是如何提供查询可以通过首先了解服务器的所有这些不同节点一起工作来查找查询结果来回答。每个数据库服务器基本上都对自己的本地数据集执行查询(记住数据是分布式的而不是复制的)并回复客户端。客户端 API 应该足够智能以累积结果或连接所有服务器以使返回的 reader 准确执行。
当我们谈论分布式数据库时,它们必须具有相同的信息吗? 例如想象 table 客户
select * from customers
此查询必须 return 在任何数据库中得到相同的结果? 换句话说,所有用户都必须存在于所有数据库中?例如 "user 1" 必须存在于所有数据库中吗?
现在想象一个 table 主从,例如销售和 sale_detail 如果您正在使用该系统并且必须 "insert a new sales (sale and its details)" 将此新销售插入所有数据库?
这里的交易是如何运作的?或 sale-sale_details 不必在所有数据库中?
分布式事务如何工作?
分布式数据库并不意味着数据被复制到所有服务器机器上。数据复制有点像拓扑结构。
分布式数据库的意思是多台机器协同工作来存储和提供数据。他们是如何做到的是另一回事。来自维基
A distributed database is a database in which storage devices are not all attached to a common processing unit such as the CPU and which is controlled by a distributed database management system
你问的是数据在分布式数据库中是如何分布的。
通常最常见的分配方式是Hashbased distribution
。它根据值的每个 key
或 ID
计算一个 hash
值,并将其存储在其中一个节点中。是的,数据并未存储在所有服务器中(因此分布)
Hash
分布确保数据或多或少均匀地分布在数据库服务器机器或集群中。
您的另一个问题是如何提供查询可以通过首先了解服务器的所有这些不同节点一起工作来查找查询结果来回答。每个数据库服务器基本上都对自己的本地数据集执行查询(记住数据是分布式的而不是复制的)并回复客户端。客户端 API 应该足够智能以累积结果或连接所有服务器以使返回的 reader 准确执行。