海量智能元数据管理系统实现解析

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 一、方案背景 用户存储海量的文档、媒体文件等数据的同时,对文件元数据(Mate)的管理不可或缺。元数据拥有多维度的字段信息,基本信息包含文件大小、创建时间、用户等。随着人工智能的发展,通过AI技术提取文件核心要素也成为文件元数据的重要信息。

一、方案背景

用户存储海量的文档、媒体文件等数据的同时,对文件元数据(Meta)的管理不可或缺。元数据拥有多维度的字段信息,基本信息包含文件大小、创建时间、用户等。随着人工智能的发展,通过AI技术提取文件核心要素也成为文件元数据的重要信息。以图片为例:用户通过智能媒体服务,获取分析图片核心标签并为标签打分,用户还可提取人脸识别相关信息,以及地理位置等信息,提取的信息也需要存储到文件元数据信息中。因而文件元数据的信息量不断增加,格式、类型也不断呈现多元化。

需求场景

某智能媒体管理平台,为用户提供文件(图片、视频等)管理服务,用户通过自研(或售卖)的智能媒体分析工具,为目标文件进行分析。用分析后的信息丰富原有的元数据信息。因此,平台需要一套有效的元数据管理方案,为用户提供元数据信息的管理、分析、统计功能。例如:
用户A:【用户A的文件】*【近1年】*【标签含[开心]】*的所有图片,按标签分数排序
用户B:【用户B的文件】*【出现某某明星】*的所有视频,按明星相似度排序
......
管理系统样例,如下所示:__官网控制台地址:__项目样例

immDemo.gif | center | 827x490

技术点

对于智能元数据管理系统,通常需要考虑的技术点,包含以下方面:

  • 查询能力:具备强大的查询能力,如多类型索引、多维度组合查询等,同时具备排序、统计等功能;
  • 横向扩展(多字段):元数据的字段类型丰富,字段变动、增删频繁,数据库尽量schema free来保证横向扩展能力;
  • 纵向扩展(数据量):海量文件就会对应海量元数据,面对数据膨胀,数据库要满足易扩展、低成本等基本要求;
  • 服务性能:应对高并发请的同时,保证低延迟、强一致、高可用;
    20190107103121

二、表格存储(TableStore)方案

使用表格存储(TableStore)研发的多元索引(SearchIndex)方案,可以有效解决海量元数据的管理问题。TableStore具有即开即用,按量收费等特点。
TableStore作为阿里云提供的一款全托管、分布式NoSql型数据存储服务,具有【海量数据存储】、【热点数据自动分片】、【海量数据多维检索】等功能,天然地解决了数据大爆炸这一挑战;在应对数据横向、纵向扩展上,充分发乎其优势。多元索引随时创建,是Meta元数据管理的合适方案。
同时,SearchIndex功能在保证用户数据高可用的基础上,提供了数据多维度搜索、统计等能力。针对多种场景创建多种索引,实现多种模式的检索。用户可以仅在需要的时候创建、开通索引。由TableStore来保证数据同步的一致性,这极大的降低了用户的方案设计、服务运维、代码开发等工作量。

基于表格存储搭建的智能元数据管理系统页面一览

样例内嵌在表格存储控制台中,用户可登录控制台体验系统(若为表格存储的新用户,需要点击开通服务后体验,开通免费,Meta数据存储在公共实例中,体验不消耗用户存储、流量、Cu)。
注:该样例提供了【亿量级】文件元数据。官网控制台地址:项目样例

image.png | left | 827x465

image.png | left | 827x465

二、搭建准备

若您对于智能元数据管理系统感兴趣,希望开始自己系统的搭建之旅,只需按照如下步骤便可以着手搭建了:

1、开通表格存储

通过控制台开通表格存储服务,表格存储即开即用(后付费),采用按量付费方式,已为用户提供足够功能测试的免费额度。表格存储官网控制台免费额度说明

2、创建实例

通过控制台创建表格存储实例,选择支持多元索引的Region。(当前阶段SearchIndex功能尚未商业化,暂时开放北京,上海,杭州和深圳四地,其余地区将逐渐开放)

image | left

创建实例后,提交工单申请多元索引功能邀测(现多元索引功能已商业化,无需申请)。

