关于大数据和数据库的讨论

前几天上了水木社区,发现还是有大牛的,看了关于大数据和数据库的讨论,发现还是蛮有意思的,限于篇幅和版面,我做了部分的整理。
先看看这位人士的分析,对于行业的现状还是很有了解,不是大学教授就是行业先锋。
#####################################
大数据是一种方案,而不是一种模型。方案有方案的压力, 
只能使出各种绝招来“解决”问题。既然是方案,就包括了存贮,运算,输入和输出等等。 就运算模型上,因为要更好地采用廉价硬件,实践出如hadoop/mapreduce这样的计算模型, 还有就是storm,以及其他模型。在存贮方面,也有很大的变化。 
  
其实大数据最需要解决的存贮系统问题很大程度上是I/O与计算任务的关系。 RDBM虽然已经考虑了存储系统的特点,设计时考虑了读写数据带来的代价, 但这些分析和研究是基于70年代,80年代的硬件架构。现在的硬件架构下, 包括网络架构,和70年代80年代的差别已经很大。
比如80年代是不可以想象 个人电脑有2T的硬盘,即使是90年代末,这么大的存贮系统是必须上磁盘矩阵, 现在一个单碟硬盘就能解决。然而硬盘磁头这种机械组件并没有象容量一样升级, 不单还是以前那样龟速(当然要快很多,但还是慢),而且还是象以前一样脆弱。 这个直接
导致了人们纷纷质疑RDBMS中的范式的合理性:解决冗余所即省的空间意义不大,但随机读写让磁头速度问题突显。 
  
回到大数据与数据库的关系。数据库其实有很多模型。关系模型只是其中一种。 然而关系模型的基础,关系代数,在数学层面解决了大量数据存贮相关的问题 (比如笛卡尔积让独立存贮的不同数据源能无限扩展进一张虚拟表,映射则又解决了表或虚拟表数据的选择与定位,使得无论
存贮表有多大,还是多小,数据的存贮, 查找都不是问题)。正因为关系模型的理论支撑,让关系数据库有了统一天下的现状。 然而数据存贮方案还是有很多种的。key-value是其中一种,oodb也是一种, 即使是直接存贮json也可以是一种。这些存贮模式没有象关系模型那样的数学支持, 
使得他们从一开始就是二等公民,三等公民。但二等公民也是公民,无论他们有多萎缩。 
  
另一种就是NewSQL。这种数据库采用的还是关系数据库模型,但relax normalization。 也就是说数据存储和查询还是二维关系模型,笛卡尔积,projection这些还是数据库 的根本,而SQL也很容易在这些数据库上实现和使用,唯一不同的是他们建议人们不要 使用范式,而是利用“冗余”数据
带来的“好”处让数据库效率更高。比如列式数据库就是 一种典型的newSQL数据库。列式数据库提出数据的存贮和读取上,列关联远强与行关联, 这表现为大多数时候用户关注的是同一列,或同几列,而不是同一行的所有列;从存贮上, 他们还发现同一列的数据相似性很高,如果把这些数据放在一起存贮,有可能引入非常好的 压缩算法(未列是压缩)。比如有一个列是国藉,传统RDBM会有一个表存贮国家,然后 获得一个nation_id,在其他地方使用id而不是国家名称。然而New SQL的思想是直接在所有用到国藉的地方直接写上国家名称,因为全世界就那么几个国家,如果有 
一百万条记录,其他真正有意义的就是一百多条记录,压缩一下根本就不是个事。这样的好处就是每次查询不需要用笛卡尔积护展另一张表,而只需要读同一个地方,数据就出来了。 也就是磁头重新定位的机会少很多。 
  
还有就是索引。在rdbm上,索引是用来加速查询的。然而索引的使用,让读和写的速度两三个数量组的下降。为了解决这个问题,有的人就提出直接复制一次数据,而不是使用索引。 也就是说,如果有A, B, C三列,A和B都做索引,就存成, B, C一张表,A, , C 另一张表。需要A做索引时取, B, C,需要B做索引时另一张。这种方法看起来很笨,但很有效。当然,数据量也出现了几倍的提升,这是一个不得不考虑的问题。 
  
第三就是数据的更新。以前总以为要更新数据库找到原来的记录,改一改数据就行。 但现在发现,改一个记录和写大量记录的差别不大,如果改的量大时,后者优势更大。 所以现在很多数据库系统实质上是read-only database,也就是只能添记录,不能改记录。 记录的改动是通过添加一条新记录,并记录添加时间,然后在读出时和原有的记录合并。 
  
有了read-only,数据的存贮就可以大大优化。比如一个block的记录直接用lzo算法 压缩起来放到hdfs上 —— 相象一下如果要改动一个压缩了的记录是多让人头痛的事。

