更新时间:2024-12-25 00:13:01点击:
分片的基础一般来说在数据库世界的拓展中,完全一致哈希是确定性地将任何数据分配给分片的主要概念之一,分片是数据最后存储的“方位”。现在说道您要在系统中用于16个分片,然后只需继续执行Hash(data)mod 16(所取一个数字,然后乘以16,然后所取只剩的值,也称作模数)才可辨识要存储信息的方位。为了告诉在哪里寻找它,网卓新闻网,您只需寻找一个与hash(IP)mod 16 == Hash(data)mod 16给定的节点/机器/服务器。
通过这种方式,您可以以一种非常简单的确定性方式告诉在哪里可以寻找您的数据。当不存在不得而知数量的节点想将数据区分为更加多的分片时,这种方法就不会遇到困难。换句话说,就是展开动态分片。动态确认您的分片不会造成网络的所谓重新分配,因为它必须向周围大大发送数据。
因此,像Radix之类的DLT解决方案自由选择了十分大量的分片,并指出分片空间总有一天会用完了。因此,现在我们只是用于十分大的数量展开调整,但问题是将没充足的设备像不能用于16个分片那样将所有分片空间1对1填满。这种情况由所谓的哈希环和分布式哈希表处理,因此我们可以在不理解整个网络拓扑的情况下找到一家人的数据。
现在这可以很好地与键值对因应用于,但并非所有数据都是唯一的,也并非只有键值。大多数实际数据,还包括分布式分类帐,都是某种形式的链接数据。它是环境的,仅有回应环境的某种内容,例如地址的余额是所有事务向其发送到内容的结果。
仅有用于分布式键值存储,它将被迫在分布式哈希表和完全一致的哈希环中从一个方位弹头算起另一个方位,以检索所有这些分组的和涉及的数据。如果每个人都必须仍然继续执行此操作者,那么这将堵塞所有网络带宽,然后遗失整个分片点。我要在这里尝试的是分布式链接/涉及数据结构的一些基本拒绝。1. 根据我们要找寻的数据,我们必需确认它的“方位”2. 等价一个方位,我们必需告诉什么网络地址映射到它。
3. 我们期望涉及数据与其关系比较相似。为了分片DAG但使其涉及数据彼此附近,我们应当让顶点包括方位信息,并且仅有包括其“附近度”内的参照(边)顶点。
这种方法的问题在于,如果该空间是虚构的,那么用大量数据填满单个方位就显得很荒谬(例如完全一致哈希中的分片)。这是因为没动力去玩游戏得好,并且因为“方位”是给定自由选择的,仍然是其自身的功能(散列)。为了依然让顶点自由选择它们的吸附方位,我们必须某种方式容许谁可以这样做到。
基于地理位置的分片和网络现在早已创立了一些环境,让我们必要深入实际的点子。顶点必须最多的分片设置,还有多个字段是其他目的所必须的,但都被忽略了,例如时间砍。
顶点结构:Vertex: {id: Hash(fields), location: "gbsuv7ztr", vertex_ref_1: "gbsuv7ztq-v1ID", vertex_ref_2: "gbsuv7zts-v2ID", nodeID: "gbsuv7ztr-nodeID", nodeSig: "0xfff88...", nonce: 999, payload: {"whatever your application is"}}Location定义为Geohash,即对经纬度GPS空间中小区域的简练叙述,因此它不是相同Location ,而是小区域的叙述。只有两个边缘,类似于IOTA的分支和主干。但是这些边的标识符还包括其参照的顶点的Location。
网络节点此设置中的节点必须标识自己。NodeID最少由其公钥和Geohash构成,后者可以自由选择,但无法随便自由选择。该节点的Geohash很最重要!节点可以通过公布一个声明其NodeID的顶点(它是预期的分片范围)来开始可选。
分片范围将包括NodeID的潜在一家人,并且由相对于NodeID自己声明的geohash的表面函数(半径/正方形/多边形等)构成。仅有通过用于基于等待时间的多边/三角剖分对节点的方位展开严苛测试的其他节点,才可以加到此顶点,如何展开此操作者显然必须另一篇文章,但以前回应主题展开过研究。
本文来源:NG南宫娱乐-www.yunmobim.com