HBase、Hive、Redis 和 MongoDB的对比

1. 数据库管理

操作HBaseHiveRedisMongoDB
创建数据库N/A (HBase 没有数据库概念)CREATE DATABASE db_name;N/A (Redis 没有数据库命名功能)use db_name; (自动创建)
查看数据库N/ASHOW DATABASES;INFO 查看全局信息show dbs;
删除数据库N/ADROP DATABASE db_name CASCADE;N/Adb.dropDatabase();
切换数据库N/AUSE db_name;SELECT db_indexuse db_name;

2. 表管理

以下是 HBaseHiveRedisMongoDB 中进行表结构增改操作的总结,具体包括表的增加和修改操作。

操作HBaseHiveRedisMongoDB
增加表创建时指定列族 create 'table_name', 'cf1', 'cf2'
创建带版本的表 create 'version_table', {NAME => 'cf', VERSIONS => 5}
CREATE TABLE table_name (...);N/A (键值对模型,没有表结构)db.createCollection("table_name")
修改表alter 'table_name', {NAME => 'new_cf', METHOD => 'add'}
添加列族或修改表的配置
ALTER TABLE table_name ADD COLUMNS (column_definition);修改键值对:SET key_name valuedb.table_name.updateOne(),
db.table_name.updateMany()
查看表listSHOW TABLES;KEYS * 查询所有键show collections;
表结构describe 'table_name'DESCRIBE table_name;
查看详细信息
DESCRIBE table_name;
N/Adb.table_name.stats()
删除表disable 'table_name'
drop 'table_name'
DROP TABLE table_name;DEL key_namedb.table_name.drop()

3. 数据操作

插入数据
操作HBaseHiveRedisMongoDB
插入单行put 'table_name', 'row1', 'cf1:col1', 'value'INSERT INTO table_name VALUES (...);插入键值对字段SET key value 插入哈希表字段 HSET hkey:hvalue key valuedb.table_name.insert({...})
批量插入使用脚本或 API 插入LOAD DATA INPATH 'path' INTO TABLE ...;MSET key1 value1 key2 value2db.table_name.insertMany([{...}])

查询数据
操作HBaseHiveRedisMongoDB
查询所有数据scan 'table_name'SELECT * FROM table_name;KEYS * 查询所有键HGETALL hkey:hvaluedb.table_name.find()
按条件查询get 'table_name', 'row1' 查询版本数据get 'my_table', 'row1', {COLUMN => 'cf:column1', VERSIONS => 3}SELECT * FROM table_name WHERE ...;GET keydb.table_name.find({...})
字段查询get 'table_name', 'row1', 'cf1:col1'SELECT col1 FROM table_name;HGET hkey:hvalue key valuedb.table_name.find({}, {field: 1})

更新数据
操作HBaseHiveRedisMongoDB
更新单个值put 'table_name', 'row1', 'cf1:col1', 'new_value'UPDATE table_name SET col1 = ... WHERE ...;SET key new_valuedb.table_name.updateOne({...}, {$set: {...}},true.false)参数1:查询条件,类似sql update 查询内 where 后的条件;参数2:update 的对象,类似 sql 中 update 中 set 后的内容;参数3:如果没有 update 的记录,true 表示插入,默认 false, 表示不插入;参数4:默认 false 表示只更新找到的第一条记录,true 表示更新所有满足条件的记录。
批量更新使用脚本或 API 批量更新批量更新不常见不支持直接批量更新,需逐个设置db.table_name.updateMany({...}, {$set: {...}})

删除数据
操作HBaseHiveRedisMongoDB
删除单行delete 'table_name', 'row1'DELETE FROM table_name WHERE ...;DEL keydb.table_name.deleteOne({...})
删除某字段delete 'table_name', 'row1', 'cf1:col1'N/AHDEL hash_key fielddb.table_name.update({...}, {$unset: {field: 1}})
删除所有数据删除表再重建TRUNCATE TABLE table_name;FLUSHDBdb.table_name.deleteMany({})

4. 其他管理操作

操作HBaseHiveRedisMongoDB
查看存储状态status查看 Hadoop 状态,需依赖 HDFSINFO 查看运行状态db.stats()
备份数据使用快照或导出工具使用 HDFS 导入导出功能保存 RDB/AOF 文件使用 mongodump
恢复数据使用快照恢复使用 HDFS 数据恢复载入 RDB/AOF 文件使用 mongorestore
查看日志检查 HBase 日志目录检查 Hadoop 日志查看 Redis 日志文件查看 MongoDB 日志文件

