解决方案:数据中台=大数据平台+数据资产管理平台+数据服务平台

优采云 发布时间: 2022-11-22 04:12

  解决方案:数据中台=大数据平台+数据资产管理平台+数据服务平台

  究竟什么是数据中心?几年过去了,众说纷纭。

  笔者认为,数据中台不应该是一个简单的系统或一个软件工具,而应该是一套架构和一套数据流转模式。

  数据中台需要采集数据作为数据处理和数据建模的原材料,然后分类存储,再根据实际业务场景打造各类数据服务(包括数据应用平台),加速业务赋能。

  然而上述过程的实现需要相应的系统和产品作为支撑,那么基础数据中心应该由哪些系统或产品组成呢?

  这里我们可以先看看几家企业的数据中台架构。

  可以看出,虽然每个企业由于业务不同,数据中台系统不同,但整体架构基本是统一的,都需要经过一个“数据采集接入”-“处理存储”-“统一管理”- “服务申请”阶段。

  在此,笔者认为《数据中心产品经理:从数据系统到数据平台实践》一书中总结的数据中心架构是比较通用的。无论是互联网行业还是传统行业,都可以基于这个架构。进行改造,设计搭建自己的中台架构。

  一般来说,数据中心的功能架构由三部分组成:大数据平台、数据资产管理平台、数据服务平台。其中,自助分析平台和标签管理系统在数据服务平台中应用场景最为广泛。

  1.大数据平台

  大数据平台是数据中心的基础。我们也可以把大数据平台称为大数据开发平台。需要具备大数据相关的开发能力,提供数据存储、数据清洗/计算、数据查询展示和权限管理等功能。

  那么,上述的功能和服务应该如何构建呢?具备以上能力是否等于成功搭建了一个大数据平台?

  其实我们可以发现,各个公司的大数据平台系统架构其实都差不多,每个架构都包括数据采集组件、数据存储组件、数据计算引擎、数据权限和安全组件、集群管理和监控组件。

  除了像阿里这样的少数公司致力于打造自己的“飞天”系统,其他公司仍然依赖Hadoop生态构建技术体系进行底层组件的选型,并依托各种开源组件进行优化、改进和二次开发. 例如,数据存储组件可以选择HBase、Hive等组件,数据计算引擎可以选择Spark、Flink等分布式计算引擎。

  详见:华为VS阿里数据中心建设方法论

  既然大家都选择了相同或者相似的组件,为什么最终各个企业的大数据平台的服务能力还是有差距呢?这有点类似于购买零件组装台式电脑。没有必要选择最昂贵的零件,而是根据实际需要选择最合适的零件。

  一个好用的大数据平台,需要有为用户解决问题的能力。因此,数据中心大数据平台的建设,不是比拼引用了多少新技术,覆盖了多少技术组件,而是看能否解决数据建设中面临的复杂数据情况。中心以及能否成为数据中心打破数据壁垒的技术支撑,能否提供简单有效的数据处理工具,如提供可自配置的数据采集和数据清洗工具,是否能提供更多的附加值。

  在数据中心建设大数据平台,可以避免各业务部门的技术团队自建大数据集群造成的资源浪费。对于企业来说,统一成熟的大数据平台不可能一蹴而就。需要循序渐进、循序渐进,在不断迭代中构建企业大数据平台生态。

  2.数据资产管理平台

  数据资产管理平台主要解决数据资源的管理。数据资产分布在各个大数据组件中。有 hive 表、hbase 表、druid 数据源和 kafka 流。各组成部分的管控系统难以相互沟通。因此,需要一个统一的数据资产管理服务来统筹管理大数据资源。

  详见:企业数据资产管理平台建设方案(PPT)

  随着大数据平台的建设,在数据中台构建数据系统成为可能。通过对各个业务线的数据进行分类整合,构建各种数据主体域,完成数据的标准化存储,形成数据资产,进而完成数据资产管理。

  

