分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
大数据的存储和管理
任何机器都会有物理上的限制:内存容量、硬盘容量、处理器速度等等,我们需要在这些硬件的限制和性能之间做出取舍,比如内存的读取速度比硬盘快得多,因此内存数据库比硬盘数据库性能好,但是内存为2GB的机器不可能将大小为100GB的数据全部放入内存中,也许内存大小为128GB的机器能够做到,但是数据增加到200GB时就无能为力了。
数据不断增长造成单机系统性能不断下降,即使不断提升硬件配置也难以跟上数据的增长速度。然而,当今主流的计算机硬件比较便宜而且可以扩展,现在购置八台8内核、128GB内存的机器比购置一台64内核、TB级别内存的服务器划算得多,而且还可以增加或减少机器来应对将来的变化。这种分布式架构策略对于海量数据来说是比较适合的,因此,许多海量数据系统选择将数据放在多个机器中,但也带来了许多单机系统不曾有的问题。
下面我们介绍大数据存储和管理发展过程中出现的四类大数据存储和管理数据库系统。
并行数据库
并行数据库[1]是指那些在无共享的体系结构中进行数据操作的数据库系统。这些系统大部分采用了关系数据模型并且支持SQL语句查询,但为了能够并行执行SQL的查询操作,系统中采用了两个关键技术:关系表的水平划分和SQL查询的分区执行。
水平划分的主要思想就是根据某种策略将关系表中的元组分布到集群中的不同节点上,这些节点上的表结构是一样的,这样就可以对元组并行处理。现有的分区策略有哈希分区、范围分区、循环分区等。例如,哈希分区策略是将表T中的元组分布到n个节点上,可以使用统一的哈希算法对元组中的某个或某几个属性进行哈希,如hash(T.attribute1) mod n,然后根据哈希值将元组放置到不同的节点上。
在分区存储的表中处理SQL查询需要使用基于分区的执行策略,如获取表T中某一数值范围内的元组,系统首先为整个表T生成总的执行计划P,然后将P拆分成n个子计划{P1,…,Pn},子计划Pi在节点ni上独立执行,最后每个节点将生成的中间结果发送到某一选定的节点上,该节点对中间结果进行聚集产生最终的结果。
并行数据库系统的目标是高性能和高可用性,通过多个节点并行执行数据库任务,提高整个数据库系统的性能和可用性。最近一些年不断涌现一些提高系统性能的新技术,如索引、压缩、实体化视图、结果缓存、I/O共享等,这些技