近期测试不同项目时,发现针对不同任务、业务分别使用Hive、mongodb、redis、mysql来管理数据的存储、读取。
mysql作为一个入门级的数据库比较了解,但其余的几个数据存储的特性与使用场景就较为陌生。
以此为契机对这几种数据存储特性及适用性做了简单的归纳与整理。
Hive
简介
简单来说Hive是Hadoop的数据仓库架构,可以将结构化的数据文件映射为一张表,可对存储于HDFS中数据进行分析与管理。
Hive原仅可进行查询,自0.14版本开始支持update和delete,但要执行update和delete的表必须支持ACID。但由于Hadoop自身有较高的延迟,故不可实现低延迟快速的查询。
操作原理
将SQL转化为MapReduce 任务进行运行,这套 SQL 简称 Hive SQL(HQL),便于使用者使用SQL进行数据的存储、查询、分析等操作。也可自定义函数进行数据操作。
常用场景
Hive构建在基于静态批处理的Hadoop之上的,所以 Hive的最佳使用场合是大数据集的批处理作业,即离线数据的分析。
日志存储:存储离线的日志信息供后续定位、分析使用;
多维度的数据分析;
大量结构化数据的离线分析。
主要特点
快速开发,学习成本较低;
支持不同的存储类型:纯文本文件HBASE的文件等;
支持自定义函数,来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
mongodb
简介
mongodb是一个基于分布式文件存储的非关系数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
mongodb将数据存储为一个文档,数据结构由键值(key=>value)对组成,文档内容类似于常用的json对象。
常用场景
mongodb较传统的RDBMS,提供了高性能和高度伸缩性:
web数据:插入,更新与查询的优势,具备网站实时数据存储所需的复制及高度伸缩性;
缓存:由于性能很高,mongodb也适合作为信息基础设施的缓存层;
大尺寸、低价值的数据的存储:使用成本较低。
主要特点
面向文档存储的数据库,学习、操作较简单;
支持完全索引,包含内部对象,可实现快速排序、查询等;
mongodb的查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组;
可通过本地或者网络创建数据镜像,有更强的扩展性。
redis
简介
redis是一个高性能的key-value数据库。
它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
常用场景
redis相较于其他数据存储最大的优势在于性能与高并发。
String:常规key-value缓存应用,常规计数;
list:最常用于消息队列;
hash:结构化数据,如社会关系等场景数据的存储;
set:与list类似的列表功能,但可以自动去重。支持对数据交集、并集、差级计算;
sorted set:与set类似,但支持参数化自动排序。
主要特点
以内存为数据存储介质,读取效率极高;
数据持久化,内存的数据保存到磁盘中,重启可再次加载适用;
操作的原子性,要么成功要么完全不执行。
Qtest是360旗下的专业测试团队!
是WEB平台部测试技术平台化、效率化的先锋力量!
领取专属 10元无门槛券
私享最新 技术干货