一文读懂数据云的「对象体系」

 

确切地说,有6个域、32个对象

 

啥是「对象」?

 

在计算机科学的定义中

对象(Object)是面向对象编程的基本单位

是一种将数据和操作封装在一起的实体

它具有「属性」和「行为」

可以与其他对象进行交互和通信

 

对象最突出的特征

莫过于「封装」、「继承」、「多态」

有点抽象,举个栗子↓

类比到现实世界,一只电子狗可以是一个对象

它有品牌、颜色等属性

同时,也可以执行发出声音、奔跑等行为

 

那啥是「封装」?

对象把数据和操作封装在一起,形成独立实体

只对外界暴露所需的接口

比如,你只需要知道如何与电子狗交互

和它玩接飞盘的游戏

而不需要了解它内部的机械构造

 

啥是「继承」?

电子宠物可以被视为父类

上文我们说的电子狗,则是子类

如果再多个子类——电子猫咪,也没问题!

 

父类可以定义共享的属性和行为

例如颜色(属性)、发出声音(行为)

子类可以继承父类,并添加自己特定的属性和行为

例如,电子狗可以添加犬种(属性)

电子猫也可以添加躺下(行为)

并继承父类的「颜色」、「发出声音」

 

通过「继承」,子类可以复用父类的代码扩展或修改行为

通过「多态」,则能使用相同的方法处理不同类型的对象

从而简化代码、提高灵活性

例如,我创建了一个电子宠物的引用变量

它分别指向电子狗和电子猫

只要调用相同的方法「发出声音」

当引用指向电子狗时,它会汪汪

指向电子猫咪时,它会喵喵

 

看到这儿,你可能想说

道理我都懂

「面向对象编程」早在学校里学过了!

 

Unix的「一切皆文件」

就是计算机史上最伟大的对象抽象(之一)

无论是读取、写入还是执行操作

都采用统一调用的指令

像访问文件一样简单、易于管理

 

这种设计哲学影响了一代又一代的操作系统

时至今日

精妙的抽象设计、简洁的接口操作

仍是程序优雅易用、用户友好的代名词

那「对象」和数据云究竟有什么关系?

众所周知,大数据体系非常复杂

向下看

数据源不仅涉及多个部门,还需要跨云

分析需求不仅需要批处理

还要劳烦流计算和图引擎通力协作

 

向上看

日新月异的业务在不断提出数据应用需求

每当搭建一个应用

就要从头开始搞定存算、数据源适配、权限体系等问题

各自建设,各成体系

不仅浪费时间重复投入

无意之间还产生了新的「数据应用烟囱」

 

每当这个时候

我就不由自主地怀念起

那个具有「封装」、「继承」、「多态」特性的「对象」

和采用对象体系设计的「操作系统」

 

没错!

奇点云数据云操作系统的核心设计思路

就采用了「对象体系」

 

Simba OS(数据云操作系统内核)

根据「资源抽象、接口统一」原则

把一系列复杂的数据业务对象

抽象为6个域、32个对象

管你是多引擎、多依赖、多云

还是海量多源异构数据

统统在向下封装后

以标准简洁的API,向上提供能力

 

从而简化数据模型与应用的研发

提升系统程序的可维护性、可复用性、可扩展性

举个栗子

「资产检索」调用了元数据域的「搜索」(Search)对象

大家常用的「分级多域」、「多租户」

则离不开空间域中的「工作空间」(Workspace)、「项目」(Project)等

3个对象的巧妙配合

 

又如,数据安全引擎DataBlack、指标工厂SimbaMetric

都基于Simba OS完成开发

都能继承这6个域、32个对象的属性和行为

也就是说

上层应用不需要逐一支持数据源

Simba OS已经「支持50多种数据源」

上层应用不需要操心权限体系和身份验证

Simba OS已经设置完毕

 

问题又来了

这个早在学校学过的编程范式有啥稀奇的?

你凭啥说这6个域32个对象就够了?

事实上,对象体系的设计挑战在于

