nosql和hive的区别
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类sql语句的查询功能;Hive使用Hql作为查询接口,使用HDFS存储,使用mapreduce计算;Hive是非关系型数据库即NoSQL(Not Only SQL)。
关系数据库,是建立在关系模型基础上的数据库,一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
NoSQL(非关系型数据库)
NoSQL现在被理解为 Not Only SQL 的缩写,是对非关系型的数据库管理系统的统称(正因为此,人们通常理解 NoSQL 是 anti-RDBMS)。
NoSQL 与 RDBMS 存在许多不同点,
- 最重要的是NoSQL不使用SQL作为查询语言。
- NoSQL 不需要固定的表模式(table schema),也经常会避免使用SQL的JOIN操作,一般有可水平扩展的特征。
- NoSQL产品会放宽一个或多个 ACID 属性(CAP定理)
nosql 为什么性能高
NoSQL数据库之所以具有高性能,是因为它们采用了不同于传统关系型数据库的数据存储和查询模型。
NoSQL数据库通常采用分布式架构,可以水平扩展以处理大规模数据。它们使用键值对、文档、列族或图形等非结构化数据模型,避免了复杂的关系模型和表连接操作,从而提高了数据的读写速度。
此外,NoSQL数据库还采用了高度优化的数据存储和索引机制,以及并行处理和缓存技术,进一步提升了性能。总之,NoSQL数据库通过简化数据模型、分布式架构和优化技术等手段,实现了高性能的数据存储和查询能力。
什么是NoSQL和面向列的数据库
NoSQL与关系型数据库设计理念比较 关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段
好友关系表数据的存储问题,存一条还是两条
1、使用冗余,每个人的好友信息都在数据库中有存储,就是你说的记录一对一关系2、数据缓存到内存,数据访问很快3、状态信息修改异步,比如一个人登陆了,他的好友不是马上就知道,中间间隔几秒也没有关系4、数据可能不放在关系数据库中,可能使用nosql数据库,比如mongodb,bigtable,cassandra等5、facebook,twitter就是用类似的思想
ods系统各个层级
数据分层,每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上数据分为三个层:数据运营层、数据仓库层、数据服务层。基于这个基础分层之上,再提交信息的层次,来满足不同的业务需求。
2.1数据运营层(ODS)
ODS:Operation Data Store 数据准备区,也称为贴源层。数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,是后续数据仓库加工数据的来源。
ODS层数据的来源方式:
业务库
经常会使用sqoop来抽取,例如每天定时抽取一次。
实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。
埋点日志
日志一般以文件的形式保存,可以选择用flume定时同步
可以用spark streaming或者Flink来实时接入
kafka也OK
消息队列:即来自ActiveMQ、Kafka的数据等。
2.2数据仓库层(DW)
DW数据分层,由下到上为DWD,DWB,DWS。
DWD:data warehouse details 细节数据层,是业务层与数据仓库的隔离层。主要对ODS数据层做一些数据清洗和规范化的操作。
数据清洗:去除空值、脏数据、超过极限范围的
DWB:data warehouse base 数据基础层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
DWS:data warehouse service 数据服务层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据层,一般是宽表。用于提供后续的业务查询,OLAP分析,数据分发等。
用户行为,轻度聚合
主要对ODS/DWD层数据做一些轻度的汇总。
2.3数据服务层/应用层(ADS)
ADS:applicationData Service应用数据服务,该层主要是提供数据产品和数据分析使用的数据,一般会存储在ES、mysql等系统中供线上系统使用。
我们通过说的报表数据,或者说那种大宽表,一般就放在这里
还没有评论,来说两句吧...