" />

  在数据中心系统中,数据资产管理平台主要由元数据管理和数据模型管理两部分组成。下面让我们分别来了解一下。

  1. 元数据管理

  要谈元数据管理,首先要搞清楚什么是元数据。

  元数据(MetaData)通常被定义为:关于数据的数据(Metadata),或描述数据的数据(data about data),关于数据和信息资源的描述性信息。元数据是所有数据中最重要的数据。

  详见:【实战】元数据管理的实现

  这是最常见的例子。当我们去图书馆借书时,直接面对的是数以万计的书籍,自然很难找到,但是通过在“借书处”输入书名、作者、出版商等信息,就可以准确获取到。图书馆查询系统。书的位置。那么这些书名、作者等信息就可以理解为元数据,而书籍的存放位置、借阅历史等,在我们的系统中都是普通的数据。

  数据库中,每个数据表的表名、创建信息(创建者、创建时间、部门)、修改信息、表字段(字段名、字段类型、字段长度等),以及表与其他表的关系tables 之间的关系等信息都属于这个数据表的元数据。

  事实上,元数据的分类方法有很多种,笔者倾向于按照用途对元数据进行分类,分为业务元数据、技术元数据和管理元数据三类。

  所以有人说,元数据记录了数据从无到有的*敏*感*词*,就像一本关于数据的“字典”,让我们可以查询每个字段的意义和来源,同时又像一张“地图”,所以我们可以追踪数据生成的路径。

  通过数据系统的建设,数据中心的元数据汇集了企业各业务线、系统的数据信息,使数据中心具备提供全局数据资产视图的能力,实现统一查询数据资产的获取和入口的获取。目标。

  元数据管理包括元数据增删改查管理、版本管理、元数据统计分析和元模型管理。通过以上功能模块,有计划地进行数据系统的实现,对数据中的元数据进行结构化和建模。这样既可以避免元数据的混乱和冗余,又可以方便用户查询和定位数据。

  2. 数据模型管理

  在介绍元数据的时候,我们提到技术元数据包括数据模型,这里的数据模型指的是使用元数据进行数据建模的工作产物。

  根据底层数据的用途,如数据表的关联信息、SQL脚本信息(数据聚合和查询信息等),获取元数据可以更好地完成业务的抽象,提高建模效率。

  数据模型是数据集成的有效手段。完成各种数据源之间映射关系的设计,为数据主题的构建提供“实现图”。

  同时,在数据建模过程中,通过明确数据标准,保证数据一致性,消化冗余数据。

  数据模型管理是指在数据建模过程中,通过建立的数据模型管理系统,实现对数据模型的增、删、改、查管理,同时满足数据模型的要求。数据标准化和数据统一化,确保数据质量。

  3、数据服务平台

  1.自助分析平台

  自助分析平台,即商业智能平台(BI平台)。BI平台已经是很多企业的标配。目前,BI商业市场的行业竞争日趋激烈。参赛者可分为以下三类:

  BI平台是数据中心服务能力的主要输出方。要让数据中心发挥应有的价值,BI平台的建设必不可少,因此有必要将BI平台的建设划分到数据中心体系下。综合来看,BI平台应具备以下能力。

  (1) 数据访问

  BI平台除了数据中心自身的数据源外,还需要支持外部数据源的访问。接入方式主要有以下三种。

  BI平台支持的数据源

  (2) 数据处理

  

