数据服务:保障数据安全、提升数据价值的利器

news2024/11/14 2:28:38

04-08把元数据以及在它基础上的五大应用场景:数据发现(数据地图)、指标管理、模型设计、数据质量、成本优化,全部讲完。这部分内容对应的就是数据中台OneData 方法论。学完这部分内容,你已了解OneData方法论在企业内部落地的方法。

数据中台另外一个核心方法论,OneService的实现:数据服务。

服务化在业务系统较多,业务系统化繁为简,实现业务拆分的必经之路(特别微服务概念)。数据中台,服务化意味啥?数据服务到底解决啥问题?

服务化:不同系统之间通过服务方式交互,服务通常以API接口形式存在。

要搞清数据服务解决啥问题,要先知道,没有数据服务,日常数据建设中存在的痛点。

1 数据接入方式多,接入效率低

数据中台加工好的数据,通常以Hive表形式存储在HDFS。如想直接通过数据报表或数据产品前端展现,为保证查询速度,会把数据导到一个中间存储:

  • 数据量少的MySQL , Oracle等DB,部署维护方便、数据量小、查询性能强。如数据量小于500W条记录,建议使用DB中间存储
  • 涉及大数据量、多维度查询的可用GreenPlum,海量数据OLAP有优异性能表现。如数据量超过500W记录,要进行多个条件的过滤查询
  • 涉及大数据量单Key查询,可用HBase。大数据量下,HBase拥有不错读写性能。如超过500W记录,根据K查询V场景。如需要用到二级索引,由于HBase原生不支持二级索引,可引入ES,基于ES构建二级索引和RowKey(HBase中的Key)映射关系,查询时先根据二级索引在ES中找到RowKey,再根据RowKey获取HBase中的Value值。

因为不同的中间存储,涉及的访问API 也不一,所以对数据应用开发来说,每个数据应用都要根据不同中间存储,开发对应代码,如涉及多个中间存储,还要开发多套代码,数据接入效率很低。

而数据服务为数据开发屏蔽不同中间存储,应用开发使用统一的API接口访问数据,大幅度提高了数据应用的研发效率。

数据接入效率低,除了跟对接不同的中间存储有关,还因数据和接口不能复用。

2 数据和接口没有办法复用

数据和接口无法复用示意图

开发“数据应用-经营分析”时,数据开发会基于a表加工c表,然后数据应用开发会把a、b的数据导到“数据应用-经营分析的数据库db1”,然后开发经营分析的服务端代码,通过接口1对web提供服务。

又接到任务开发“数据应用-毛利分析”时,同样要用b表数据,虽然b数据已存在db1,但db1是“数据应用-经营分析”数据库,无法共享给“数据应用-毛利分析”。

经营分析的服务端接口也无法直接给毛利分析用,因为接口归属在经营分析应用中,已经根据应用需求高度定制化。

即使数据重复,不同数据应用之间,在中间存储和服务端接口上,也无法复用。这种烟囱式开发导致数据应用研发效率低。

而数据服务,使数据中台暴露的不再是数据,而是接口,接口不再归属某数据应用,而是在统一的数据服务上。使接口可在不同数据应用之间共享,同时因数据服务具备限流功能,使接口背后数据共享成为可能,解决不同应用共享数据相互影响问题。

当数据应用上线后,进入运维阶段,如这阶段没有数据服务,会咋样?

3 不知道数据被哪些应用访问

故障恢复示意图

张好看是数据开发,某天凌晨接到电话报警:有大量任务异常(对应上图红色表的产出任务)。定位确认问题来源业务系统的源数据库,因一次数据库表结构变更,导致数据中台中,原始数据清洗出现异常,从而影响下游的多个任务。

摆在面前的,是一堆需恢复重跑的任务。可队列资源有限,到底先恢复哪个? 哪个任务最终会影响到老板第二天要看的报表?

虽数据血缘建立表与表之间的链路关系,但表的末端,我们不知道这表被哪些应用访问,所以应用到表的链路关系断的。当某任务异常,我们无法快速判断这任务影响哪些数据应用,也无法根据影响范围决定恢复的优先级,最终导致重要报表没恢复,不重要的报表却被优先恢复。

成本治理中,没有应用和数据的链路关系,也不敢贸然下线数据。