启动和关闭操作总结

数据库启动命令关闭命令说明
Hadoop./sbin/start-dfs.shstart-yarn.sh./sbin/stop-dfs.shstop-yarn.sh启动 Hadoop 分布式文件系统(HDFS)和资源调度框架(YARN),其他组件如 Hive/HBase 均依赖它
HBase./bin/start-hbase.sh./bin/stop-hbase.sh集群模式下,需确保 Zookeeper 服务已启动;依赖 HDFS 提供存储支持
Hive./bin/hivehive --service hiveserver2 &exit需先启动 Hadoop 服务,包括 HDFS 和 YARN,Hive 基于 Hadoop 提供 SQL 接口
Redis./src/redis-serverredis-cli shutdownkill <pid>简单高效,适合开发和缓存场景,独立运行,无需依赖其他服务
MongoDBsudo service mongod startmongod --config ...sudo service mongod stopdb.shutdownServer()默认无密码,生产环境建议配置用户权限和访问限制,独立运行,无需依赖其他服务

特点总结

数据库特点对比表

特性/维度HBaseHiveRedisMongoDB
数据库类型分布式 NoSQL 数据库,基于 HDFS 的列式存储分布式 SQL 数据仓库,基于 Hadoop 的批处理框架内存型键值对数据库文档型 NoSQL 数据库,最像关系型数据库的非关系型数据库
数据模型行键 + 列族 + 列的多维度数据模型传统关系型数据库表模型(Schema),支持分区表和桶表键值对模型(字符串、哈希、列表、集合、有序集合、Stream)BSON 文档模型(类 JSON),支持嵌套数据
存储机制基于 HDFS 的列族存储,分布式存储,适合稀疏表基于 HDFS 存储,通过 MapReduce 或 Tez 实现查询和处理内存存储,支持持久化为 RDB 文件或 AOF 文件二进制 JSON (BSON) 存储,支持分布式存储
查询语言无查询语言,主要通过 Shell (scan和get)或编程接口(如 Java API)操作HiveQL(类似 SQL 的查询语言),支持简单的 SQL 操作无查询语言,命令操作(如 GET, SET, HGET丰富的查询语言,支持 JSON 格式的复杂查询
事务支持不支持事务,提供最终一致性不支持事务,数据主要用于批量查询支持简单事务(MULTI/EXEC),5.0+ 支持 Lua 脚本事务支持多文档事务
扩展性高扩展性,支持 PB 级数据,适合大规模分布式集群高扩展性,依赖 Hadoop 的分布式架构高扩展性,支持主从复制和分布式分片高扩展性,支持分片和复制集
性能写性能高,读性能较慢,适合实时写入大规模稀疏数据查询速度慢,依赖 Hadoop 集群执行,适合离线批量查询极高的读写性能(内存操作),适合实时请求场景性能较高,适合多样化的数据存储和查询
适用场景实时写入和查询大规模稀疏表,如 IoT 数据、时间序列数据大规模数据的批量分析,如数据仓库、报表生成高速缓存、会话管理、实时计数、排行榜等应用程序数据库、文档存储、复杂查询场景
数据一致性提供最终一致性依赖底层 HDFS 的容错性,最终一致性单机模式强一致性,分布式模式支持最终一致性强一致性,支持多文档事务
索引机制不支持二级索引,查询需按行键检索依赖分区、桶和 HDFS 的 MapReduce 索引机制数据类型内置索引(如有序集合),但无复杂索引支持单字段索引、复合索引、地理空间索引等
编程接口提供 Java、Python、Thrift 等多种 API,适合与应用程序集成提供 JDBC/ODBC 接口,适合与 BI 工具和数据分析工具集成提供多语言客户端库(Python、Java、Node.js 等),简单易用提供多语言客户端(Python、Java、Node.js 等),支持复杂的查询语法
集群模式支持分布式集群部署,分布式读写性能高Hadoop 环境下支持集群部署主从复制、分布式分片,支持高可用和负载均衡支持分片集群和复制集模式,适合高并发和高可用场景
持久化机制数据存储在 HDFS 上,依赖 HDFS 的容错机制通过 HDFS 持久化支持 RDB 快照和 AOF 持久化持久化数据到磁盘,支持定期备份和恢复
开发难度操作复杂度高,学习曲线陡峭,需要深入理解 HDFS 和 MapReduce 的工作原理接近传统 SQL,适合有 SQL 基础的开发者简单易用,入门门槛低,适合轻量级数据管理易用性较高,灵活性强,适合需要快速开发的场景
高可用支持支持 HBase Master 和 RegionServer 的容错和自动恢复高可用性依赖 Hadoop 的容错机制主从复制和哨兵模式,支持快速故障转移支持复制集机制,实现高可用性
典型应用大数据实时存储与分析:物联网、日志存储、金融流水数据数据仓库与离线分析:ETL、报表生成、用户行为分析实时缓存:Web 应用、实时统计、消息队列、限流灵活应用场景:内容管理系统、用户画像、移动应用数据库
开源与维护开源项目,Apache 基金会维护,活跃度高开源项目,Apache 基金会维护,广泛应用于大数据处理开源项目,Redis Labs 维护,社区活跃开源项目,MongoDB Inc. 维护,商业支持和社区支持丰富

选择建议

使用场景推荐数据库
实时写入和随机读取大规模稀疏数据HBase
离线批量处理和数据分析Hive
高并发实时缓存或会话管理Redis
灵活存储和复杂查询场景MongoDB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/938740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

visual studio添加滚动条预览

如何在vs中添加如图的滚动条呢&#xff1f; 打开VS 工具栏 选项 - 文本编辑器 - C/C - 滚动条 行为-使用缩略图 -- 确定

VUE利用一句话复刻实现变声功能

实现思路&#xff1a;利用语音听写实现语音输入---拿到文字后自动调用一句话复刻实现声音输出。最终效果是A输入语音能够转换成B的语音输出。 <template><div class"One-container"><div><hr/><!--发音音色列表展示--><el-row :gut…

Firefly: 大模型训练工具,命令行执行训练,没有界面

文章目录 GitHub地址参数说明训练命令 Firefly: 大模型训练工具&#xff0c;支持训练Qwen2.5、Qwen2、Yi1.5、Phi-3、Llama3、Gemma、MiniCPM、Yi、Deepseek、Orion、Xverse、Mixtral-8x7B、Zephyr、Mistral、Baichuan2、Llma2、Llama、Qwen、Baichuan、ChatGLM2、InternLM、Zi…

自动驾驶AVM环视算法--python版本的俯视碗型投影模式

c语言版本和算法原理的可以查看本人的其他文档。《自动驾驶AVM环视算法--3D碗型投影模式的exe测试工具》本文档进用于展示部分代码的视线&#xff0c;获取方式网盘自行获取&#xff08;非免费介意勿下载&#xff09;&#xff1a;链接: https://pan.baidu.com/s/1STjUd87_5wDk_C…

汽车供应链 “剧变”开始,“智能感知潜在龙头”诞生

智能汽车产业链“剧变”已经开启&#xff0c;智能感知软硬件能力的权重正在不断被放大。 比如满足高阶泊车的第二代AK2超声波传感器、满足人机共驾场景需求的电子外后视镜&#xff08;CMS&#xff09;、iTOF 3D成像视觉感知&#xff08;用于舱内监控&#xff09;等新产品&…

计算机网络——期末复习(2)1-3章考试重点

第一章 概述 1、发送时延&#xff0c;其中数据帧长度为数据块大小1B8位 2、传播时延 3、 第二章 物理层 1、奈氏准则&#xff1a;理想低通信道的最高码元传输速率2W&#xff0c;W为理想低通信道的频率带宽 2、香农公式&#xff1a;&#xff0c;C为信道的极限信息传输速率&…

C++算法第九天

本篇文章我们继续学习c算法 目录 第一题 题目链接 题目展示 代码原理 暴力解法 二分解法 代码编写 第二题 题目链接 题目展示 代码原理 代码编写 重点回顾 朴素二分 非朴素二分 重点一 重点二 重点三 第一题 题目链接 153. 寻找旋转排序数组中的最小值 - 力…

HarmonyOS 实时监听与获取 Wi-Fi 信息

文章目录 摘要项目功能概述代码模块详细说明创建 Wi-Fi 状态保存对象Wi-Fi 状态监听模块获取当前 Wi-Fi 信息整合主模块 运行效果展示性能分析总结 摘要 本文展示了如何使用 HarmonyOS 框架开发一个 Demo&#xff0c;用于监听手机的 Wi-Fi 状态变化并实时获取连接的 Wi-Fi 信息…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能&#xff08;AI&#xff09;领域处于领先地位&#xff1b;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论&#xff0c;但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

【Qt】显示类控件:QLabel、QLCDNumber、QProgressBar、QCalendarWidget

目录 QLabel QFrame 例子&#xff1a; textFormat pixmap、scaledContents alignment wordWrap、indent、margin buddy QLCDNumber 例子&#xff1a; QTimer QProgressBar 例子&#xff1a; QCalendarWidget 例子&#xff1a; QLabel 标签控件&#xff0c;用来显示…

0001.基于springmvc简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习&#xff0c;虽然版本比较老但是部署方便&#xff0c;tomcat环境即可启用&#xff1b;代码简洁&#xff0c;前后端代码提供可统一学习&#xff1b;祝愿您能成尽快为一位合格的程序员&#xff0c;愿世界没有BUG; …

Wallpaper壁纸制作学习记录12

角色表 创建人偶变形动画的更高级方法可以使用角色表来完成。角色表要求您使用角色的切割版本&#xff0c;将您的角色分成不同肢体/部分。这允许创建更复杂、更准确的动画&#xff0c;因为部分可以自由移动和重叠&#xff0c;而不会使图像失真。使用操控变形不一定能获得良好的…

【Python项目】基于Django的语音和背景音乐分离系统

【Python项目】基于Django的语音和背景音乐分离系统 技术简介&#xff1a;采用Python技术、Django框架、B/S结构&#xff0c;MYSQL数据库等实现。 系统简介&#xff1a;系统完成在线的音频上传&#xff0c;并且通过计算机的神经网络算法来对系统中的背景音乐和人声进行分离操作…

负载均衡oj项目:介绍

目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码&#xff0c;oj模块会在所有在线的后端主机中选择一个负载情况最低的主机&#xff0c;将用户的代码提交给该主机&#xff0c;该主机进行编译运行&#xff0c;将结果返回…

【鸿睿创智开发板试用】移植OpenCV 4到OpenHarmony 4.1

目录 目录 引言 编译系统镜像 (1) 下载代码后解压SDK (2) 下载docker镜像   (3) 编译OH 编译OpenCV 下载OpenCV源代码 构建编译配置文件 执行编译命令 安装库和头文件 测试 结语 引言 最近有个需求是在基于RK3568的OpenHarmony 4.1系统中使用OpenCV&#xff0c…

【HarmonyOS之旅】HarmonyOS开发基础知识(一)

目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…

【机器人】Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试

在复杂场景中实现抓取检测&#xff0c;Graspness是一种端到端的方法&#xff1b; 输入点云数据&#xff0c;输出抓取角度、抓取深度、夹具宽度等信息。 开源地址&#xff1a;https://github.com/rhett-chen/graspness_implementation?tabreadme-ov-file 论文地址&#xff1…

B站bilibili视频转文字字幕下载方法

本文将讲述介绍一种使用本地工具如何快速的下载B站的字幕为本地文本文件的方法。 通常获取B站字幕需要在浏览器中安装第三方插件&#xff0c;通过插件获取字幕。随着大模型&#xff0c;生成式AI&#xff0c;ChatGPT的应用&#xff0c;B站也提供了AI小助手对视频的内容进行总结…

CSS3 实现火焰-小火苗效果

创建 CSS3 火焰效果可以通过组合 CSS 动画、伪元素 和 渐变 来实现。以下是一个简单的实现步骤&#xff0c;展示如何制作动态火焰效果 1. HTML 结构 我们只需要一个简单的 div 容器&#xff1a; <div class"fire"></div>2. CSS 实现 基础样式 使用 …

新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?

在新能源汽车行业迅猛发展的今天&#xff0c;智慧充电桩作为支持这一变革的关键基础设施&#xff0c;正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区&#xff0c;从企业园区到住宅小区&#xff0c;智慧充电桩不仅提供了便捷的充电服务&#xff0c;还通过…