几亿条海量数据,比如新浪微博,N亿条微博如何存储?
数据存储的时候做了拆分,数据库是集群形式的。创建数据的时候,首先通过发号器生成一个ID,然后根据一致性hash算法来得到存储的节点位置。大体上思路是这个样子的。
这种大数据的存储架构思考,通常如下
1、数据样式究竟如何?就要考虑如何存储数据,例如:微博的数据,应该分几种,a.通常的微博消息体,字符串类型;b.关注方式的朋友关系链的存储;c.帐号属性信息存储等等。存储方式不同:消息体一般以NoSQL在线存储和Hadoop、MongoDB的文本消息信息存储。 关系链:分布式NoSQL方案 ;帐号属性: mysql PostGresSQL在线存储。2、数据时效性不同而导致的数据存储方案不同。 比如: 关系链肯定是内存化存储的,消息体也有最近1周的在线存储。这样,就可以保证数据的时效性、快速访问。 而离线数据的存储,可以hdfs的方式来存储。至于分布式的HASH的问题,一般在在线时效存储中要考虑,平行扩容、容灾恢复问题。而离线HDFS则由于本身的分布式系统特性,不用太考虑这些分布式一致性Hash问题。
推荐使用神箭手云爬虫,完全在云上编写和执行爬虫,不需要配置任何开发环境,快速开发快速实现。
简单几行 javascript 就可以实现复杂的爬虫,同时提供很多功能函数:反反爬虫、 js 渲染、数据发布、图表分析、反防盗链等,这些在开发爬虫过程中经常会遇到的问题都由神箭手帮你解决。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
数据存储的时候做了拆分,数据库是集群形式的。创建数据的时候,首先通过发号器生成一个ID,然后根据一致性hash算法来得到存储的节点位置。大体上思路是这个样子的。
这种大数据的存储架构思考,通常如下
1、数据样式究竟如何?就要考虑如何存储数据,例如:微博的数据,应该分几种,a.通常的微博消息体,字符串类型;b.关注方式的朋友关系链的存储;c.帐号属性信息存储等等。存储方式不同:消息体一般以NoSQL在线存储和Hadoop、MongoDB的文本消息信息存储。 关系链:分布式NoSQL方案 ;帐号属性: mysql PostGresSQL在线存储。
2、数据时效性不同而导致的数据存储方案不同。 比如: 关系链肯定是内存化存储的,消息体也有最近1周的在线存储。这样,就可以保证数据的时效性、快速访问。 而离线数据的存储,可以hdfs的方式来存储。至于分布式的HASH的问题,一般在在线时效存储中要考虑,平行扩容、容灾恢复问题。而离线HDFS则由于本身的分布式系统特性,不用太考虑这些分布式一致性Hash问题。
推荐使用神箭手云爬虫,完全在云上编写和执行爬虫,不需要配置任何开发环境,快速开发快速实现。
简单几行 javascript 就可以实现复杂的爬虫,同时提供很多功能函数:反反爬虫、 js 渲染、数据发布、图表分析、反防盗链等,这些在开发爬虫过程中经常会遇到的问题都由神箭手帮你解决。