当前位置: 首页 > news >正文

分片并不意味着分布式

Sharding(分片)是一种将数据和负载分布到多个独立的数据库实例的技术。这种方法通过将原始数据集分割为分片来利用水平可扩展性,然后将这些分片分布到多个数据库实例中。

110892dc686db40e8db30a57f5db2752.png

1*yg3PV8O2RO4YegyiYeiItA.png

但是,尽管"分布"一词出现在分片的定义中,但分片数据库并不是分布式数据库。

分片解决方案

每个分片解决方案在其架构中都有一个关键组件。该组件可以有各种名称,包括协调器、路由器或导演:

866a4e93bb1a023f95c743647da50d53.png

1*kp39_8mQ0E9bIO0Lw3PGFw.png

协调器是唯一一个知道数据分布的组件。它将客户端请求映射到特定的分片,然后转发到相应的数据库实例。这就是为什么客户端必须始终通过协调器路由其请求的原因。

例如,如果客户端想要将新记录插入到Car表中,请求首先会传递到协调器。协调器将记录的主键映射到其中一个分片,然后将请求转发到负责该分片的数据库实例。

7d7a12af7dc6f623340bab46e7e87dd7.png

1*YNUB6y8WJnp0CCVAXSjQ0g.png

在上面的示意图中,首先,协调器将键121映射到分片10,然后将记录插入到存储在拥有分片10的数据库实例上的表car_10中。

然而,还有一个问题:为什么在分片解决方案中需要协调器呢?答案很直接。分片存储在设计用于单服务器部署的数据库实例上。

这些数据库实例不相互通信,也不支持任何能促进这种通信的协议。它们彼此不知道,存在于各自的隔离环境中,对于它们是一个更大系统的一部分这一事实毫不知情。

因此,在分片解决方案中,协调器是不可或缺的。如果您有兴趣更深入地了解分片数据库架构,请考虑探索用于PostgreSQL的CitusData或Azure CosmosDB,用于MySQL的Vitess,用于Oracle的Distributed Autonomous Database以及MongoDB Sharded Cluster。

分布式数据库

与分片数据库解决方案类似,分布式数据库也使用类似的分片技术在数据库节点群集中分发数据和负载。但是,与分片解决方案不同,分布式数据库不依赖于协调器组件。

分布式数据库建立在共享无关架构上,没有像协调器这样的单一组件负担着做出许多决策:

11f846e701164f20fe1676f49f961b63.png

1*deOgcXccWs9lKUSgLPNOww.png

集群中的所有节点都知道对方,因此也知道数据的分布。通过直接通信,每个节点可以将客户端请求路由到适当的分片所有者。此外,它们可以执行和协调多节点事务。当扩展到更多节点时,集群会自动重新平衡和分割分片。节点保持数据的冗余副本(基于配置的复制因子),即使某些节点失败,也可以继续操作而无需停机。

所有这些对于客户端来说是透明的,客户端只需与任何节点建立连接,然后允许该节点管理分布式方面。

例如,客户端可能连接到node1并插入具有id121的新的Car记录。如果node1是记录分片的所有者,则它将在本地存储记录,并使用共识算法将更改复制到其他节点的子集。如果不是,node1将记录转发到分片的所有者,可能是node4

1faf4c27db45eedc14828be968f0d607.png

1*weEdq2BxIpf6GiLjipns5Q.png

如果您有兴趣探索真正分布式数据库的架构,请考虑研究Google Spanner,YugabyteDB,CockroachDB,Apache Cassandra或Apache Ignite。

在数据库领域,分片和分布经常被混为一谈,但它们有着不同的目的。

虽然分片涉及将数据分割到多个独立的实例中,但这并不意味着系统本质上是分布式的。分片解决方案中协调器的存在,该协调器指导客户端请求到适当的分片,突显了这一区别。

另一方面,建立在共享无关架构上的分布式数据库缺乏这种集中式协调器。这些系统中的节点都知道对方,管理数据分布,并无缝处理客户端请求。

这两种架构都有其优点,了解它们的细微差别对于进行数据库设计和选择至关重要。

 

相关文章:

分片并不意味着分布式

Sharding(分片)是一种将数据和负载分布到多个独立的数据库实例的技术。这种方法通过将原始数据集分割为分片来利用水平可扩展性,然后将这些分片分布到多个数据库实例中。 1*yg3PV8O2RO4YegyiYeiItA.png 但是,尽管"分布"…...

Python中的函数

一、函数参数与返回值基础知识 1、不要使用可变类型(list等)作为参数默认值,用None来代替。 参数默认值只会在函数定义阶段被创建一次,之后无论创建多少次,函数内拿到的默认值都是同一个对象,为规避这个问…...