而数据服务打通数据和应用的访问链路,建立从数据应用到数据中台数据的全链路数据血缘关系,等于我们在迷宫中拿到了一个地图,当任何一个任务出现问题,我们都可以顺着地图,找到这个故障影响了哪些应用,从而针对重要应用加速恢复速度。同样,我们也可以放心的下线数据中台中任意一张表。

除不知道数据被哪些下游应用使用,运维阶段,还经常面临数据表频繁重构,也许是数据应用开发最可怕噩梦。

4 数据部门字段变更导致应用变更

数据中台底层模型的字段变更是比较频繁的一个事情,因为本身汇总层的模型也在随需求优化。

“数据应用-经营分析”使用数据中台的ads_mamager_1d这张表的c字段,如果我们对这张表进行了重构,访问字段需要替换成e字段,此时需要数据应用修改代码。这种因为数据中台的数据变更导致应用需要重新上线的事情,是非常不合理的,不但会增加应用开发额外的工作量,也会拖累数据变更的进度。

有了数据服务,就会把数据应用和中台数据解耦,当中台数据表结构变更,只需修改数据服务上接口参数和数据字段的映射关系。无需再修改代码,重新上线数据应用。

5 总结

数据接入和运维过程中,遇到的典型问题,简要分析数据服务为什么能够帮我们解决这些问题。而这些问题会让数据应用使用中台数据效率低下,同时也带来中台数据维护的烦恼。

下讲聊数据服务具备哪些功能,你正准备设计一个数据服务或正做数据服务的产品选型,一定要留意。最后会提供给你一个数据服务实现方案,告诉你数据服务实现的关键设计。

6 FAQ

数据服务解决了数据的安全性的问题,有道理吗?

是的,数据服务可通过许多安全措施来确保数据的安全性。例如,数据服务可以使用加密技术来保护数据,以确保只有授权用户才能访问数据。此外,数据服务还可以实施访问控制和身份验证措施,以确保只有授权用户才能访问数据。因此,数据服务可有效解决数据的安全性问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ctfshow-web3

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 这个题目一看就知道是一个文件包含漏洞 php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。 GET http://3afc5257-7b7d-4917-a1eb-5ea59fc35d8c.challenge.ctf.show/…

Numpy 数据文件

Numpy 数据文件 Numpy 数据处理函数 loadtxt np.loadtxt()函数常用的传入参数 dtype:所需的返回数组的数据类型。默认为floatcomments:用于标识注释行的字符。默认为#delimiter:指定分隔符字符或字符串。默认为任何空格字符skiprows&#x…

Qt : day3

1.完成简易闹钟 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTextToSpeech> //播报类 #include <QTimer> //定时器类 #include <QTime> //时间类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcla…

clickhouse分布式查询降级为本地查询

在基于 clickhouse 做类数仓建模时通常的做法是在本地创建物化视图&#xff0c;然后使用分布式表做代理对外提供服务。我们知道 clickhouse 对于 DQL 内部实现了分布式&#xff0c;而对于 DDL 则需要我们自动实现比如&#xff1a; drop table table_name on cluster cluster_n…

【6】toLocaleString、toLocaleDateString、toLocaleTimeString等toLocale系列方法的使用及案例

一、介绍 在当今前端开发的领域里&#xff0c;快速、高效的项目构建工具以及使用最新技术栈是非常关键的。ViteVue3 组合为一体的项目实战示例专栏将带领你深入了解和掌握这一最新的前端开发工具和框架。 作为下一代前端构建工具&#xff0c;Vite 在开发中的启动速度和热重载…

医学多模态综述

原文链接&#xff1a;https://arxiv.org/abs/2307.07362 一个医学多模态综述&#xff0c;本人搞分割的重点看了一下分割的&#xff0c;其余任务没时间细看我就截了个模型汇总图&#xff0c;想详细了解的去喵一下上面这个论文就行 数据集汇总 Report generation 报告生成 报告…

效率与质量兼备的6个设计工具!

今天本文为大家推荐的这6个设计工具&#xff0c;将帮助设计师实现高效工作&#xff0c;同时也更好地展示自己的创作力&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时设计是一款国内的设计工具&#xff0c;它为设计师提供了非常多实用的设计功能和精致的设计素材&…

变分自编码器VAE代码

一&#xff0c;Auto-Encoder(AE) 自编码器的目的是自己训练自己&#xff0c;他的输入和输出是一样的。比如28*28的黑白手写数字图片(单通道)&#xff0c;如果使用矩阵形式进行表达&#xff0c;真正有作用的特征是哪些数值为1的地方&#xff0c;以及他们在矩阵空间的位置。而大部…

