速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

NoSQL 数据库中的分布式算法

  • 2014-12-31
  • 本文字数:1162 字

    阅读完需:约 4 分钟

随着互联网 Web2.0 的发展,在应对超大规模和高并发的 SNS 类型的 Web2.0 动态网站等的高性能挑战时,关系型数据库会遇到性能瓶颈。再加上当前移动互联网的发展,关系数据库已经不能满足应用的扩展性、灵活性、高可用性的需要,而 NoSQL 数据库则显得更加能够适应这些需求。NoSQL(即 Not Only SQL),即“不仅仅是 SQL”,它是一种非关系型(结构化 / 半结构化)的数据库,它已经引起了一项全新、革命性的数据库运动,并引发了多种相关协议和算法的研究以及实践,从而总结出了一些行之有效的数据库构建方法。

在专注于大数据、NoSQL 和高扩展性的软件工程方面报道的博客“ Highly Scalable Blog ”中报道了一篇关于 NoSQL 数据库中的分布式算法的文章。在这篇文章里,作者从数据一致性、数据布局、系统协调三个方面以及分布式相关策略(数据复制策略、数据恢复策略、数据分布策略、集群领导选举算法等)对NoSQL 数据库的分布式特点进行了一系列系统化的描述。

在数据一致性方面,鉴于一致性问题是由数据隔离和复制引起,所以文章首先对复制的可用性、读写延迟、读写扩展性、容错性、数据持久性、一致性等特点进行了分析,尤其对一致性中的读写一致性、写一致性进行了详细讨论。还以图例的形式分析了不同复制技术之间的逻辑关系和不同技术在系统的一致性、扩展性、可用性、延迟性之间的权衡以及每个技术的详细情况,如下两图所示:

文章还针对能够处理数据一致性维护和集群状态同步的反熵协议以及能够使得所有副本都最终达到语义上正确的数据最终一致性进行了介绍。

在数据布局方面,文章主要讲述了控制分布式数据库中如何高效放置数据的算法。这些算法主要负责把数据项映射到合适的物理节点上以及在节点间迁移数据和分配内存资源。对于如何在集群扩容时做到数据的平衡分配、如何合理在动态环境中进行数据分片和复制以实现把记录合理地映射到物理节点上、如何按照多个属性进行数据分片以及如何合理利用内存而提高数据随机读取性能的要求等方面进行了一一介绍。

在如何系统协调方面,文章讨论了与系统协调相关的故障检测和协调者选举两种技术。故障检测是任何一个拥有容错性的分布式系统必须具有的基本功能,且所有的故障检测协议都是基于心跳通讯机制实现。而真正的分布式系统还有一些额外的功能要求,如能够应对短暂的网络故障和延迟、集群拓扑和负载、应对带宽变化、应对节点失效、应对作业重新分配、分布式系统中失败检测功能的可扩展性和健壮性等要求。协调者选举是保证数据库强一致性的一个重要技术,而 Bully 算法是一种相对简单的协调者选举算法, MongoDB 就用了该算法来决定副本集的主机节点。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-12-31 03:433827
用户头像

发布了 92 篇内容, 共 46.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

游戏部署换新季,华为云618营销季助力游戏企业闯关升级

YG科技

多媒体下载和转换工具Allavsoft

Rose

功能强大的数字绘画和照片编辑应用:Artstudio Pro

Rose

连续两年入选CVPR !快手KVQ,大模型加持的视频质量评价“黄金眼”

快手技术

音视频 快手 KVQ

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

Apache IoTDB

HarmonyOS NEXT大揭秘进入倒计时:HDC 2024华为开发者大会精彩亮点抢先看

最新动态

云电竞平台测评

Yan-英杰

线性稳压器LDO的基础知识

梦笔生花

芯片 LDO 电源

蓝易云 - 关于openfeign的http和rpc

百度搜索:蓝易云

云计算 Web 服务器 云服务器 openfeign

蓝易云 - linux系统中rootfs根文件系统制作及挂载基本操作

百度搜索:蓝易云

Linux 运维 服务器 云服务器 rootfs

蓝易云 - linux系统中u-boot命令的EMMC和SD卡操作命令分析

百度搜索:蓝易云

Linux 云服务器 SD EMMC U-Boot

MMPsy 数据集:数业智能心大陆在多模态心理评估中的创新与应用

心大陆多智能体

人工智能 数据分析 数据集 多模态 数字心理

又来了!涛思数据成为中关村物联网产业联盟高级会员单位

TDengine

数据库 tdengine 时序数据库

一键获取企业“松弛感”

脑极体

云服务

AIGC在保险场景中的视觉应用

京东科技开发者

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

Apache IoTDB

接口测试:Mock 的价值与意义

霍格沃兹测试开发学社

AI大佬都在说下一个爆点是智能体,建议开发者抢占先机!

AI浩

智能体

极速查询:StarRocks 存算分离 Compaction 原理 & 调优指南

StarRocks

云计算 大数据 数据仓库 数据湖 湖仓一体

Java实现基于ArrayList的生产者/消费者

极客罗杰

Microsoft Remote Desktop for Mac(微软远程连接软件)v10.9.8直装激活版

Rose

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

Apache IoTDB

专访 Altair 大中华区总经理刘源博士:仿真拥抱人工智能,Altair 打造数字孪生新生态

Altair RapidMiner

人工智能 机器学习 数据分析 altair

最适合ZKsync主网和撸空投的4个钱包推荐,bitget钱包

股市老人

第55期|GPTSecurity周报

云起无垠

电竞直播APP软件开发公司哪家好?现成源码由哪些优势

软件开发-梦幻运营部

FabFilter Total Bundle 2024 Mac音频插件合集 v2024.05.30直装激活版

Rose

云服务与低代码开发的结合:重塑现代软件开发模式

快乐非自愿限量之名

云原生 低代码 云服务

【程序设计】做一个发送系统邮件的功能,如何设计数据表?

靠谱的程序员

程序设计

直播预告丨华为数字化转型解决方案,助力钢铁行业飞越“寒冬”!

YG科技

蓝易云 - centos脚本获取昨天日期删除指定文件之外的其他文件

百度搜索:蓝易云

云计算 Linux 服务器 系统 云服务器

NoSQL数据库中的分布式算法_数据库_李士窑_InfoQ精选文章