在我们的大数据平台(XSailbaot)上进行企业级数据建模的思路

1. 背景

笔者所在的公司是差不多二十年前搞CIM(公共信息模型的)起家的。当时公司的前辈搞了基于CIS协议的模型服务器、数据服务器、模式编辑器等,形成了一套基于公共信息模型建模的平台系统。其中可视化建模,建好了模式类以后,就有一套面向对象的接口,可以对数据进行增删改查的特性,让我记忆深刻,与使用JDBC或者JPA开发代码操纵数据形成鲜明的对比。在我看来,随着时代的发展,那一套产品已经显得有些不合时宜了,在此处不想去例举太多理由,但我始终觉得其思想仍然有非常多闪光的地方。我一直认为产品可能会落伍、有时代和技术的局限性,但人类解决问题的思路和思想却不会过时。所以我很早就开始构思在大数据平台里面,借鉴这套思想实现一套能和大数据平台契合的“数据建模”模块。

恰好现在有这样一个项目机会,能让我可以开始把它实现出来。幸运的是,笔者构建整个大数据平台的产品,基本都是有相应的项目实践场景,能让我理论和实际相结合,避免造出一个空中楼阁。说实在的,这很累,一边做项目,带新人,一边还得开发大数据平台,作为项目和产品的负责人,很多东西并不总是有可以借鉴的,在真正把产品实现,把路走通之前,眼前经常是迷雾重重的。特别是在做可视化实时计算的时候,那真是一种绝望地坚持,还好走通了,让平台在流式计算、实时同步方面有了坚强的支柱。为数据资产的后台数据推送发布和同步提供了实时同步能力。

2. 数据建模的功能目标

  • 基础建模功能。包括以下功能点:
    • 基于关系数据库的物理层建模能力
    • 基于涛思库的时序数据物理层建模能力
    • 以物理层为基础轻度的业务层建模能力。包括提供基于单表、多表同对象id连接、关联连接的模式类定义能力。
    • 支持字典数据定义
    • 支持EventLog型模式类定义。
    • 支持将外部数据源引入进行,将其中的某些表定义为模式类,从而能利用系统基于模型的数据服务能力
      模型定义的通用数据访问接口
  • 基于模型的通用数据增、删、改、查接口。
    • 模型定义的接口(对模式类的操纵将自动作用于数据库表):
      • 创建模式类定义的接口
      • 修改模式类定义的接口
      • 删除模式类定义的接口
      • 分页过滤查找模式类接口
      • 取得指定id或名称的模式类接口
    • 对于关系型模型,提供以下接口:
      • 创建指定类型的对象
      • 更新指定对象
      • 删除指定对象
      • 分页取得指定类型对象的接口
      • 自动维护parentId(父节点id),pathName(路径名)、pathId(id路径)、createTime(创建时间)、createUserId(创建者Id)、lastEditTime(最近更新时间)、lastEditUserId(最近编辑者用户id)等特性的字段。
      • 对于有parentId特性字段的表,提供树形查询接口
  • 可视化建模能力。提供类似UML的可视化建模能力。能在上面增删改查模式类,查看模式类之间的关联关系。
  • 模型的操作审计、模型版本冻结、模型反演功能。对通过接口对模型进行的增删改操作,有以下能力:
    • 将记录操作内容。
    • 支持模型版本冻结。
    • 支持从某一冻结版本开始,根据操作内容反演出任一时刻、任一操作时的模型。
    • 模型实例数据的操作审计、模式类数据版本冻结、模式类数据反演功能
  • 在模型的版本冻结和模型反演能力基础上,支持对于完全通过接口进行增删改实例数据的某一类数据:
    • 支持操作内容记录
    • 支持某一类数据进行版本冻结
    • 支持从某一冻结版本开始,根据操作内容反演出任一时刻、任一操作时的数据。
  • 基于模型的定制化数据发布能力。基于模型中的模式类,勾选其中某些字段,生成过滤查找、搜索的接口。系统将自动根据选择的过滤查找字段,进行索引优化。分局需要会修改、创建索引。
  • 对于已建模的涛思时序数据,提供常用的通用时序数据访问接口。
  • 对于已建模的存储在关系数据库中的EventLog数据,提供通用的Event访问接口。