对象的设计应符合需求,详尽、准确、极简

应构建合适的类层次和继承关系

避免层次结构的过度复杂或混乱

 

还要处理好对象之间的关系和依赖

管理好对象间的通信和信息传递

 

当然,也不能忘了性能优化和资源管理问题

 

基于对数据全链路各环节的理解

以及过去多年实践的数百个项目

我们方才抽象出了这6个域共32个对象

它们各自集成了强大的能力

又以标准、简洁的API向外提供

伴随最佳实践的不断发生

未来,可能还会抽象总结出新的对象

来满足数据领域涌现且具备共性的新需求

 

与此同时,我们保证现有对象均向前兼容

基于现有对象开发的数据应用

无需因平台的升级而做任何调整

以上,就是本DataSimba的「对象」

我们的终极目标是

开发者在数据云操作系统上

心无旁骛、优雅地开发数据应用&模型

 

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

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

相关文章

【业务功能篇78】微服务-前端后端校验- 统一异常处理-JSR-303-validation注解

5. 前端校验 我们在前端提交的表单数据,我们也是需要对提交的数据做相关的校验的 Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可 校验的页面效果 前端数据…

大语言模型初学者指南 (2023)

大语言模型 (LLM) 是深度学习的一个子集,它正在彻底改变自然语言处理领域。它们是功能强大的通用语言模型,可以针对大量数据进行预训练,然后针对特定任务进行微调。这使得LLM能够拥有大量的一般数据。如果一个人想将LLM用于特定目的&#xff…

css 实现四角边框样式

