二级模式存储大数据

概要

大数据早已经成为一项专门的领域。本人多年前也遇到过数据量巨大的项目,使用单mysql表读写性能非常的差,后来经过调研,使用了hbase存储加上spark计算的方式,存储效率和计算效率都得以巨大的提升,效果可以说是非常的好的。不过回头来看,这样的做法也存在一些弊端,主要有两个。一是前期的学习成本非常高,做后端研发的人几乎人人都会sql,但是hbase是一个nosql的数据库,接触过的人不多。Spark是一门scala开发的并行计算框架,主流使用scala和java语言开发。也就是使用该方案需要前期的学习周期很长。二是运维成本也较大,hbase底层使用hdfs进行数据存储,spark也是基于内存的并行计算框架,对资源的消耗都是巨大的。另外能运维好这些工具也是有成本的。

那么对于无限增长的数据,有什么简单又可靠的存储方式么?本文介绍一种基于meta表的两级存储模式。

架构图

 

描述

Meta table中存储的是bucket,内部是key value对。Data table是真实存储的数据表。Meta table其实只是存储一个对应关系,不会存储数据,因此它是可扩展的。Meta table中Value是表示真实数据存储的data table的地址。key的设计可以简单分为两种情况。一是很多互联网产品都是基于城市维度进行的开城,每个城市的数据量都不至于太大,可以单表存储。因此使用cityid作为meta table的key。二是类似于电商中的产品,不能简单由一个维度进行划分的,这时可以使用hash(uid)的方式,将一个用户的数据固定存放在一张mysql表中。设计表初期,也需要考虑数据增长的问题,当数据量增长过快时,可以将部分bucket中的映射关系改到新增的表中,然后再对原有的数据进行迁移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值