image | left

3、SDK下载

使用具有多元索引(SearchIndex)的SDK,官网地址,暂时java、go、node.js三种SDK增加了新功能

java-SDK

<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore</artifactId>
    <version>4.8.0</version>
</dependency>

go-SDK

$ go get github.com/aliyun/aliyun-tablestore-go-sdk

Nodejs-SDK

$ npm install tablestore@4.1.0

4、表设计

表名:order_contract

列名
数据类型
索引类型
字段说明
_id(主键列)
String
MD5(fId)避免热点
fId
String
KEYWORD
文件编号
userId
String
KEYWORD
用户编号
tags
String
Nested: [{
  tag: String,
score: LONG
}]
多标签使用嵌套索引(数组字符串) '[{"tag":"表格存储","score":97.317251},{"score":50.770918,"tag":"沙漠"}]'
size
long
LONG
文件大小
createdAt
long
LONG
创建时间(时间戳)
url
String
KEYWORD
文件链接(存储于oss)
...
...
...
...

三、开始搭建(核心代码)

1、创建数据表

创建智能元数据表,用户仅需维护一个实例,按如下方式在实例下建表:
通过控制台创建、管理数据表(用户也可以通过SDK直接创建):

image.png | left | 827x323

2、创建数据表索引
TableStore自动做全量、增量的索引数据同步:用户可以通过控制台创建、管理SearchIndex(用户也可通过SDK创建):

image.png | left | 827x371

3、数据导入

插入部分测试数据(控制台样例中插入了1亿条数据,用户自己可以通过控制台插入少量测试数据);

文件编号 文件ID(md5主键) 用户编号 标签(数组字符串) 类型 链接 大小
f052535742 1bce.... u05254 [{"score":99.999999,"tag":"表格存储"},{"score":78.962224,"tag":"冰雹"},{"score":18.328385,"tag":"开心"},{"score":16.886812,"tag":"雪山"}] image https://prd-console-demo.oss-cn-hangzhou.aliyuncs.com/image/imm1.jpg 9022066

4、数据读取

数据读取分为两类:

主键读取

基于原生表格存储的主键列获取:getRow, getRange, batchGetRow等。主键读取用于索引(自动)反查,用户也可以提供主键(文件编号md5)的单条查询的页面,亿量级下查询速度保持在十毫秒量级。单主键查询方式不支持多维度检索;

索引读取

基于新SearchIndex功能Query:search接口。用户可以自由设计索引字段的多维度条件组合查询。通过设置选择不同的查询参数,构建不同的查询条件、不同排序方式;目前支持:精确查询、范围查询、前缀查询、匹配查询、通配符查询、短语匹配查询、分词字符串查询、嵌套查询、GEO查询,并通过布尔与、或组合。
如【标签为:表格存储,创建时间[2018-01-01, 2018-12-01)】文件的信息:(SDK与控制查询)

List<Query> mustQueries = new ArrayList<Query>();

//嵌套字段Query
TermQuery termQuery = new TermQuery();
termQuery.setFieldName("tags.tag");
termQuery.setTerm(ColumnValue.fromString("表格存储"));

NestedQuery nestedQuery = new NestedQuery();
nestedQuery.setPath("tags");
nestedQuery.setScoreMode(ScoreMode.Avg);
nestedQuery.setQuery(termQuery);
mustQueries.add(nestedQuery);

