NoSQL 运动给数据库系统留下什么宝贵的思想?
一、NoSQL 运动给数据库系统留下什么宝贵的思想
如果非要给NoSQL一个历史定位的话,那应该是一次对关系型数据库的解构运动。
这次解构运动的发起是由于互联网应用的兴起,由于互联网对存储的使用重规模轻逻辑,所以导致传统的关系型数据库使用成本过高。于是促长了MySQL等开源数据库的发展和成长。对那些开源的关系型数据库进行解构,造成了NoSQL的局面。但问题在于当时那群年轻的互联网程序员没有好好回顾数据库的发展史,而是带着操作系统(文件系统)的包袱去解构的,再加上操作系统阵营和数据库阵营历来的对垒,导致了这场不应该发生的重复造轮子运动。
如果对数据库内核开发了解的同学应该知道,所有关系型数据库都是从键值数据库发展起来的,数据存储引擎最底层都是一个键值数据库。还有现在流行的各种消息中间件(RABBIT MQ之流)也是关系数据库中的一个零件而已(connection),是在网络兴起后,数据库提供CS架构下诞生的远程访问方案。所以就像一个小男孩喜欢拆玩具车,把电动机拿下来单独转;把轮子拆下来单独滚,自得其乐。
如果非要说留下什么宝贵思想,那就是当你觉得要做一件了不起的事情时,先查一下历史,也许已经有人淌过了,你就别再搅混水了。不过好像没什么卵用,历史总是不断的重复,这不“无/低代码”运动又来了。
延伸阅读:
二、数据库的查询功能实现原理
数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优异的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
猜你喜欢LIKE
相关推荐HOT
更多>>mysql怎么查看连接池是否已满?
一、mysql怎么查看连接池是否已满1.查看连接数配置(MySQL服务器允许的最大连接数16384)show variables like ‘%max_connections%’2.查看当前...详情>>
2023-10-17 21:20:19什么是职场情商,如何提高?
什么是情商?情商是一个 20 世纪 90 年代作为学术话题出现的概念,并迅速成为商业心理学和职场动态研究的重要组成部分。它通常被称为 EQ(情商...详情>>
2023-10-17 20:16:30vector, list, map等容器使用场合是什么?
一、vector, list, map等容器使用场合vector适用于对象简单,变化较小,并且频繁随机访问的场景。list适用经常进行插入和删除并且不经常随机访...详情>>
2023-10-17 19:45:03数据挖掘中涉及的关联规则在实际生活中的应用有哪些?
一、数据挖掘中涉及的关联规则在实际生活中的应用关于关联规则分析,这篇文章可以认真学习一下,讲的比较全面,关联规则分析还在零售、快消、电...详情>>
2023-10-17 18:40:06热门推荐
sql server2012r2所在服务器做端口限制,需要开放什么端口才能继续访问数据库?
沸Oracle有什么优势和劣势?
热数据库聚集索引非聚集索引实现上有哪些区别?
热数据库(如oracle、mysql)及编程语言(php、python、perl、lisp)的区别?
新CSS 隐藏页面元素有哪些方法?
除了cx_Oracle,python还可以通过什么方式访问Oracle数据库?
SQL开启事务处理的语句 START TRANSACTION 和BEGIN TRAN的区别?
Android适配你需要学习哪些?
开发web应用,好的开发流程是怎么样的?
为什么说Gradle是Android进阶绕不去的坎?
mysql怎么查看连接池是否已满?
WHERE中有很多IN判断怎么提速?
软件开发要遵循哪些事项?
有了innodb buffer pool为什么要有redis?