开发者社区> 寻剑> 正文

基于表格存储Tablestore和OSS实现企业网盘

简介: 表格存储Tablestore是阿里云自研的结构化数据存储平台,提供海量结构化数据存储以及快速的查询和分析服务。表格存储Tablestore的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。
+关注继续查看

表格存储Tablestore是阿里云自研的结构化数据存储平台,提供海量结构化数据存储以及快速的查询和分析服务。表格存储Tablestore的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

网盘是一种在线存储服务,服务商为用户提供文件的存储、访问、共享等文件管理必备的基本功能。我们将其数据分为两种:

  • 文件。
  • 用户存放的真实文件。早期,网盘中的文件大多存储在文件系统中,如本地磁盘、HDFS、NAS等。现在网盘更多的选择存储在对象存储中,如OSS,其在稳定性、安全性、成本、弹性上都会具有优势。
  • 元数据(Meta)。
  • 描述文件信息的数据,如归属者、目录、大小、创建时间、文件类型等。利用该元数据可以找到真实的文件地址,也可以利用元数据做文件的查询、分享、归类等。

1574067542411_0e8ab739_1e68_4a3f_9168_96e577bcd772

文件数据直接使用OSS存储即可,简单高效。最复杂的是元数据的存储和查询,接下来我们看下网盘元数据(Meta)的存储和查询解决方案。

网盘元数据特点

网盘类型的元数据非常适合存储在Tablestore,主要是因为网盘类型元数据的一些特征和Tablestore匹配。

数据量大

存储海量网盘元数据的同时,需要满足强一致、高可用、低成本等要求。用户的文件数量巨大,比如图片、视频、工作文档是数量最多的数据,一个企业的网盘元数据规模通常在TB级别。传统的Mysql方案中,数据量一旦达到瓶颈,便需要重新创建更大规模的分库然后进行数据的全量迁移,同时数据迭代、膨胀带来的困扰是MySql方案难于逾越的门槛。因此,如此规模的数据存储已经不适合用单机的关系型数据库了,也不适合分库分表了,而需要一款分布式NoSQL数据库,这样可以将数据按一定的路由规则分布到不同机器上,实现自动的水平扩展,非常适合存储海量数据。

查询类型多样

网盘类型元数据与一般元数据不同的是有很多的tag标签,因此系统需要具备搜索查询多维度嵌套标签的能力。以图片为例:用户通过智能媒体的分析服务,分析图片然后为图片增加标签,用户还可提取人脸识别相关信息,提取的信息也需要存储到文件元数据信息中。图片的元数据信息量不断增加,格式、类型也在不断呈现多元化。因此,需要具备丰富的查询类型,如多维度、范围、模糊查询、地理位置等,同时具备排序、统计等功能。比如用户希望查找在杭州市某个商圈1km内的照片?查找2019年所有关于儿子成绩单的excel文件?这时候关系型数据库可能在查询功能和性能上不一定能满足需求,需要额外使用一些查询引擎如Solr、Elasticsearch等。

服务性能及成本

新业务需要产品快速上线,这时候既要高并发,又要保证低延迟,同时又希望兼顾成本最低。随着系统用户的增多减少以及不可预期的热点事件,需要能够动态的扩容和缩容来节约成本,比如系统起步阶段可以使用一款全托管的Serverless数据库,来专注于业务研发,无需担心软硬件配置、故障、集群扩展、安全等问题,在保证服务高可用性的同时,极大地减少了管理及运维成本,帮助产品快速上线。

开源解决方案

传统的网盘元数据可能会采用关系数据库Mysql的方案,借助关系型数据库强大的查询能力,用户可直接通过SQL语句实现文件的元数据多维度查询、数据统计分析等。但是,Mysql等关系数据库通常有如下一些问题:

  • 随着数据量的膨胀无法水平扩展。数据库要满足易扩展、低成本等基本要求;
  • 对文件的多维查询需求支持不佳。数据库需要具备强大的查询能力,如多类型索引、多维度组合查询等,同时具备排序、统计等功能;
  • 在数量比较大的情况下,写入性能较差。数据库需要应对高并发请的同时,保证低延迟、强一致、高可用等特性。

为了解决如上问题,多种数据库组合的方案便孕育而生,如Mysql分库分表+Elasticsearch的方案解决写入和查询能力等问题,这些方案的架构可能如下:

3

