首页 数据库 mysql教程 为什么要从关系型数据库转向NoSQL

为什么要从关系型数据库转向NoSQL

Jun 07, 2016 pm 04:24 PM
nosql 为什么 关系型 数据库

NoSQL系统一般都会宣传一个特性,那就是性能好。为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NoSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数据库的性能呢?我们从系统设计的角度看这个问题。 1. ?索

NoSQL系统一般都会宣传一个特性,那就是性能好。为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NoSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数据库的性能呢?我们从系统设计的角度看这个问题。

1. ?索引支持。

关系型数据库创立之初没有想到今天的互联网应用对可扩展性提出如此高的要求。因此,设计时主要考虑的是简化用户的工作,SQL语言的产生促成数据库接口的标准化,从而形成了Oracle这样的数据库公司并带动了上下游产业链的发展。关系型数据库在单机存储引擎支持索引,比如MySQL的InnoDB存储引擎需要支持索引,而NoSQL系统的单机存储引擎是纯粹的,只需要支持基于主键的随机读取和范围查询。NoSQL系统在系统层面提供对索引的支持,比如有一个用户表,主键为user_id,每个用户有很多属性,包括用户名,照片ID(photo_id),照片URL,在NoSQL系统中如果需要对photo_id建立索引,可以维护一张分布式表,表的主键为形成的二元组。关系型数据库由于需要在单机存储引擎层面支持索引,大大降低了系统的可扩展性,使得单机存储引擎的设计变得很复杂。

2. 事务并发处理。

关系型数据库有一整套的关于事务并发处理的理论,比如锁的粒度是表级,页级还是行级,多版本并发控制机制MVCC,事务的隔离级别,死锁检测,回滚,等等。然而,互联网应用大多数的特点都是多读少写,比如读和写的比例是10 : 1,并且很少有复杂事务需求,因此,一般可以采用更为简单的copy-on-write技术:单线程写,多线程读,写的时候执行copy-on-write,写不影响读服务。NoSQL系统这样的假设简化了系统的设计,减少了很多操作的overhead,提高了性能。

3. 动态还是静态的数据结构。

关系型数据库的存储引擎总是一颗磁盘B+树,为了提高性能,可能需要有insert buffer聚合写,query cache缓存读,经常需要实现类似Linux page cache的缓存管理机制。数据库中的读和写是互相影响的,写操作也因为时不时需要将数据flush到磁盘而性能不高。简而言之,关系型数据库存储引擎的数据结构是通用的动态更新的B+树,然而,在NOSQL系统中,比如Bigtable中采用SSTable + MemTable的数据结构,数据先写入到内存的MemTable,达到一定大小或者超过一定时间才会dump到磁盘生成SSTable文件,SSTable是只读的。如果说关系型数据库存储引擎的数据结构是一颗动态的B+树,那么SSTable就是一个排好序的有序数组。很明显,实现一个有序数据比实现一个动态B+树且包含复杂的并发控制机制要简单高效地多。

4 . Join操作。

关系型数据库需要在存储引擎层面支持Join,而NoSQL系统一般根据应用来决定Join实现的方式。举个例子,有两张表:用户表和商品表,每个用户下可能有若干个商品,用户表的主键为,用户和商品的关联属性存放在用户表中,商品表的主键为item_id,商品属性包括商品名,商品URL,等等。假设应用需要查询一个用户的所有商品并显示商品的详细信息,普通的做法是先从用户表查找指定用户的所有item_id,然后对每个item_id去商品表查询详细信息,即执行一次数据库Join操作,这必然带来了很多的磁盘随机读,并且由于Join带来的随机读的局部性不好,缓存的效果往往也是有限的。在NoSQL系统中,我们往往可以将用户表和商品表集成到一张宽表中,这样虽然冗余存储了商品的详细信息,却换来了查询的高效。

关系型数据库的性能瓶颈往往不在SQL语句解析上,而是在于需要支持完备的SQL特性。互联网公司面临的问题是应用对性能和可扩展性要求很高,并且DBA和开发工程师水平比较高,可以通过牺牲一些接口友好性来换取更好的性能。NoSQL系统的一些设计,比如通过宽表实现Join操作,互联网公司的DBA和开发工程师也做过,NOSQL系统只是加强了这种约束。从长远来看,可以总结一套约束集合,并且定义一个SQL子集,只需要支持这个SQL子集就可以在不牺牲可扩展性的前提下支持比如90%以上的互联网应用。我想,NoSQL技术发展到这一步的时候就算是比较成熟了,这也是我们最终想做的事情。我们在设计和使用NoSQL系统的时候也可以适当转化一下思维,如下:

1. 更大的数据量。很多人在使用MySQL的过程遇到记录条数超过一定值,比如2000W的时候,数据库性能开始下降,这个值的得出往往需要经过大量的测试。然而,大多数的NoSQL系统可扩展性都比较好,能够支持更大的数据量,因此也可以采用一些空间换时间的做法,比如通过宽表的方式实现Join。

2. 性能预估更加容易。关系型数据库由于复杂的并发控制,insert buffer及类似page cache的读写优化机制,性能估算相对较难,很多时候需要凭借经验或者经过测试才能得出系统的性能。然后,NOSQL系统由于存储引擎实现,并发控制机制等相对简单,可以通过硬件的性能指标在系统设计之处大致预估系统的性能,性能预估可操作性相对更强。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Coinbase交易所登录入口2025 Coinbase交易所登录入口2025 Mar 21, 2025 pm 05:51 PM

