1.传统的关系型数据库
mysql
1. 开源【社区版】,收费版【企业版】
2.市场占有率最高特别是在web领域
3.安装及操作比oracle简单许多
4.
端口:3306
oracle
1. 实用环境比较严格
2.收费
3.08年收购了mysql
4.MariaDB--相当于是mysql的升级版
5.集群能力比mysql强 --- 10台
6.端口:1521
sqlserver
1.微软平台下的项目中使用
2.收费
3.端口:1433
2.nosql--非关系型数据库
(not only sql)
不支持sql语句(SQL99标准)
1.hbase 列存储数据库 -- 列家族:列簇/列族
2.MongoDB 文档型数据库 -- 爬虫项目中
3.redis 基于内存的键值对数据库
flume+kafka+sparkStreaming/storm+redis+机器学习/前端报表展示
4.Neo4J 图形结构数据库
什么时候选用nosql数据库:
1.当单表数据量过大,又不得不全表扫描,且不能进行分库分表,可以考虑使用nosql数据库
2.单表行上亿条时 --oracle 性能瓶颈
nosql数据库对事务的支持不佳:
事务: 确认支付-》更新所买产品的库存量-》与支付平台的系统交互确认-》订单生成并保存到数据库 -》更新用户的订单库数据-》完成
3.hbase的应用场景:
1.直接接入业务在线查询使用:
借助hbase的强大的分布式查询系统及完善的检索机制,可以使客户从海量数据中快速的实时查询
1.电商 订单
物流 --信息
2.快递物流公司的物理信息存储查询
3.大型社交网站数据
4.银行数据 -- 信用卡
5.电信公司
6.医疗、交通.............
2.大数据平台数据存储:
1.直接在线从hbase系统中获取数据进行需要分析
MapReduce、hive、spark可以直接从hbase中获取数据进行分析
2.离线分析平台的临时数据的存储
驴妈妈离线分析平台中的应用
3.作为实时数据展示的数据临时存储库
flume+kafka+sparkStreaming/storm+redis/hbase+前端报表展示
4.hbase的特点:
1.在生态系统中的位置 :hbase是构建在hdfs上
2.hbase源于谷歌的BigTable ,和hdfs结合使用
google的三大潮流:GFS MapReduce BigTable --- HBASE的前身
3.为海量数据提供检索和存储平台
4.基于【列存储】的分布式nosql数据库
列存储和行存储:
1.RDBMS都是基于行存储:
每行的数据是一个连续的存储单元
每行的数据被保存在一起,
插入数据或更新数据更简单
如果select时只涉及到几个字段,行所有的数据都会被加载,系统io加大
2.Hbase列存储:
每列的数据被保存在一起
每列数据是一个连续的存储单元,
插入数据或更新数据比较麻烦
如果select时只涉及到几个字段,只有涉及的列才会被系统加载读取,系统io大大减小
以列为单位进行存储,每列数据类型相同,更容易实现压缩和存储,数据更加安全
5.合适【结构化】和【非结构化】数据的存储
针对日志的类型进行讲解:
结构化的日志每条日志的字段数量和种类固定;
非结构化的日志每条日志的字段数量和种类可能不一样;
各种文档、图片、视频也都是属于非结构化数据;
6. 基于key-value形式存储的数据库
1.key:rowkey+列簇+列+时间戳 -> vlaue
2.高可用性、高性能、可伸缩的分布式数据库
高可用性、可伸缩:基于hdfs
高性能:对比RDBMS,hbase是大规模的高并发的分布式数据库;
借助强大的搜索引擎,可以快速的从海量数据中检索数据 。
结构化的日志数据 例如: Apache的访问日志
访问ip 时间 资源 http状态 访问流量
101.81.13.86 2017-1019 Get xx 200 98kb
101.81.13.88 2017-1019 Get xx 200 98kb
101.81.13.88 2017-1019 Get xx 200 98kb
非结构化的日志数据 例如:用户行为日志数据
日志类型 uuid umid 时间 浏览器
pv 001 110 15xxx Chrome
日志类型 uuid umid 时间 浏览器 订单id 金额 支付方式
支付请求 001 110 15xxx Chrome 999 88 aliapy
日志类型 uuid 订单id 金额
支付成功 001 999 88
pv 001 110 15xxx Chrome
支付请求 001 110 15xxx Chrome 999 88 aliapy
支付成功 001 999 88
如何将以上三种类型的日志数据存储到一张表中
5.hive与hbase区别
1.hive:
1.高延迟,存储的是结构化的数据
2.面向分析的,使用hql语句
3.hive不能接入业务中使用
hive与RDBMS的区别??
1.hive是面向行存储的数据仓库工具,是纯逻辑表 (不是物理表)
2.hive本身不存储和计算数据,完全依赖hdfs和MapReduce,本质就是将hql转换为MapReduce
2.hbase:
低延迟,适合存储结构化和非结构化的数据
面向数据检索和存储的,是一个数据库
hbase可以接入业务中使用
hbase是列存储,hbase中的表时物理表,通过索引可以快速进行数据的检索更新等操作
hbase是一种nosql数据库,是一个构建在hdfs上的面向列存储的分布式数据库
6.hbase的架构:
主从架构
master:
主节点,用来管理调度regionserver从节点;
负责分布表的region给