赞
踩
TableStore是阿里云自研的在线数据平台,提供高可靠的存储,实时和丰富的查询功能,适用于结构化、半结构化的海量数据存储以及各种查询、分析。
在众多大数据场景中,爬虫类型的数据非常适合存储在TableStore。主要是因为爬虫类型数据的一些特征和TableStore和匹配:
数据量大
爬虫数据一般都是抓取的互联网上的某个行业或领域的数据,数据规模和这个行业的数据规模有关,比如资讯类,每时每刻都在产生大量新闻报道,这个数据规模可能在10 TB到100 TB级别,如果考虑到历史存量数据,那么规模可能会更大。这么大量的数据存储已经不适合用单机的关系型数据库了,也不适合分库分表了,而需要一款分布式NoSQL数据库,这样可以将数据按一定的路由规则分布到不同机器上,实现自动的水平扩展,非常适合存储海量数据,尤其是爬虫类。
宽行和稀疏列
爬虫的数据一般来源于多个数据源,比如资讯数据可以来自人民网、新浪或者腾讯,每个数据源的数据特征不可能完全一样,每家有每家的特殊性,这样就会出现每一行数据的属性列有差异,虽然可以归一化处理后,可以将通用的属性列统一,但是不同数据源还是会存在一定差异性。如果为每个数据源建立一张表,那么工作量就会非常大,也不适合。这时候,就需要用到宽行和稀疏列功能,既能保证列数无上限,也能保证不同行不同列,还可以不额外增加存储成本和运维成本。
查询类型多样
爬虫数据的存储后,一般有两个出口,一个是数据处理程序,数据处理程序会读取最新的爬虫数据,然后按照自定义的处理逻辑做数据加工,处理完后会新数据写入原表或新表。
数据处理完之后,数据可以提供给下游企业客户或终端用户使用了,场景的查询需求有下列几种:
爬虫数据存储的方案已经演进了将近二十年了,千奇百怪的各种方案都有,主要的差异来源于两点:
当前业内的开源存储系统有两大类,一类是开源的关系型数据库,比如MySQL等,一类是NoSQL,比如HBase等。这两类数据存储系统都不能支持分词查询,那么还需要一个全文检索的系统,当前可选的有solr和Elasticsearch。
基于上述的素材,我们就可以搭建一个存储爬虫的系统了:
大概解释下:
最开始,我们说TableStore很适合存储爬虫数据,在介绍了开源系统的解决方案后,我们再来看一下TableStore的解决方案,以及相对于开源系统,可以为客户带来的收益。
也先看一下架构图:
大概解释下:
示例
我们接下来举一个简历类爬虫数据存储和查询的示例,帮忙读者快速理解。
简历一般是一个PDF文档或者doc文档,是一个文件,但是我们可以从这些文件中抽取出结构化的信息,比如姓名、电话号码、身份证、邮箱、毕业学校、学历、专业领域、项目经验、兴趣、期望薪水和工作年限等。
首先,我们设计TableStore中主表结构:
主键列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | |
---|---|---|---|---|---|---|---|---|---|---|
身份证 | 姓名 | 电话号码 | 邮箱 | 毕业学校 | 学历 | 专业领域 | 项目经验 | 兴趣 | 期望薪水 | 工作年限 |
String | String | String | String | String | String | String | String | String | Long | Double |
61xxx5 | 王一 | 152xxx7 | aa@xx.com | MIT | 硕士 | [数据库,MySQL] | 1.数据库binlog优化。 | [足球] | 20000 | 3.5 |
大概解释下:
然后,我们再创建多元索引,多元索引的结构如下:
属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 | 属性列 |
---|---|---|---|---|---|---|---|---|
姓名 | 电话号码 | 毕业学校 | 学历 | 专业领域 | 项目经验 | 兴趣 | 期望薪水 | 工作年限 |
Text:单字分词 | Keyword | Keyword | Keyword | Keyword Array | Text:多层语义 | Keyword Array | Long | Double |
解释下:
至此,我们就把简历库的table和index都建好了,用户就可以往Table中开始写数据,数据写入后会异步同步到Index中,这样就可以通过Index查询了。
使用TableStore解决方案后,相对于开源解决方案,可以带来不少的收益:
减少运维负担
使用开源系统的架构中,需要运维6个系统,包括了3个开源系统:HBase、Kafka和Elasticsearch,为了运维这三个开源系统,需要有人对这三个系统比较熟悉,否则很难运维好。就算比较熟悉,也很难处理线上遇到的所有的问题,总会碰到无法解决的棘手问题而影响生产环境。
如果使用了TableStore云解决方案,那么就不需要运维任何开源系统,只需要运维自己开发的两个系统,同时关注TableStore中的两个表就可以了,这两张表的运维全部是TableStore服务负责,且提供SLA保障,绝对比自己运维开源系统的可用性要高。
同时,采用TableStore方案后,由于TableStore支持实时自动扩容,客户不再需要提前规划水位和集群容量,也不用担心高水位和突发流量对系统的冲击,将这些工作都交给了更擅长的云服务处理。
这样,不仅降低了运维的工作量和压力,同时也降低了系统风险,提高了系统整体的可用性。
减少时间成本
TableStore云架构方案相对于开源方案,系统更少,从零开始到上线需要的开发时间更少,同时,TableStore是serverless的云服务,全球多个区域即开即用,可以大大降低客户的开发上线的时间,提前将产品推出,抢先争取市场领先优势。
同时,TableStore支持按量付费,用户完全可以根据真实使用量付费,不再需要担心低峰期系统资源的浪费了,一定程度上,也能降低使用成本。
目前,已经有不少行业的客户在使用TableStore存储爬虫数据,比如资讯类、生活类、文章类等等,也有部分用户在小数据量级时使用MySQL等关系型数据库,等数据规模大了后被迫迁移到TableStore存储。同时欢迎更多的客户开始使用TableStore存储你们的爬虫数据。
原文链接
本文为云栖社区原创内容,未经允许不得转载。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。