【问题标题】:Distributed Databases questions分布式数据库问题
【发布时间】:2016-06-06 20:30:52
【问题描述】:

当我们谈论分布式数据库时,它们都必须具有相同的信息吗? 例如想象表客户

select * from customers

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

现在想象一个表 master-detail,例如 sale 和 sale_detail 如果您正在使用该系统并且此“插入新销售(销售及其详细信息)”必须在所有数据库中插入此新销售?

这里的交易是如何运作的?还是 sale-sale_details 不是必须在所有数据库中?

分布式事务如何工作?

【问题讨论】:

  • 维基百科有很好的介绍。

标签: database distributed-transactions


【解决方案1】:

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

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

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

您要问的是数据在分布式数据库中的分布方式。

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

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

首先了解服务器的所有这些不同节点协同工作以查找查询结果,可以回答您如何为查询提供服务的其他问题。每个数据库服务器基本上都在自己的本地数据集上执行查询(记住数据是分布式的,而不是复制的)并回复给客户端。客户端 API 应该足够智能以累积结果或连接所有服务器,以便返回的阅读器准确执行。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 2011-05-06
    • 2011-09-04
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多