3. 数据建模的模块架构

数据建模的模块架构
在大数据平台里面的“数据建模”和CIM建模有些许不同。CIM(公共信息模型)建模是一种业务层数据建模,它有类,继承、属性、角色/关联的概念,注重类型,没有描述继承和关联该怎么建表。 而此处的“数据建模”是偏向物理层的建模,以更好地适应大数据平台环境下数据集成、数据分析所需,所以废除了继承,通过组合实现类似继承的效果,在一定程度上能表达业务层的类型概念。

在现在的数据平台上有一种现象,就是对于一对一关联,通常在实体表中建一个字段来存储;对于一对多关联,一般通过实体表的一个字段或关联表存储;对于多对多关联,通常用关联表存储,但以上情形都不会建外键约束。数据建模中通过定义关联,记录了这种关联关系,并没有建外键。

作为大数据平台中的数据建模,很重要的一点是保持它的开放性和包容性。开放性主要体现在偏物理层建模,方便数据集成和数据分析,包容性体现在可以将外部的数据源通过定义的方式引入到建模平台中,获得和自建模型相同的接口服务。当然引入的外部数据源,数据建模工具是不会修改其数据表的。

4. 数据建模的意义

主要有以下几点:

  1. “设计即开发”。建模的过程就获得了通常情况下已经够用的增、删、改、查接口。节省了接口开发时间,增加了可控性。
  2. 可以将其作为一种已定义的数据资产,在“数据资产”中,可以将其纳入到数据资产目录中,方便管控和发布。
  3. 方便和“智能助理”模块对接,获得基于大模型的问答获取数据的能力。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,W Wang受到北极海鹦的生存和捕食行为启发,提出了北极海鹦优化算法(Arctic Puffin Optimization, APO)。 2.算法原理 2.1算法思想 …

全局静态变量、全局变量以及atexit回调的执行顺序

版本 gcc version 7.5.0 (Ubuntu 7.5.0-6ubuntu2) Linux UM480XT 5.15.0-107-generic #117~20.04.1-Ubuntu SMP Tue Apr 30 10:35:57 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Microsoft Visual Studio Enterprise 2019, _MSC_VER 1929 #include <stdio.h> #include…

tomcat8.5在windows下运行出现日志中文乱码

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

基于SpringBoot漫画网站系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

React@16.x(44)路由v5.x(9)源码(1)- path-to-regexp

目录 1&#xff0c;作用2&#xff0c;实现获取 match 对象2.1&#xff0c;match 对象的内容2.2&#xff0c;注意点2.3&#xff0c;实现 1&#xff0c;作用 之前在介绍 2.3 match 对象 时&#xff0c;提到了 react-router 使用第3方库 path-to-regexp 来匹配路径正则。 我们也…

《昇思25天学习打卡营第17天 | 昇思MindSporeCycleGAN图像风格迁移互换》

17天 本节学习了CycleGAN图像风格迁移互换。 CycleGAN即循环对抗生成网络&#xff0c;该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。该模型一个重要应用领域是域迁移&#xff0c;可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前&a…

打破生态「孤岛」,Catizen将开启Telegram小游戏2.0时代?

Catizen&#xff1a;引领Telegram x TON生态的顶级猫咪链游 在区块链游戏领域&#xff0c;吸引玩家的首要因素往往是游戏的趣味性。然而&#xff0c;仅靠趣味性无法评估一个项目的长期价值和发展潜力。真正能在区块链游戏市场中取得长久成功的项目&#xff0c;无一例外都依靠扎…

Mozilla Firefox正在尝试集成ChatGPT等帮助用户总结或改写网页内容

Mozilla基金会开启了一项新计划&#xff1a;在接下来几个月里尝试在Firefox浏览器里集成 ChatGPT 等 AI 服务&#xff0c;帮助用户在网页上总结内容或者改写内容等。Firefox浏览器集成的 AI 服务包括但不限于 ChatGPT、Google Gemini、HuggingChat 等&#xff0c;当然这并不是把…

