数据库与hadoop与分布式文件系统的区别和联系
1. 用向外扩展代替向上扩展
扩展商用关系型数据库的代价是非常昂贵的。它们的设计更容易向上扩展。要运行一个更大
的数据库,就需要买一个更大的机器。事实上,往往会看到服务器厂商在市场上将其昂贵的高端机
标称为“数据库级的服务器”。不过有时可能需要处理更大的数据集,却找不到一个足够大的机器。
更重要的是,高端的机器对于许多应用并不经济。例如,性能4倍于标准PC的机器,其成本将大大
超过将同样的4台PC放在一个集群中。Hadoop的设计就是为了能够在商用PC集群上实现向外扩展
的架构。添加更多的资源,对于Hadoop集群就是增加更多的机器。一个Hadoop集群的标配是十至
数百台计算机。事实上,如果不是为了开发目的,没有理由在单个服务器上运行Hadoop。
2. 用键/值对代替关系表
关系数据库的一个基本原则是让数据按某种模式存放在具有关系型数据结构的表中。虽然关
系模型具有大量形式化的属性,但是许多当前的应用所处理的数据类型并不能很好地适合这个模
型。文本、和XML文件是最典型的例子。此外,大型数据集往往是非结构化或半结构化的。
Hadoop使用键/值对作为基本数据单元,可足够灵活地处理较少结构化的数据类型。在hadoop中,
数据的来源可以有任何形式,但最终会转化为键/值对以供处理。
3. 用函数式编程(MapReduce)代替声明式查询(SQL )
SQL 从根本上说是一个高级声明式语言。查询数据的手段是,声明想要的查询结果并让数据库引擎
判定如何获取数据。在MapReduce中,实际的数据处理步骤是由你指定的,它很类似于SQL
引擎的一个执行计划。SQL 使用查询语句,而MapReduce则使用脚本和代码。利用MapReduce可
以用比SQL 查询更为一般化的数据处理方式。例如,你可以建立复杂的数据统计模型,或者改变
图像数据的格式。而SQL 就不能很好地适应这些任务。
4.
分布式文件系统(dfs)和分布式数据库都支持存入,取出和删除。但是分布式文件系统比较暴力,
可以当做key/value的存取。分布式数据库涉及精炼的数据,传统的分布式关系型数据库会定义数据元
组的schema,存入取出删除的粒度较小。
分布式文件系统现在比较出名的有GFS(未开源),HDFS(Hadoop distributed file system)。
分布式数据库现在出名的有Hbase,oceanbase。其中Hbase是基于HDFS,而oceanbase是自己内部
实现的分布式文件系统,在此也可以说分布式数据库以分布式文件系统做基础存储。
与HDFS类似的框架有以下几种:
1、Ceph:是一个开源分布式存储系统,可以在一组服务器上提供对象存储和文件系统服务。采用纠删码技术实现高可靠、高扩展性,支持以对象的方式存储和检索数据,而且Ceph可以跨越不同硬件、操作系统等进行分布式部署。2、GlusterFS:是一个开源的分布式文件系统,可以将若干台服务器上的存储空间汇聚成一个大型的、统一的文件系统。支持多种网络协议,如NFS、SMB/CIFS等,允许用户直接从应用程序中挂载文件系统。3、ApacheCassandra:是一个高扩展性的分布式数据库,其存储结构类似于HDFS中的分布式文件系统,采用一致性哈希算法来分配不同节点上的数据。适用于大规模的数据存储场景,且具有良好的可扩展性和容错性。
HDFS是Hadoop的分布式文件系统。它是基于Google的GFS而开发的,旨在提供高可靠、高吞吐量的数据存储和访问解决方案。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!