效果如图 此图只实现 左下与右下边角样式 右上与左上同理 /* 容器 */ .card-mini {position: relative; } /* 左下*/ .card-mini::before {content: ;position: absolute;left: 0;bottom: 0;width: 20px;height: 20px;border-bottom: 2px solid #253d64;border-left: 2px so…

ubuntu查看网速

使用speedomster测试网速 sudo apt-get install speedometer 查询需要测速的网卡 speedometer -r ens33 -t ens33 -r: 指定网卡的接收速度 -t: 指定网卡的发送速度 使用nload测试 sudo apt-get install nload 测速 nload -t 200 -i 1024 -o 128 -U M 参数含义&#xff0…

韩顺平java集合

遍历集合方式: public static void main(String[] args) {List<Object> arrayList new ArrayList<>();arrayList.add(1);arrayList.add(3);arrayList.add(111);Iterator<Object> iterator arrayList.iterator();while (iterator.hasNext()){System.out.pri…

Ubuntu安装Apache+Php

环境&#xff1a;ubuntu 22.04 虚拟机 首先更新一下 sudo apt-get update sudo apt-get upgrade安装Apache2&#xff1a; sudo apt-get install apache2 输入y&#xff0c;继续。等着他恐龙抗浪抗浪的下载安装就好了 打开浏览器访问http://localhost/ 安装php&#xff1a; …

LeetCode3.无重复字符的最长子串

虽然是一道中等题&#xff0c;但我5分钟就写完了&#xff0c;而且是看完题就知道怎么写&#xff0c;这一看就知道双指针&#xff0c;一个左一个右&#xff0c;右指针往后移如果没有重复的长度1&#xff1b;如果有重复的&#xff0c;左指针往右移&#xff0c;那如何判断重复呢&a…

ps吸管工具用不了怎么办?

我们的办公神器ps软件&#xff0c;大家一定是耳熟能详的吧。Adobe photoshop是电影、视频和多媒体领域的专业人士&#xff0c;使用3D和动画的图形和Web设计人员&#xff0c;以及工程和科学领域的专业人士的理想选择。Photoshop支持宽屏显示器的新式版面、集20多个窗口于一身的d…

leetcode 188. 买卖股票的最佳时机 IV

2023.8.21 这道题是 买卖股票的最佳时机III 的升级版&#xff0c;即买卖次数限制为k次&#xff0c;做法和上一篇如法炮制&#xff0c;直接看代码&#xff1a; class Solution { public:int maxProfit(int k, vector<int>& prices) {vector<vector<int>>…

Ribbon:使用Ribbon实现负载均衡

Ribbon实现的是实线走的 建立三个数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.25-log : Database - db01 ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQ…

API接口文档利器:Swagger 和 接口调试利器:Postman

2.接口相关工具 2.1API接口文档利器&#xff1a;Swagger 2.1.1Swagger介绍 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务 (https://swagger.io/)。 它的主要作用是&#xff1a; 使得前后端分离开发更加方便&#xff0…

STM32 CubeMX (第三步Freertos中断管理和软件定时)

STM32 CubeMX STM32 CubeMX &#xff08;第三步Freertos中断管理和软件定时&#xff09; STM32 CubeMX一、STM32 CubeMX设置时钟配置HAL时基选择TIM1&#xff08;不要选择滴答定时器&#xff1b;滴答定时器留给OS系统做时基&#xff09;使用STM32 CubeMX 库&#xff0c;配置Fre…

关于模板的大致认识【C++】

文章目录 函数模板函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 非类型模板参数typename 与class模板的特化函数模板特化类模板特化全特化偏特化 模板的分离编译 函数模板 函数模板的原理 template <typename T> //模板参数…

Next.js - Loading UI and Streaming

特殊文件 loading.js 可帮助您使用 React Suspense 创建有意义的加载用户界面。使用此约定&#xff0c;您可以在加载路由段内容时显示来自服务器的即时加载状态。渲染完成后&#xff0c;新的内容会自动切换进来。 即时加载状态 即时加载状态是在导航时立即显示的后备用户界面…

使用Token方式实现用户身份鉴权认证

一、什么是Token&#xff1f; Token&#xff0c;也称为“令牌”&#xff0c;是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一个令牌&#xff0c;当第一次登录后&#xff0c;服务器生成一个Token便将此Token返回给客户端&#xff0c;以后客户端只需带上这个Token前…

湘潭大学 湘大 XTU OJ 1116 水仙花数 题解(非常详细)

链接 1116 题面 Description 如果一个n位数的每个数位的n次方和就是本身&#xff0c;那么我们称这种数为“水仙花数”。比如371,337313273431 371。现给你一个数&#xff0c;请求这个数是否是水仙花数。 输入 有多组样例。每个样例占一行&#xff0c;为一个整数a&#xff0…

智慧充电桩物联网方案架构

智慧充电桩物联网采用“云-管-边-端”的边缘计算物联网架构&#xff0c;融合5G、AI、Wi-Fi 6等技术&#xff0c;实现充电基础设施由数字化向智能化演进。智慧充电桩物联网方案架构设计&#xff0c;如下图所示&#xff1a; 云端&#xff1a; 物联网平台具备广泛协议的南向接入…

【Spring框架】Spring事务的介绍与使用方法

⚠️ 再提醒一次&#xff1a;Spring 本身并不实现事务&#xff0c;Spring事务 的本质还是底层数据库对事务的支持。你的程序是否支持事务首先取决于数据库 &#xff0c;比如使用 MySQL 的话&#xff0c;如果你选择的是 innodb 引擎&#xff0c;那么恭喜你&#xff0c;是可以支持…

Windows使用MobaXterm远程访问ubuntu20.04桌面

参考ubuntu 2020.4 安装vnc 一、脚本文件 remote_setup.sh脚本文件内容&#xff1a; #! /bin/bash #参考链接&#xff1a;https://blog.csdn.net/hailangdeyingzi/article/details/124507304 sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd telpo.12…

【多天线传输技术】迫零检测算法、串行干扰相消算法、排序串行干扰相消算法

clc; clear; close all; len_s100000; % 信号长度 snr0:2:20;%信噪比 len_snrlength(snr); s2_1zeros(1,4); ber_zfzeros(1,len_snr); ber_zf_siczeros(1,len_snr); ber_zf_chsiczeros(1,len_snr); for ii1:len_snrerror_zf20;for i1:len_ssnrandi([0,1],4,1); %产生随机信号mo…