国庆节前最后一篇, 前几期从国外数据库历史, 国内数据库历史, 搞笑数据库捡屎, 国庆节前也不能闲着.最近在看一本书, 关于下一代数据库.
Next Generation Databases
Guy Harrison started working as a database developer in the mid-1980s. He has written numerous books on database development and performance optimization. He joined Quest Software (now part of Dell) in 2000, and currently leads the team that develops the Toad.
这本书的作者叫Guy Harrison, 看看人家的年纪以及工作经历, 在想象现在的35, 40岁现象, 国内出不了大师, 没有核心技术,也是"情有可原", 或许有可能成为这样的人,此时在送外卖. 张爱玲说出名要趁早, 其实在我们这个国度是真真正正的实话,资本眼里只有利润,年轻的血汗更廉价和方便"调用".
废话多了,转入正题(下面的文字并不是直译,而是个人理解,如理解有误还请指正)
什么是数据库的三次革命,书中提到,第一次革命的起源是电子计算机的发明以及数据存储的需求中引发数据库最初级的概念, 而第二次革命产生了关系型数据库的初始的模型, 以及繁荣的发展, 第三个阶段的革命是由信息发展的需求,以及信息激增造成的非关系型数据库替代传统数据库.
要知道未来, 首先的知道自己从哪里来的, 最早的数据库形式是通过卡片上的空洞和特殊的机器,进行数据的存取.
真正的数据库要从电子计算机和较复杂的程序中谈起, 实际上数据库的起源是和程序绑定的,由于不想重复创造轮子, 则数据库就变成一个需要通用使用的产品,从程序中独立出来.这个系统,被统称为 DBMS, 当然前期还是要服务一些专项的应用系统程序并优化提高性能.
早期的数据库使用的指针的方式将数据进行层次化和网状化,所以数据的查找并不简单,首选需要知道业务逻辑,并且通过相关的设计中每个点和每个点之间的关系,以及顺序来进行数据查询.
从图中就知道要查询某个节点的数据,那可不是很简单的事情.这样所谓的数据库设计中最大的缺陷 1 必须是程序任意,并且是创建这个应用的程序人员,才能掌握怎么访问数据, 2 不具有通用性 3 访问困难.
基于以上的问题, Codd 在1960S 开始,直到1970S 研究出一套理论,也即使我们现代的 RDBS 的最初的理论,并且想将数据库和应用进行分离.
其中这个理论提出了4个点
元组, 关系, 约束, 操作, (那个数据库的基本理论中使用了元组这个叫法, ?),其中这个理论提出 表中的行应该通过唯一的键值进行识别和有效访问,并且该行中的每一列都必须依赖于该键值,而不依赖于其他标识符。同时也提出了 ACID 的相关定义.
我们最熟悉的关系型数据库,在理论上有了相关的定义和基础. 后续到底这些数据库之间乱糟糟的"情史" 可以去看 简式 的 第一篇,还是有点意思的.
实际上从从此以后一直到2005年,RDBS 本身的在数据库中的地位一直没有被挑战.
实际上第三代数据库在2005年后通过google 和 hadoop 的方式被提出,但此时没有人注意, 其中关于这套数据库革命性的理论的重点可以用 big data 来标签化. 时代创造英雄, 风来了,猪都可以上树的事情,在互联网的发展中,将某些数据库开始吹上了天,有些数据库却没有搭上这个顺风车.
对 MYSQL 上天了, PG 还在等火车.
其实实际上,这篇文字要谈的 "下一代" 才刚刚,将额头露出桌面.
NOSQL 和 云计算被提出,但这并不是一个下一代,在2004-2006 这个概念提出后 2007 就提出了 NEWSQL 的叫法,所以任何一件事情的出现都和这个时代, 拥有的 ,人, 事, 物有关, 任何一件事情的变化都会导致,整体的事情往我们预想的另一端发展.
我们现在总结一下上面说的东西, 到底数据库经历了什么. 传统非电子化的数据库, 电子化 CS 为中心模式的数据库, 云,非传统事务,针对大数据的数据库.
其中书中有很大的篇章说明的 MONGODB , NEO4J ,REDIS 等这些数据库出现的当时的需求是什么,这里就不在累述.说的很细,但用字不多. 这里就不剧透的,感兴趣的可以看看.
具体可以总结出,数据库的养成,和硬件, 处理的速度的需求,以及当时的工作的场景都有密不可分的关系, 数据库从一个项目一种单一的数据库,到一个项目多种数据库, 从我们认为他是数据库的数据库,到我们不改变思维,认为他不是数据库的数据库, 发展的时代,就是 Next Generation.
此时读到这里,大脑突然有一个画面, 数据库从一个点开始,现在已经是一个蒲扇的形状,这里有两个点是逃不出, 1 数据库终究是要存储数据的 2 数据是不能丢失的,除此以外基本上处于发散性的思维方式.
在数据库的理论上的变迁也是有的,
从ACID 理论,到 CAP 理论,数据库都经历了什么 从单点, 集群, 到分布式数据库,让数据库理论有了那些重新的定义. 数据库中提到的一致性到底是因为数据库发展变得更加严谨了,还是变得更加宽容了.
每种数据库都在自己定义,自己的一致性, 但最终会一致, 也就是每种数据库可能在某个时间段,同一个数据库在不同受体上体现的状态可能是不一致,但时间会让他们在某一个时刻是一致的.同时可以在给客户正确的结果后, 回来在修复不正确数据,(过期) 的节点的数据.
至此,新一代数据库要考虑的方式从之前简单的 ACID 理论,延展到一些问题
1 数据存储的方式, 列式存储还是传统的方式
2 数据结构或索引 是 B tree B+tree lsm 那种结构进行存储方式的设定
3 硬件变化后,对数据库整体架构的趋向性的变化
4 数据查找方式的变化
5 数据处理方式的客户接入方式和处理方式的变化
6 对某些场景的妥协,导致数据库曾经的理论,在某些数据库上推翻.
到底下一代数据库是什么,估计没有人能说的清楚, 但如同我可能不知道我要什么,但我知道我一定不要什么
上面是关于传统数据库设计和使用者对于新一代数据库的不满.
其实读到最后一章, 到底什么是新一代的数据库, 文中也没有给出一个特别的定论, 实际上新一代数据库到底是什么样子,谁心里也没有一个准确的答案.
但可以确定的, 处理速度慢, 数据存储方式固化, 无法进行扩展,或者扩展很难,条条框框,操作很难的, 这样的数据库一定是不在未来数据库的设计图中.
同时未来的数据库也不会在回到某一个数据库霸占市场多年的可能.每种特定的应用,适合场景的的数据库特定类型,或许就是下一代数据库的样子.