计算机网络之数据通信原理(下)

上一讲内容&#xff1a;数据传输方式、数据传输形式、传输差错处理、常用差错检测方法 数据通信过程中&#xff0c;一个很重要的问题就是如何控制数据的传输&#xff0c;就涉及到了传输控制规程&#xff08;协议&#xff09; 下面介绍两种&#xff1a; ①BSC&#xff1a;面向…

AI模型的奥运会:谁将在OlympicArena中夺冠?

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 引言&#xff1a;AI模型的奥林匹克级评测 评估和比较不同AI模型的性能始终是一个核心话题。随着技术的不断进步&#xff0c;这些模型在处理复杂任务的能力上有了显著的提升。为了更精确地衡…

pytest测试框架pytest-random-order插件随机执行用例顺序

Pytest提供了丰富的插件来扩展其功能&#xff0c;本章介绍下pytest-random-order插件&#xff0c;随机设置pytest测试用例的运行顺序&#xff0c;并对随机性进行一些控制。 官方文档&#xff1a; https://pytest-cov.readthedocs.io/en/latest/index.html 适配版本说明&#x…

istitle()方法——判断首字母是否大写其他字母小写

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 istitle()方法用于判断字符串中所有的单词首字母是否为大写而其他字母为小写。istitle()方法的语法格式如下&#xff1a; str.istitle() …

【超级简单】植物大战僵尸杂交版V2.1,手机上最简单的安装方法~!

大家好&#xff0c;我是坤坤黑科技&#xff01;之前给大家分享了植物大战僵尸杂交版手机的安装方法&#xff0c;但是很多朋友还是因为操作难度大所以没有玩到。今天发现一个更加简单的在手机上玩植物大战僵尸杂交版的方法&#xff0c;直接安装就可以玩到最新的2.1版本~ 植物大…

基于UDP的网络聊天室(多线程实现收和发消息)

要求&#xff1a;1.有新用户登录&#xff0c;其他在线的用户可以收到登录信息 2.有用户群聊&#xff0c;其他在线的用户可以收到群聊信息 3.有用户退出&#xff0c;其他在线的用户可以收到退出信息 4.服务器可以发送系统信息 效果图&#xff1a; service.c #include <head…

【NodeJs】入门

目录 一、前导 二、 url模块 三、path模块 四、buffer模块 五、fs模块 六、stream流模块 七、os模块 八、crypto模块 九、util模块 十、http模块 nodejs官网 Node.js — 在任何地方运行 JavaScript nmp是Node.js包管理器&#xff0c;用来安装各种库、框架和工具&…

音视频开发30 FFmpeg 视频编码- 流程以及重要API,H264编码原理说明,该章节使用h264编码说明

一.H264编码原理 1 视频为什么需要进行编码压缩 ◼ 一张为 720x480 的图像&#xff0c;用 YUV420P 的格式来表示&#xff0c;其大小为&#xff1a; 720*480*1.5 约等于 0.5MB 。 ◼ 如果是 25 帧&#xff0c; 10 分钟的数据量 0.5M*10*60*25 7500MB -> 7GB 多 ◼ …

Open3D(C++) 删除点云中重复的点

目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份   构造重叠区域   合并点云获得重叠点 2、主要…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…

Python变量的命名规则与赋值方式

第二章&#xff1a;Python 基础语法 第一节&#xff1a;变量的命名规则与赋值方式 2.1.1 引言 在编程中&#xff0c;变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

基于Spring Boot的药房信息管理系统

1 项目介绍 1.1 研究的背景及意义 随着社会的飞速进步和药房行业竞争的白热化&#xff0c;传统的手工管理模式已难以适应药房信息管理的现代化需求。在计算机科学技术日臻完善的背景下&#xff0c;药房信息管理者们日益认识到运用计算机技术进行信息管理的迫切性和重要性。计…