//范围Query
RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("createdAt");
rangeQuery.setFrom(ColumnValue.fromLong(1514793600000, true);
rangeQuery.setTo(ColumnValue.fromLong(1543651200000, false);
mustQueries.add(rangeQuery);

//精确Query
TermQuery termQuery = new TermQuery();
termQuery.setFieldName("type");
termQuery.setTerm(ColumnValue.fromString("image"));
mustQueries.add(termQuery);

BoolQuery boolQuery = new BoolQuery();
boolQuery.setMustQueries(mustQueries);

image.png | left | 747x394

四、欢迎加入

这样,系统的核心代码已经完成,基于表格存储搭建智能元数据管理系统,是不是很简单?
对表格存储(TableStore)感兴趣的用户,欢迎加入【表格存储公开交流群】,群号:11789671。

image | left

目录
相关文章
|
3天前
|
监控 数据挖掘 BI
探索项目管理系统:解析五大功能,洞悉项目成功的关键
项目新手常忽视管理系统的价值,而高手已借助系统实现规划清晰。优秀的项目管理系统必备五大功能:项目WBS分解、图表报表、工时管理、团队协作和任务自动化。WBS能将复杂项目拆分成可管理任务,明确责任,评估时间和资源需求,便于跟踪进度。Zoho Projects作为示例,支持创建任务层级,利用甘特图和资源利用图监控进度和资源分配,工时管理则帮助控制项目时间和成本。同时,系统促进团队协作,如通过即时通讯和知识库增强团队凝聚力,而任务自动化则减少错误,提升效率。
22 1
|
1天前
|
Linux 网络安全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
|
3天前
|
Rust 安全 程序员
使用Rust进行系统编程:安全性优势深度解析
【5月更文挑战第14天】Rust,Mozilla开发的系统编程语言,以其内存安全、并发支持和静态类型系统在系统编程中脱颖而出。所有权和借用检查机制消除内存错误,无锁并发原语提升安全性,静态类型减少运行时错误,最小权限原则降低权限风险。强大的社区支持和安全审计进一步确保了代码的安全性和稳定性,使Rust成为安全高效系统编程的理想选择。
|
3天前
|
存储 机器学习/深度学习 人工智能
新一代数据库技术:融合AI的智能数据管理系统
传统数据库管理系统在数据存储和查询方面已经取得了巨大的成就,但随着数据量的不断增长和应用场景的多样化,传统数据库已经难以满足日益增长的需求。本文将介绍一种新一代数据库技术,即融合了人工智能技术的智能数据管理系统。通过结合AI的强大能力,这种系统能够实现更高效的数据管理、更智能的数据分析和更精准的数据预测,为用户带来全新的数据管理体验。
|
3天前
|
人工智能 自然语言处理 机器人
销售利器大集结:13种智能销售工具全面解析
该文探讨了人工智能在销售领域的应用,测试了13款领先工具,如Zoho CRM、Email Subject Line Generator和ChatGPT Plus等,这些工具通过数据分析、自动化任务和智能交互提升销售效率。然而,使用AI也带来人机交互和数据安全的挑战。文章强调,结合人工智能和人类销售人员的优势是关键,同时应谨慎处理相关问题。
25 4
|
3天前
|
机器学习/深度学习 人工智能 算法
构建高效AI系统:深度学习优化技术解析
【5月更文挑战第12天】 随着人工智能技术的飞速发展,深度学习已成为推动创新的核心动力。本文将深入探讨在构建高效AI系统中,如何通过优化算法、调整网络结构及使用新型硬件资源等手段显著提升模型性能。我们将剖析先进的优化策略,如自适应学习率调整、梯度累积技巧以及正则化方法,并讨论其对模型训练稳定性和效率的影响。文中不仅提供理论分析,还结合实例说明如何在实际项目中应用这些优化技术。
|
3天前
|
监控 供应链 数据可视化
深度解析BPM系统:优化业务流程,提升组织效率
本文探讨了业务流程管理系统(BPM)的核心价值和功能,以及低代码如何优化流程管理。BPM通过自动化和标准化流程,提高效率,降低技术复杂性,促进协作和监控。低代码平台加速了开发进程,增强了流程自动化,使得非专业开发者也能构建应用程序。结合低代码,企业能更轻松地适应市场变化,实现流程简化和业务增长。
12 1
|
3天前
|
存储 SQL 自然语言处理
RAG技术全解析:打造下一代智能问答系统
一、RAG简介 大型语言模型(LLM)已经取得了显著的成功,尽管它们仍然面临重大的限制,特别是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。 二、RAG架构 2.1 RAG实现过程 RAG在问答系统中的一个典型
50 2
|
3天前
|
供应链 监控 安全
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
|
3天前
|
新零售 供应链 搜索推荐
多人拼团新零售分销模式系统开发(解析)
新零售模式的推广和应用,必将对传统零售业产生深远影响

推荐镜像

更多


http://www.vxiaotou.com