《NoSQL权威指南》——第2章 列式数据库
NoSQL权威指南
简介
从打孔卡和磁带的年代开始,文件就是物理设备上连续的字节,访问的方式是从文件开始(打开文件)到文件结束(文件结束的标志为TRUE)。是的,存储可以在磁盘上被分割成数据页,并且各种数据页可以通过指针链连接,但这种模型仍然与前面提到的打孔卡、磁带是相同的。后来,文件被拆分成记录(record,更多物理连续的字节),记录又被拆分成字段(field,仍然是更多物理连续的字节)。
文件被一条记录一条记录地处理(读/取一条,然后下一条)或按照物理存储位置顺序地处理(从头到文件结尾,或遵循一个指针链前进/后退n条记录,等等)。在这种模型中没有任何并行。这里还有一个假设:文件中记录(行)和记录中字段是物理排序的。为了使对这些数据的访问有效,花了大量的时间和资源来对记录进行排序。在磁带上无法做到随机存取,打孔卡上也无法做到。
到了RDBMS和SQL时代,这种文件系统模型仍然占主导地位。Codd博士也陷入了困境。首先,他必须在所有表中拥有一个主键(PRIMARY KEY),主键对应于顺序文件的排列次序;后来,他意识到键就是键,没有必要在RDBMS中让其中一个键成为特殊的字段。但是,SQL已经纳入了已有的技术特性,而且早期的SQL引擎也是建立在既有文件系统上的,所以在这个环节上卡住了。
列式模式采用了一种完全不同的方法。但它是一种可以与SQL和关系模型很好地一起工作的模型。在RDBMS中,表(bable)是一个具有完全相同类型的行(row)的无序集合。一个行是相同类型的无序列(column)的集合,每列保存与既定列相关的标量值。可以通过列名称来访问对应的列,而不是通过存储中的物理位置,当然,也可以使用"SELECT*"等简单方式来访问,以节省要输入。
对应的逻辑模型如下:表是行的集合,有且仅有一种结构;行是一组列的集合;列是取自一个且仅一个已知域的标量值。存储通常会在传统的文件系统中遵循这种模式,用文件表示表,用记录表示行,用字段表示列。但这都与物理存储无关。
在列式模型中,我们设计一个表,并且使用列式数据库特有的数据结构来存储每个列。行和表可以从这些行重新组合生成。看看平常的表的设计,可以看到为什么它们称为垂直存储模型,而不是水平存储模型。
数据库必知词汇:NoSQL NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
数据库必知词汇:Cassandra Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案,线性可扩展性和在商用硬件或云基础架构上经过验证的容错能力使它成为关键任务数据的理想平台。
是因为我认为NoSQL解决方案不如RDBMS解决方案吗?当然不! 是因为我专注于SQL的做事方式,而不想陷入一种相对较新的技术的不确定性吗?不,也不是!事实上,我非常兴奋地学习和使用各种分布式数据库提供的设施。
关系数据库由由埃德加·科德(IBM)在1969年左右提出。自推出后就成为商业应用的主要数据库模型(与其他数据库模型,如分级、网络或对象模型相比)。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 数据库市场迎来大变局,“后来者”云原生数据库将成企业必选项
- 只改2条语句,治好HIS系统数据库“葛优瘫”!
- 小白学数据之NoSQL数据库 进阶篇
- 图形数据库和NOSQL
- 高性能NoSql数据库 SSDB
- NoSQL数据库-MongoDB和Redis
- 《图数据库(第2版)》——2.2 NoSQL数据库也缺少联系
- MySQL 配置数据库远程访问权限
- 云数据库概念
- NoSQL 图形数据库
- NoSQL 文档数据库
- 如何重新启动像MongoDB这样的NoSQL数据库服务?
- Hibernate数据库对象的创建与导出
- 自增还是UUID?数据库主键的类型选择,为啥不能用uuid做MySQL的主键?
- NoSQL数据库---NoSQL数据库的分类
- MySQL数据库面试题总结(2022最新版)
- 聊聊数据库级联删除与伪删除的设计方案
- 系统架构设计师-关系型数据库与NoSQL数据库优缺点分析
- mongoose 常用数据库操作 查询
- 不要在循环中访问数据库,这样会严重影响数据库性能
- Oracle数据库的函数,存储过程,程序包,游标,触发器