话锋一处,马上产生了共鸣。看看这位人士的分析。
##########################################
1. 非常同意大数据是个平台的观点,它不仅仅关系到数据的存储和访问,还涉及到数据的导入,导出,分析,应用等。 
2. 大数据的核心问题是分布式,包含分布式数据存储,分布式计算(包含分布式SQL引擎,分布式数据挖掘算法, 。。。)。很多MPP数据库可以认为也是大数据范畴的东西,比如Teradata, Oracle ExaData, Greenplum, IBM DPF...  
3. 相对于数据冗余,我觉得范式主要解决的是数据一致性的问题。这个在事务性应用中比较关键。 
4. 关系数据库中的很多特性都很好,比如范式、一致性约束、索引、基于统计信息的SQL优化器等,不是大数据平台不想要,而是由于CAP准侧的约束,这些特性在分布式系统上的实现都很困难,所以必须做些取舍或是针对性的开发不同的版本来满足不同的应用。
很多的SQL on Hadoop/SQL on HDFS都在开发基于统计信息的SQL优化器,也在添加 一些比较简单的索引。

不知道怎么说着说着,一不小心就扯到rac和exadata了,看看他们怎么说的。
##########################################
oracle/rac和oracle exadata不是一个东西。exadata存储之上可以架普通的oracle  server,也可以架oracle rac。 
share nonthing架构不一定廉价,Teradata就卖的很贵。基于hadoop的方案之所以cost  effective,是因为1.hdfs提供的数据冗余能够保证一个节点的宕机不会造成数据丢失以及整个系统宕机,从而能够使得这些方案能够在廉价硬件上部署。 
2.hadoop/yarn/tez/spark等提供了免费且开源的分布式计算框架,从而使得在上面进行大数据方案开发成本降低。 大数据本质上是分布式计算,share nothing是分布式计算中可扩展性的必然选择; 因为share的越多,可扩展性就越弱

最后还不忘拿pg和mongo来做一个比较,这是约架的节奏啊。
########################################
mongodb的内存管理太原始,如果活动数据大于内存,性能急剧下降。同时无schema导致数据体积大,吃更多内存。 
postgresql和mongodb都有空间索引支持,能力应该类似。postgresql的事务支持又秒杀mongodb. postgresql 9.4后性能有不错提升。 
所以mongodb在这方面不如pg

java企业级通用权限安全框架源码 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5

【java框架源码下载】

时间: 2024-08-27 17:47:28

关于大数据和数据库的讨论的相关文章

老李分享:大数据,数据库,数据仓库之间是什么关系

老李分享:大数据,数据库,数据仓库之间是什么关系 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 首先简单的看一下云计算与大数据的概念. 1)云计算:云计算本质上是一种计算资源集中分布和充分共享的效用计算模式,其中集中是为了计算资源的集约化管理,分布是便于扩展计算能力.集中分布式是针对云服务提供商的,充分共享是针对用户,在云计算中,虽然对

[已解决]C#批量高效率导入大数据到数据库[百万级以上]

将几百万条数据导入到数据库中,怎么样高效率的导入?下面我就介绍一个高效率的方法:1.将数据库文件(DB.csv)导入到DataTable中: /// <summary> /// 将CSV文件的数据读取到DataTable中 /// </summary> /// <param name="fileName">CSV文件路径</param> /// <returns>返回读取了CSV数据的DataTable</returns

大数据时代数据库-云HBase架构&amp;生态&amp;实践

摘要: 2018第九届中国数据库技术大会,阿里云高级技术专家.架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲.主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其次分析了ApsaraDB HBase及生态,最后分享了大数据数据库的实际案例. 2018第九届中国数据库技术大会,阿里云高级技术专家.架构师封神(曹龙)带来题为大数据时代数据库-云HBase架构&生态&实践的演讲.主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其次分析了A

大数据图数据库之TAO数据库

节选自<大数据日知录:架构与算法>十四章 14.1.2  TAO图数据库 Facebook是目前世界上最著名的社交网站,如果从数据抽象的角度来看,Facebook的社交图不仅包括好友之间的关系,还包括人与实体以及实体与实体之间的关系,每个用户.每个页面.每张图片.每个应用.每个地点以及每个评论都可以作为独立的实体,用户喜欢某个页面则建立了用户和页面之间的关系,用户在某个地点签到则建立了用户和地点之间的关系--如果将每个实体看作是图中的节点,实体之间的关系看作是图中的有向边,则Facebook的

大数据量数据库优化 - CodeMain - 博客园

一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须

大数据量数据库优化

一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须

大数据与数据库的区别,大数据的备份与恢复

大数据(big data),指无法在可承受的时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力来适应海量.高增长率和多样化的信息资产. 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式.数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的

大数据量数据库设计与优化方案(SQL优化)

转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性

大数据量数据库设计与优化方案

转自:https://www.cnblogs.com/zuizui1204/p/9197248.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要