为什么要从关系型数据库转向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实现的方式。举个例子,有两张表:用户表和商品表,每个用户下可能有若干个商品,用户表的主键为
关系型数据库的性能瓶颈往往不在SQL语句解析上,而是在于需要支持完备的SQL特性。互联网公司面临的问题是应用对性能和可扩展性要求很高,并且DBA和开发工程师水平比较高,可以通过牺牲一些接口友好性来换取更好的性能。NoSQL系统的一些设计,比如通过宽表实现Join操作,互联网公司的DBA和开发工程师也做过,NOSQL系统只是加强了这种约束。从长远来看,可以总结一套约束集合,并且定义一个SQL子集,只需要支持这个SQL子集就可以在不牺牲可扩展性的前提下支持比如90%以上的互联网应用。我想,NoSQL技术发展到这一步的时候就算是比较成熟了,这也是我们最终想做的事情。我们在设计和使用NoSQL系统的时候也可以适当转化一下思维,如下:
1. 更大的数据量。很多人在使用MySQL的过程遇到记录条数超过一定值,比如2000W的时候,数据库性能开始下降,这个值的得出往往需要经过大量的测试。然而,大多数的NoSQL系统可扩展性都比较好,能够支持更大的数据量,因此也可以采用一些空间换时间的做法,比如通过宽表的方式实现Join。
2. 性能预估更加容易。关系型数据库由于复杂的并发控制,insert buffer及类似page cache的读写优化机制,性能估算相对较难,很多时候需要凭借经验或者经过测试才能得出系统的性能。然后,NOSQL系统由于存储引擎实现,并发控制机制等相对简单,可以通过硬件的性能指标在系统设计之处大致预估系统的性能,性能预估可操作性相对更强。

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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