1、Hbase产生背景
1.1、hadoop特点
(1)存储:对于任意格式的庞大数据集,hadoop可以做到安全存储
(2)单条记录:无法在庞大数据集中做针对单条记录随机的低延迟的增删改查
1.2、hive特点
(1)存储:对于存储在HDFS上的结构化数据抽象成为一张二维表格,使用Hive进行各种Insert/select操作
(2)单条记录:Hive还是天生不支持对于单 条记录的增删改查,也不是设计用来做单条记录的增删改查的。
1.3、传统关系型数据库
(1)海量数据量存储成为瓶颈,单台机器无法负载大量数据
(2)单台机器IO读写请求成为海量数据存储时候高并发大规模请求的瓶颈
(3)随着数据规模越来越大,大量业务场景开始考虑数据存储横向水平扩展,使得存储服务可以增加/删除, 而目前的关系型数据库更专注于一台机器
2、分布式数据库设计方案
5.1、业务场景
(1)京东,有史以来所有的交易快照有上千亿数据,请问,如何给用户理解返回点击查询某次交易详情的快照 信息呢?
(2)腾讯QQ和微信聊天记录,当公安系统需要调用聊天记录来作为证据时候,需要从上十亿用户经年累月的聊 天记录快速定位某天的聊天记录内容呢?
(3)谷歌nutch爬取数以万亿级的网页分析数据又该如何做针对记录级别的随机读写呢?
2.2、设计目标
(1)分布式
(2)低延时
(3)支持记录级别的CURD
(4)确保数据一致性
3.3、设计难点
(2)是否能找到一种合适的数据结构和搜索算法能快速从一个数据集中找出一个元素?
(3)如何设计分布式系统?
-
CASE:
-
解决方案:网络编程模型NIO RPC Netty:
4.4、设计要点
(1)提高查询效率
①内存 + 磁盘
热数据(经常查询数据)放在内存中,冷数据放在磁盘中。
②内存数据良好的数据结构
内存中采用高性能数据结构,提高数据CURD效率。
③磁盘数据 + 布隆索引
④范围分区 + 排序
在内存中的数组数据结构进行数据排序,之后将所有溢写的小文件最后进行归并排序。
- 注意事项:海量数据查找
- ①暴力扫描
- ②先排序、然后通过范围分区+分段扫描
⑤跳表Topo结构
本质上就是将二分查询物化成一张元数据表,根据元数据表确定记录在那个节点,将原本扫描所有节点数据变为扫描一个节点。
⑥读缓存 + 写缓存
(2)确保数据安全
①内存 + 磁盘
②WAL机制
在任何数据增删改之前,都会记录操作日志,之后才把数据更新到内存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。