借助多个数据库各自的优势可以分别解决不同场景的需求,但多个数据库组合的方案同样也带来了新的问题:

  1. 牺牲了空间成本,Mysql和Elasticsearch中的数据存在无用的冗余数据;
  2. 较难保证两个数据库的数据一致性,存在数据丢失的可能性;
  3. 增加了开发工作量与运维复杂度。

Tablestore云解决方案

在现有的各种各样的云产品中,能满足上述网盘元数据需求的产品并不多。表格存储Tablestore是阿里云借鉴谷歌Bigtable论文研发的一款分布式数据库产品,可以提供超大规模的存储容量,天然的分布式架构也提供了易于横向扩展的特性,理论上可以存储的数据量是不受限制的。该数据库10年前就开始自研,经过多年的双十一、公有云客户的锤炼沉淀,保证了系统的可靠性和稳定性。

基于Tablestore存储网盘架构方案如图:

3

网盘文件的存储

OSS和表格存储Tablestore一样,都是Serverless的云服务,其数据设计持久性不低于99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995%。OSS按量使用且无需关心运维。使用oss进行文件的存储会使应用在稳定性、安全性、成本、弹性上都会具有优势。不用自己搭建和维护文件系统,开发人员可以把精力放在核心功能的开发上。

网盘元数据的存储

  • 网盘元数据数据存储在Tablestore中,Tablestore可以提供10个9的数据可靠性保障,数据可靠性有保障。
  • 网盘元数据和索引都在一个系统里面,写入,读取都是通过同一套API写入和查询,易用性更高。
  • Tablestore支持二级索引、多元索引等索引功能,完全满足上述提出的查询需求,包括:
  • 多字段自由组合查询。
  • 范围查询。
  • 地理位置查询。
  • Tablestore是分布式系统,可以水平扩展,目前生产环境单表最大有几十PB,每秒写入有几千万行,完全能胜任任何大数据的写入和存储。

示例

接下来,我们通过一个网盘元数据的使用示例增加理解。

假设我们的产品需要给用户提供个人相册服务。将相册中的图片和视频存储在对象存储OSS中,将图片和视频的元数据(Meta Data)存储在表格存储Tablestore中。一般的文件Meta信息包括:用户id、文件id、文件类型、创建时间、照片地点、文件大小、文件状态、标签信息、OSS链接、是否星标文件、用户描述信息。

首先,我们设计Tablestore中主表结构:

1

Tablestore的主表在查询时候可以理解为是几个主键列上的前缀索引,上述主表结构中,支持的查询包括:

  • 一个用户下的所有图片或视频
  • 一个用户某一段时间内的图片或视频
  • 查看用户最近的图片或视频

Tablestore支持全局二级索引。全局二级索引支持在指定列上建立索引,生成的索引表中数据按您指定的索引列进行排序,主表的每一个写入都将自动异步同步到索引表。您只向主表中写入数据,根据索引表进行查询,在许多场景下,将极大的提高查询的效率。例如网盘场景下如果主键查询不能满足需求,对于简单的查询(例如单个字段查询)我们可以直接创建全局二级索引,通过全局二级索引能够快速的查询信息。

通过主表和二级索引,已经能够完成相册的基本功能,如文件的上传下载等。如果想完成更加丰富和复杂的查询功能(多个字段关联查询),可以使用Tablestore的多元索引功能,其中多元索引的索引定义:

2

  • 用户描述信息采用了Text类型, 支持分词,分词使用了单字分词。该字段可以进行模糊匹配查询。
  • 拍摄地点采用了GeoPoint类型,这个类型支持范围查询。比如某个点附近几公里内的所有照片,同时也支持某个多边形范围内的所有照片信息。
  • 标签信息是Nested嵌套类型的,其支持的查询和非嵌套类型一致,只是使用方式上有一些小差别。
  • 多元索引支持多字段组合查询,可以满足任意几个列与或非组合查询,如:查询文件类型是图片且拍摄地点是上海且文件大小超过100MB且是标星文件且创建时间在9月份之前的所有照片?

另外,可能还有一些统计聚合需求,在运营产品和制作报表时候可能会用到。这些都可以基于多元索引完成,比如:

  • 目前所有用户的相册中一共有多少张?通过Aggregation.Count(*);
  • 所有用户中超过1G的文件有多少个?GroupBy.GroupByRange(文件大小);
  • 视频和图片各有多少张?通过 GroupBy.GroupByField(文件类型);
  • 过去三年每年相册的上传数量? 通过 GroupBy.GroupByRange(创建时间);
  • 视频文件中最大文件有多大? 通过Aggregation.Max(文件大小);
  • ...