Android13导入OpenCV4.8流程

网上看了很多流程都不能正常导入OpenCV&#xff0c;有一堆报错&#xff0c;而且还有限制&#xff0c;我记一下我的处理方式 首先这个博客主要解决以下问题 1、不需要项目选择native C&#xff0c;使用最新的OpenCV库 2、不用复制文件&#xff0c;不需要手动改动项目自身的bu…

亲测解决Git inflate: data stream error (incorrect data check)

Git inflate: data stream error (incorrect data check) error: unable to unpack… 前提是你的repository在github等服务器或者其他路径有过历史备份/副本&#xff0c;不要求是最新版本的&#xff0c;只要有就可能恢复你做的所有工作。 执行git fsck --full检查损坏的文件 在…

享元模式-提供统一实现对象的复用

下围棋时&#xff0c;分为黑白棋子。棋子都一样&#xff0c;这是出现的位置不同而已。如果将每个棋子都作为一个独立的对象存储在内存中&#xff0c;将导致内存空间消耗较大。我们可以将其中不变的部分抽取出来&#xff0c;只存储它的位置信息来实现节约内存。 图 围棋 1 享元模…

Linux-DHCP安装配置流程

DHCP 介绍 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络协议&#xff0c;用于在局域网(LAN)中自动分配IP地址和其他网络配置信息给计算机设备。DHCP旨在简化网络管理&#xff0c;允许设备自动获取IP地址&#xff0c;无需手动配置&#xff0c;…

哈工大计算机网络课程局域网详解之:无线局域网

哈工大计算机网络课程局域网详解之&#xff1a;无线局域网 文章目录 哈工大计算机网络课程局域网详解之&#xff1a;无线局域网IEEE 802.11无线局域网802.11体系结构802.11&#xff1a;信道与AP关联 本节介绍一下平时经常使用的一个无线局域网技术&#xff0c;也就是通常我们使…

《机器学习公式推导与代码实现》chapter22-EM算法

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 EM算法 作为一种迭代算法&#xff0c;EM算法(expectation maximization&#xff0c;期望极大值算法)用于包含隐变量的概率模型参数的极大似然估…

devops(后端)

1.前言 该devpos架构为gitlabjenkinsharbork8s&#xff0c;项目是java项目&#xff0c;流程为从gitlab拉取项目代码到jenkins&#xff0c;jenkins通过maven将项目代码打成jar包&#xff0c;通过dockerfile构建jdk环境的镜像并把jar包放到镜像中启动&#xff0c;构建好的镜像通…

springboot运行报错Failed to load ApplicationContext for xxx

Failed to load ApplicationContext for报错解决方法 报错Failed to load ApplicationContext for 报错Failed to load ApplicationContext for 网上找了一堆方法都尝试了还是没用 包括添加mapperScan&#xff0c;添加配置类 配置pom文件 [外链图片转存失败,源站可能有防盗链机…

com.android.ide.common.signing.KeytoolException:

签名没问题但是提示Execution failed for task :app:packageDebug. > A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable > com.android.ide.common.signing.KeytoolException: Failed to read ke…

21.2:象棋走马问题

请同学们自行搜索或者想象一个象棋的棋盘&#xff0c; 然后把整个棋盘放入第一象限&#xff0c;棋盘的最左下角是(0,0)位置 那么整个棋盘就是横坐标上9条线、纵坐标上10条线的区域 给你三个 参数 x&#xff0c;y&#xff0c;k 返回“马”从(0,0)位置出发&#xff0c;必须走k步 …

数据结构—串

4.1串 4.1.1串的定义 串&#xff08;String&#xff09;——零个或多个任意字符组成的有限序列 S"a1 a2...an"串的定义——几个术语 子串&#xff1a;串中任意个连续字符组成的子序列称为该串的子串 例如&#xff0c;“abcde”的子串有&#xff1a; “ ”、“a”、…

【C++】【自用】选择题 刷题总结

文章目录 【类和对象】1. 构造、拷贝构造的调用2. 静态成员变量3. 初始化列表4. 成员函数&#xff1a;运算符重载5. 友元函数、友元类55. 特殊类设计 【细节题】1. 构造 析构 new \ deletet、new[] \ delete[] 【类和对象】 1. 构造、拷贝构造的调用 #include using namespace…