" />

  BI平台需要能够为用户提供数据建模工具,帮助用户创建目标数据(数据集)。它提供的功能包括拖拽表字段、自动识别维度/指标、自定义视图语句、预览数据、设置虚拟字段、函数计算和设置参数等基本操作,以及多源异构JOIN/等数据处理功能联盟。

  自助数据集数据处理接口

  (3) 数据分析与可视化

  BI平台在数据处理的基础上,还需要为用户提供丰富的图表制作和联机分析处理(OLAP)操作,让用户在前端页面完成数据分析和数据可视化。

  操作流程如下:用户选择处理后的数据集,过滤维度和指标,然后通过上下滚动、图表联动、报表跳转等操作完成业务需求分析。同时,BI平台会为用户提供Visualize图形组件,使其可视化内容的设计定型。

  (4) 内容分发和基础服务

  BI平台需要具备分发可视化内容的能力,以及控制查看权限和数据权限的能力。主要分发方式有BI平台、移动BI(App)、大数据屏、邮件、链接接入、第三方嵌入等。

  同时,BI平台还需要具备基础运营管理、角色管理、帮助中心、消息推送等功能。

  只有满足上述功能,并具备多维分析、数据可视化、数据大屏等服务能力的BI平台,才能在数据中心系统中发挥最大价值,有效帮助分析师和运营团队提高工作效率。

  2.标签管理系统

  除了BI平台,标签管理系统也是数据服务的重要应用方向之一。目前,业务部门面临着大量的精准营销场景。这些推荐和推送需要基于完整准确的用户画像来实现,而用户画像的构成需要有大量全面的用户标签作为支撑。

  详见:数据标签的分类、设计与实现

  因此,作为个性化业务应用的基础数据,标签数据的可信度和有效性成为衡量用户画像成熟度的关键指标。

  我们可以把标签管理系统看作是用户画像系统的基础。基于数据中台搭建的数据体系,自然可以突破标签治理中的数据壁垒,构建企业级的、统一的、可识别的用户标签体系,从而打造企业级的用户画像体系。

  数据中心的标签管理系统主要有以下功能。

  (1) 用户唯一标识

  很多企业的每个业务线都有自己独立的用户识别系统。比如在58群里面,有58设备指纹、安居客唯一用户、招聘自然人、金融自然人等多种用户识别方式。但是,这些标识方式大多是服务于单一业务线的,每个业务线中的标签也是针对该业务的独立用户标识而开发的。

  数据中心标签管理系统可提供统一的用户识别服务,关联统一各业务线的独立用户识别,为整个企业打通独立的用户识别和标签交互转换解决方案。

  (2) 标签制度管理

  标签系统管理的主要任务是制定标签数据和信息交互方案,打通用户画像开发和服务中的信息和数据壁垒,提供标签接入,标签信息可视化展示,标签权限控制可视化,用户标签分析可视化,以及可视化人群定向提取和视觉相似人群扩展(Lookalike)等功能。

  (3) 标签数据服务

  标签管理系统需要提供用户画像开发应用过程中涉及的标签提取、查询等服务,以标准化服务接口(API)的形式向各业务方提供相关解决方案,支撑业务方基于能力的能力在数据中心,为业务线打造个性化服务。

  除了商业智能BI和标签管理,每个企业还需要根据自身行业特点,将数据应用价值最大化。

  解决方案:使用 CMake 和 VSCodium 设置一个构建系统

  提供适当的 CMake 配置文件,使其他人更容易构建、使用和贡献您的项目。

  本文是使用开源 DevOps 工具进行 C/C++ 开发系列文章的一部分。如果您的项目从一开始就基于强大的工具链,您的开发将会更快、更安全。除其他外,这将使其他人更容易参与您的项目。在本文中,我将构建一个基于 CMake 和 VSCodium 的 C/C++ 构建系统。和往常一样,相关示例代码可以在 GitHub 上找到。

  我已经测试了本文中描述的步骤。这是适用于所有平台的解决方案。

  为什么要使用 CMake?

  CMake 是一个构建系统*敏*感*词*,可为您的项目创建 Makefile。乍一看很简单的东西可能非常复杂。在较高级别,您可以定义项目的各个部分(可执行文件、库)、编译选项(C/C++ 标准、优化、体系结构)、依赖项(头文件、库)和文件级项目结构。CMake 使用的信息在文件 CMakeLists.txt 中可用,该文件是用一种特殊的描述语言编写的。当 CMake 处理这个文件时,它会自动检测你系统上安装的编译器并创建一个 Makefile 来启动它。

  此外,许多编辑器(如 QtCreator、VSCodium/VSCode 或 Visual Studio)都可以读取 CMakeLists.txt 中描述的配置。

  示例程序

  我们的示例程序是一个简单的命令行工具:它接受一个整数作为参数,并输出从 1 到提供的输入值范围内的数字的随机排列。

  $ ./Producer 10