基于上述的表、二级索引和多元索引,我们就能满足几乎所有的查询需求。

总结

至此,开源解决方案和Tablestore云解决方案都介绍完了,使用了Tablestore云解决方案后,能带来不少的收益。

减少运维负担

在Tablestore云解决方案中,用户只需要运维自己的应用程序,不需要运维任何的存储系统、查询系统和其他中间件,运维压力大大减少,同时也减少了运维方面的成本开支。另外,Tablestore是Serverless的服务化产品,不需要关注扩容、水位等事项,只需要关注功能开发即可。

系统架构更简单

在开源解决方案中使用多个系统,而Tablestore解决方案中只有1个系统,系统数减少后,系统架构会更简单,系统可能产生的风险会更少,系统的稳定性等会更高,可以提供更优质的服务体验。

减少时间成本

Tablestore云架构方案相对于开源方案,系统更少,从零开始到上线需要的开发时间更少,同时,Tablestore是serverless的云服务,全球多个区域即开即用,可以大大降低客户的开发上线的时间,提前将产品推出,抢先争取市场领先优势。

数据可靠性更高

在开源解决方案中,数据有可能会丢失,影响最终的业务,而在Tablestore解决方案中,可以提供更高的可靠性,可以让数据不丢失,保障业务的准确执行。

扩展阅读

表格存储 (Tablestore) 提供专业的免费技术咨询服务,欢迎加入我们的钉钉讨论群。群号 : 23307953
4

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
用阿里云对象存储OSS搭建个人网盘或企业网盘的方法
阿里云对象存储OSS是低成本高可靠的存储服务,使用阿里云OSS对象存储搭建个人网盘或企业网盘的方法
39 0
海量结构化数据存储技术揭秘:Tablestore表设计最佳实践
前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库。在处理海量数据时,方案设计非常重要,合理的设计才能够发挥出数据库的性能水平。本文主要介绍Tablestore在表设计方面的一些实践经验,供大家参考。
8185 0
基于Tablestore实现海量运动轨迹数据存储
前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步、跑步里程、骑行里程等。运动APP与运动类的穿戴设备借助传感器、地图、GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生了一种新的运动模式。
4365 0
C#读取Excel表格中数据并返回datatable
在软件开发的过程中,经常用到从excel表格中读取数据作为数据源,以下整理了一个有效的读取excel表格的方法。   DataTable GetDataTable(string tableName,string leftTopCel,string rightbutCel) ...
1092 0
快速将企业海量文件数据迁移到阿里云OSS
对象云存储因为下面两个功能特性,得到了海量使用: 可以直接http调用 可靠、安全、按量使用阿里云OSS在各大云服务商中,通过可靠、高性价比的服务得到了大量用户的仁科。 企业用户在企业内部或者传统IDC机房中,累计了海量的文件数据,如何快速将TB级别甚至PB文件数据迁移到OSS,是一个IT挑战任务。
2078 0
如何用<dl>标签做表格而不用table标签
  我们都知道很多的内容编辑器(TinyMCE编辑器、fck)都有插入表格功能,快速方便,但是这些表格用到的标签,可以查看html源代码就能发现,table标签对搜索引擎不是很友好,table太多话可能无法被SE收录,有没办法用其他方法来实现绘制表格呢?比如用标签?    标签是定义列表(defi...
970 0
我是如何在github企业版本上通过ssrf漏洞导致命令执行的?
本文讲的是我是如何在github企业版本上通过ssrf漏洞导致命令执行的?,在我上一篇文章中,我提到了以后攻击的新目标-github企业版,同样也提到了如何去除混淆的ruby代码,并在其中寻找sql注入。再次之后,我就开始阅读很多大牛挖掘github企业版的思路
2163 0
表格边框探秘table及如何快速实现细线表格
一、表格中单元格之间分隔线的隐藏方法   第 一 行 第 二 行 第 三 行 这个表格去掉了单元格之间的纵向分隔线 第 第 第 一 二 三 列 列 列 这个表格去掉了单元格之间的横向分隔线 横   线 竖   线 都 没 了 这个表格去掉了单元格之间的纵向分隔线和横向分隔线   其实上面的三个表格都有三行三列,隐藏分隔线的诀窍在于rules,察看这三个表格的源代码,我们可以看到标签中都有rules。
912 0
+关注
寻剑
xjtushilei.com
12
文章
0
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
相关文档: 混合云容灾服务 混合云备份服务 日志服务
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载