推荐一款png图片打包plist工具pngPackerGUI_V2.0

png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0 此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开 pngPackerGUI.…...

Docker快速安装Mariadb11.1

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 Mari…...

CuratorFrameworkFactory.builder()方法可配置属性

CuratorFrameworkFactory.builder()方法可以配置以下属性: 1. connectString:ZooKeeper服务器的连接字符串。 2. sessionTimeoutMs:ZooKeeper会话超时时间。 3. connectionTimeoutMs:ZooKeeper连接超时时间。 4. retryPolicy&…...

鸿蒙 ark ui 轮播图实现教程

前言: 各位同学有段时间没有见面 因为一直很忙所以就没有去更新博客。最近有在学习这个鸿蒙的ark ui开发 因为鸿蒙不是发布了一个鸿蒙next的测试版本 明年会启动纯血鸿蒙应用 所以我就想提前给大家写一些博客文章 效果图 具体实现 我们在鸿蒙的ark ui 里面列表使…...

看不惯AI版权作品被白嫖!Stability AI副总裁选择了辞职,曾领导开发Stable Audio

近日,OpenAI的各种大瓜真是让人吃麻了。 而就在Sam Altmam被开除前两天,可能没太多人注意到Stability AI副总裁Newton—Rex因看不惯StabilityAI在版权保护上的行为选择辞职一事。 大模型研究测试传送门 GPT-4传送门(免墙,可直接…...

基于Python+OpenCV+Tensorflow图像迁移的艺术图片生成系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统![请添加图片描述](https://img-blog.csdnimg.cn/dbda87069fc14c24b71c1eb4224dff05.png)四. 总结 一项目简介 基于PythonOpenCVTensorfl…...

leetcode 32最长有效括号 34在排序数组中查找元素的第一个和最后一个位置

32. 最长有效括号 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s "(()" 输出:2 解释:最长有效括号子串是 "()" 示例 2&a…...

【附代码】判断线段是否相交算法(Python,C++)

【附代码】判断线段是否相交算法(Python,C) 文章目录 【附代码】判断线段是否相交算法(Python,C)相关文献测试电脑配置基础向量旋转向量缩放向量投影推导 点乘定义推导几何意义 叉乘定义推导几何意义 判断线…...

PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为 word、HTML、SVG、XPS

本文我们将演示如何通过调用 Spire.PDF 提供的方法 PdfDocument.SaveToStream() 将 PDF 页面转换为 HTML、Word、SVG、XPS、PDF 并将它们保存到流中。并且从Spire.PDF版本4.3开始,它新支持转换定义范围的PDF页面并将其保存到流中。 Spire.Doc 是一款专门对 Word 文…...

【FLink】水位线(Watermark)

目录 1、关于时间语义 1.1事件时间 1.2处理时间​编辑 2、什么是水位线 2.1 顺序流和乱序流 2.2乱序数据的处理 2.3 水位线的特性 3 、水位线的生成 3.1 生成水位线的总体原则 3.2 水位线生成策略 3.3 Flink内置水位线 3.3.1 有序流中内置水位线设置 3.4.2 断点式…...

github访问不了问题

git clone github上的项目的时候,不是访问不了,就是克隆过程被中断了 最近找到一个代理,从代理那里clone而不是github上 GitHub代理 – 初果编程...

【Java】认识String类

文章目录 一、String类的重要性二、String类中的常用方法1.字符串构造2.String对象的比较3.字符串查找4.转换5.字符串替换6.字符串拆分7.字符串截取8.其他操作方法9.字符串的不可变性10.字符串修改 三、StringBuilder和StringBuffer 一、String类的重要性 在C语言中已经涉及到…...

算法——滑动窗口(Sliding Window)

一、背景知识 滑动窗口算法(Sliding Window): 在给定数组 / 字符串上维护一个固定长度或不定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。题型一:固定长度题型二:不固定长度 二、例…...

Android异步之旅:探索AsyncTask

前言: 在Android应用程序开发中,异步操作是非常常见的需求。比如,我们可能需要在后台线程中执行网络请求、数据库操作或者其他耗时的任务,而不阻塞UI线程。为了实现这些异步操作,Android提供了多种方式,其…...

kibana 7安装

手动安装 下载 wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.15-linux-x86_64.tar.gz 解压 mv kibana-7.17.15-linux-x86_64.tar.gz /usr/local tar -zxvf kibana-7.17.15-linux-x86_64.tar.gz chown -R es:es kibana-7.17.15-linux-x86_64修改配置 s…...

为何内存不够用?微服务改造启动多个Spring Boot的陷阱与解决方案

在生产环境中我们会遇到一些问题,此文主要记录并复盘一下当时项目中的实际问题及解决过程。 背景简述 最初系统上线后都比较正常风平浪静的。在系统运行了一段时间后,业务量上升后,生产上发现java应用内存占用过高,服务器总共64…...

大模型变身双面人:虚假新闻制造机VS假新闻鉴别大师!

大家是怎样看待大型语言模型生成信息的可靠性呢? 尽管大语言模型生成的内容“像模像样”,但这些模型偶尔的失误揭示了一个关键问题:它们生成的内容并不总是真实可靠的。 那么,这种“不保真”特性能否被用来制造虚假信息呢&#x…...

WordPress网站如何修复数千个帖子的SEO错误

在本教程中,我们将向您展示如何解决您经常犯的SEO错误。 最好的是您不必花费太多时间,因为您不需要打开并编辑每个帖子。 相反,我们将向您展示如何使用 WordPress 内的电子表格来修复 WordPress 帖子的 SEO。 在这里,我们为您提…...

降AI工具性价比怎么算才不踩坑?速度+承诺+技术3维度全揭秘!

降 AI 工具性价比这件事被绝大多数同学误解了——单价低 ≠ 性价比高。 如果性价比是单价游戏那市场早就只剩 1-2 元/千字的工具了,但事实是 4.8 元/千字的嘎嘎降 AI、8 元/千字的比话降 AI 销量都不差。原因很简单——真正的综合性价比要看 3 个维度的乘积&#x…...

超越DOA估计:原子范数最小化在Matlab中的三种创新应用场景

原子范数最小化在Matlab中的三大前沿应用实践 原子范数最小化(Atomic Norm Minimization, ANM)作为压缩感知领域的重要工具,早已超越了传统的波达方向(DOA)估计范畴。本文将带您探索ANM在频谱感知、机械故障诊断和图像…...

抖音视频批量下载终极指南:告别手动保存,10倍效率提升

抖音视频批量下载终极指南:告别手动保存,10倍效率提升 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…...

别再手动K帧了!Blender 3.6+ 自动关键帧与插值类型实战避坑指南

Blender 3.6 动画效率革命:自动关键帧与插值类型深度解析 在数字内容创作领域,效率与质量永远是动画师追求的双重目标。Blender 3.6版本带来的动画工具升级,正在悄然改变传统的关键帧工作流程。对于已经掌握基础动画技巧的中级用户而言&#…...

2026最权威的降AI率网站实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 如今,AIGC内容检测技术越来越成熟,这使得机器生成的文本面临着严格的…...

ENACT基准:评估视觉语言模型在具身认知中的关键能力

1. 项目背景与核心价值 具身认知(Embodied Cognition)正成为AI领域的前沿方向,它强调智能体通过与环境的物理交互来发展认知能力。而视觉语言模型(VLMs)作为多模态AI的代表,如何评估其在具身场景中的世界建…...

Stable Diffusion背后的功臣:DDPM论文中的关键超参数β_t到底怎么调?

扩散模型实战:噪声调度参数β_t的工程调优指南 在图像生成领域,扩散模型已成为继GAN之后最具潜力的生成架构。不同于传统方法直接学习数据分布,扩散模型通过精心设计的噪声添加与去除过程实现高质量样本生成。其中,噪声调度参数β…...

保姆级教程:在TensorFlow 2.x上复现开源NSFW图像识别模型(附完整代码)

从零构建TensorFlow 2.x环境下的NSFW识别系统:工程化迁移指南 当我们需要在内容平台部署自动化审核系统时,开源NSFW(Not Safe For Work)识别模型往往成为首选方案。但现实情况是,GitHub上大量优质模型仍停留在TensorFl…...

告别环境报错:一份针对Windows+Anaconda的YOLOv8终极环境检查清单与配置指南

WindowsAnaconda环境下YOLOv8终极配置避坑指南 每次看到终端里弹出"DLL load failed"或者"CUDA unavailable"的红色错误提示,是不是感觉血压瞬间飙升?作为计算机视觉领域最受欢迎的实时目标检测框架之一,YOLOv8在Windows…...

NVDLA中的卷积流水线:原理、实现与性能优化

NVDLA卷积流水线深度解析:从硬件架构到极致优化 在边缘计算和物联网设备爆炸式增长的今天,高效能的神经网络推理加速器已成为行业刚需。NVDLA(NVIDIA深度学习加速器)作为开源架构中的佼佼者,其核心竞争优势正来自于精…...