3 8 2 7 9 1 5 10 6 4

  在我们的可执行文件的主函数中,我们只处理输入参数,如果没有提供值(或无法处理的值),我们将退出程序。

  int main(int argc, char** argv){

if (argc != 2) {

std::cerr ut_of_range&) {

std::cerr

  生产者.cpp

  实际工作在*敏*感*词*中完成,*敏*感*词*将被编译并作为静态库链接到我们的 Producer 可执行文件中。

  std::stringstream &Generator::generate(std::stringstream &stream, const int range) {

std::vector

  *敏*感*词*.cpp

  函数 generate 接受一个 std::stringstream 和一个整数作为参数。根据整数区间的值n做一个1到n区间的整数向量,然后shuffle。然后将打乱后的向量值转换为字符串并推送到字符串流中。该函数返回与作为参数传递的相同的字符串流引用。

  顶级 CMakeLists.txt

  顶级 CMakeLists.txt 是我们项目的入口点。子目录中可能有多个 CMakeLists.txt 文件(例如,与项目关联的库或其他可执行文件)。让我们逐步了解顶级 CMakeLists.txt。

  第一行告诉我们需要哪个版本的 CMake 来处理文件、项目名称及其版本以及预期的 C++ 标准。

  cmake_minimum_required(VERSION 3.14)

project(CPP_Testing_Sample VERSION 1.0)

set(CMAKE_CXX_STANDARD 17)

set(CMAKE_CXX_STANDARD_REQUIRED True)

<p>

" />

</p>

  我们告诉 CMake 使用以下行在子目录 Generator 中查找。该子目录收录

构建 Generator 库的所有信息,并收录

它自己的 CMakeLists.txt。我们很快就会谈到这一点。

  add_subdirectory(Generator)

  现在,我们将介绍一个绝对特殊的功能:CMake 模块。加载模块可以扩展 CMake 的功能。在我们的项目中,我们加载了 FetchContent 模块,它使我们能够在 CMake 运行时下载外部资源,在我们的例子中是 GoogleTest。

  include(FetchContent)

FetchContent_Declare(

googletest

URL https://github.com/google/googletest/archive/bb9216085fbbf193408653ced9e73c61e7766e80.zip

)

FetchContent_MakeAvailable(googletest)

  在接下来的部分中,我们将做我们通常在普通 Makefile 中做的事情:指定要构建的二进制文件、它们关联的源文件、应该链接的库以及编译器可以在其中找到头文件的目录。

  add_executable(Producer Producer.cpp)

target_link_libraries(Producer PUBLIC Generator)

target_include_directories(Producer PUBLIC "${PROJECT_BINARY_DIR}")

  通过以下语句,我们让 CMake 在构建文件夹中创建一个名为 compile_commands.json 的文件。该文件将显示项目每个文件的编译器选项。在 VSCodium 中加载此文件会告知 IntelliSense 功能在何处查找头文件(请参阅文档)。

  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

  最后一部分为我们的项目定义了一些测试。该项目使用之前加载的 GoogleTest 框架。单元测试的整个主题将归入另一篇文章。

  enable_testing

add_executable(unit_test unit_test.cpp)

target_link_libraries(unit_test gtest_main)

include(GoogleTest)

gtest_discover_tests(unit_test)

  

" />

  用于库层次结构的 CMakeLists.txt

  现在,让我们看看收录

同名库的 Generator 子目录中的 CMakeLists.txt 文件。这个CMakeLists.txt文件的内容比较短,除了单元测试相关的命令外,只有2条语句。

  add_library(Generator STATIC Generator.cpp Generator.h)

target_include_directories(Generator INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

  我们使用 add_library(...) 来定义一个新的构建目标:静态*敏*感*词*库。我们使用语句 target_include_directories(...) 将当前子目录添加到其他构建目标的头文件的搜索路径中。我们还指定此属性的范围是 INTERFACE 类型:这意味着该属性仅影响链接到此库的构建目标,而不影响库本身。

  开始使用 VSCodium

  通过使用 CMakeLists.txt 文件中的信息,像 VSCodium 这样的 IDE 可以相应地配置构建系统。如果您没有使用 VSCodium 或 VS Code 的经验,这个示例项目是一个很好的起点。首先,访问他们的网站并为您的系统下载最新的安装包。打开 VSCodium 并导航到“扩展”选项卡。

  为了正确构建、调试和测试项目,搜索以下扩展并安装它们:

  如果尚未完成,请通过单击开始页面上的克隆 Git 存储库来克隆存储库。

  或手动输入:

  git clone https://github.com/hANSIc99/cpp_testing_sample.git

  之后,通过键入以下命令检查标签 devops_1:

  git checkout tags/devops_1

  或者,通过单击“主要”分支按钮(红色框)并从下拉菜单(*敏*感*词*框)中选择一个标签。

  在 VSCodium 中打开存储库的根文件夹后,CMake 工具扩展会检测 CMakeLists.txt 文件并立即扫描您的系统以寻找合适的编译器。您现在可以单击屏幕底部的“构建”按钮(红色框)开始构建过程。您还可以通过单击底部区域中的按钮(*敏*感*词*框)标记来更改编译器,该标记显示当前活动的编译器。

  要开始调试 Producer 可执行文件,请单击调试器符号(*敏*感*词*框)并从下拉菜单中选择调试&nbsp;

  生产者”(绿色框)。

  如上所述,Producer 可执行文件需要元素的数量作为命令行参数。可以在 .vscode/launch.json 中指定命令行参数。

  好的,您现在可以构建和调试项目了。

  结论

  感谢 CMake,无论您运行的是什么操作系统,上述步骤都应该有效。特别是与 CMake 相关的扩展,VSCodium 变成了一个强大的 IDE。我没有提到 VSCodium 的 Git 集成,因为您已经可以在网上找到很多资源。我希望你能看到,提供一个合适的 CMake 配置文件可以让其他人更容易地构建、使用和贡献你的项目。在以后的文章中,我将介绍单元测试和 CMake 的测试实用程序 ctest。

  通过:

  作者:Stephan Avenwedde 题目:lujun9972 译者:robsean 校对:wxy

  本文由LCTT原创编译,Linux China Honor发布

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线