Coinbase安全登录指南:如何避免钓鱼网站和诈骗? 网络钓鱼和诈骗日益猖獗,安全访问Coinbase官方登录入口至关重要。本文提供实用指南,帮助用户安全地找到并使用Coinbase最新官方登录入口,保护数字资产安全。我们将介绍如何识别钓鱼网站,以及如何通过官方网站、移动应用或可信第三方平台安全登录,并提供加强账户安全的建议,例如使用强密码和启用双重验证。 避免因错误登录导致资产损失,请务必仔细阅读本文!

欧易交易所网页版注册入口 欧易注册入口 欧易交易所网页版注册入口 欧易注册入口 Mar 20, 2025 pm 05:48 PM

本文详细介绍了如何在欧易OKX交易所官网注册账户,并开始加密货币交易。欧易作为全球领先的加密货币交易所,提供丰富的交易品种、多种交易方式和强大的安全保障,并支持多种法币和加密货币的便捷出金。文章涵盖了欧易官网注册入口查找方法、详细注册步骤(包括邮箱/手机注册、信息填写、验证码验证等),以及注册后的注意事项(KYC认证、安全设置等),并解答了常见问题,帮助新手用户快速安全地完成欧易账户注册,开启加密货币投资之旅。

6x交易所的推荐人怎么实名认证 6x交易所的推荐人怎么实名认证 Mar 14, 2025 pm 05:30 PM

6x交易所推荐人实名认证指南:为了保障账户安全、领取推荐奖励并参与平台活动,6x交易所推荐人必须完成实名认证。本文详细介绍认证流程,包括登录账户、进入实名认证页面、填写个人信息(姓名、国籍、身份证件等)、上传身份证照片(正反面及手持照片)、人脸识别(如有)以及提交审核等步骤。 请确保信息真实准确,照片清晰完整,耐心等待审核结果。完成认证后,您可以享受推荐奖励、更高的账户安全级别以及提升推荐成功率等诸多好处。 请以6x交易所官方最新指引为准。

欧易okx官方入口地址 欧易官方链接 欧易okx官方入口地址 欧易官方链接 Mar 21, 2025 pm 06:09 PM

在数字货币交易中,安全至关重要。 由于网络钓鱼盛行,找到欧易OKX官方入口地址和官方链接至关重要,错误链接可能导致账户被盗、资产损失和身份盗用。本文将提供安全访问欧易OKX官方平台的全面指南,帮助用户识别并避免钓鱼网站,保护数字资产安全。 我们将介绍如何通过官方网站、官方应用、官方社交媒体账号以及其他可信渠道确认欧易OKX官方入口,并提供重要的安全提示,例如避免不明链接、使用强密码和启用双重验证等,确保您的交易安全可靠。

BitMEX交易所最新官方网站入口 BitMEX交易所最新官方网站入口 Mar 21, 2025 pm 06:03 PM

BitMEX作为老牌加密货币衍生品交易平台,其官方网站入口的准确性至关重要。由于钓鱼网站猖獗,误入假冒网站可能导致账户被盗和资金损失。本文旨在指导用户安全访问BitMEX官方网站,提供通过可信加密货币信息平台(如CoinMarketCap、CoinGecko)、官方社交媒体、验证现有地址及官方支持渠道等多种方法,并强调启用双重验证、定期更改密码及使用安全软件等安全措施,帮助用户有效规避风险,保障账户安全。

欧易官方地址 欧易okx官方入口地址 欧易官方地址 欧易okx官方入口地址 Mar 21, 2025 pm 06:12 PM

在数字货币交易日益火热的今天,选择安全可靠的交易平台至关重要。OKX作为全球领先的数字资产交易所,其安全性备受关注。然而,众多钓鱼网站冒充OKX官方,导致用户面临账户安全和资产损失的风险。本文将为您详细讲解如何识别并访问真正的欧易OKX官方网站及APP入口,避免钓鱼网站陷阱,保障您的数字资产安全。 通过官方网站验证、官方App下载、官方社交媒体渠道以及官方客服咨询等多种途径,您可以有效识别并访问OKX官方平台,确保您的交易安全。 请务必仔细核对域名、检查HTTPS协议,并提高网络安全意识,保

炒币模拟交易软件 炒币模拟交易软件 Mar 19, 2025 pm 04:24 PM

模拟交易,也称模拟盘或虚拟交易,是学习和实践加密货币交易的绝佳途径,它允许用户使用虚拟资金进行交易,无需承担任何实际财务风险。 通过模拟交易,您可以零风险学习交易平台操作、测试交易策略、练习情绪控制以及熟悉杠杆运用。 币安、欧易、芝麻开门等交易所均提供模拟交易平台,TradingView和MetaTrader等软件也提供类似功能。 模拟交易虽然能有效提升交易技能,但需注意其与真实交易的差异,并谨慎对待,切勿过度自信。 本文将详细介绍模拟交易的优势、使用方法及注意事项,助您在加密货币市场中稳

流动性最好的交易所排名 流动性最好的交易所排名 Mar 19, 2025 pm 04:15 PM

本文分析了币安、欧易、芝麻开门等主流加密货币交易所的流动性,并进行了排名。 高流动性对于加密货币交易至关重要,它意味着更低的滑点、更快的成交速度以及更理想的交易价格。文章从交易量、买卖盘价差、订单簿深度等指标入手,深入对比了三家交易所的流动性差异,并指出币安拥有绝对的流动性优势,欧易紧随其后,而芝麻开门则有待提升。最终,文章建议用户在选择交易所时,需综合考虑自身需求及交易所的流动性、安全性等多方面因素,谨慎选择。

See all articles