当前位置: 首页 > news >正文

Salesforce和SAP Netweaver里数据库表的元数据设计

从Salesforce官网可以了解到Salesforce的force.com平台里数据库表的设计:https://developer.salesforce.com/page/Multi_Tenant_Architecture

Every logical database object that Force.com exposes is internally managed using metadata. Objects, (tables in traditional relational database parlance), fields, stored procedures, and database triggers are all abstract constructs that exist merely as metadata in Force.com’s Universal Data Dictionary (UDD).

每个force.com暴露出来的逻辑数据库对象在内部都被metadata元数据管理。数据库表,表的字段,存储过程和数据库触发器,在force.com里只不过都是抽象的实体,以元数据的方式存在于force.com的UDD数据字段中。

而SAP Netweaver也有类似salesforce force.com的UDD概念,在Netweaver ABAP里成为ABAP Data Dictionary - DDIC,事务码SE11打开。

SAP的数据库表有design time和runtime运行时的概念。也支持在ABAP程序运行时动态生成新的数据库表,以及运行时根据数据库表对应的实例,反方向得到其design time信息的方法,类似其他编程语言比如Java中的反射,不过在ABAP里我们不习惯这样叫,而是称之为ABAP Run Time Type Identification, 简称RTTI。

以上图显示的数据库表TADIR为例,其字段的元数据都存储在另一张表DD03L里。

通过查询条件TABNAME = TADIR, 即可从数据库表DD03L里找到TADIR所有字段的元数据,包括字段名,字段的ABAP data element名称,内部数据类型和字段长度等等。

当然大多数时候我们如果需要获取这些元数据,不需要通过查表的方式,ABAP DDIC给我们提供了丰富的API,这些函数的命名有规律:DD*GET:

而一张表的运行时信息,通过菜单Utilities->Runtime Object->Display查看:

不过这些信息一般来说和ABAP应用开发人员关系不大,所以很少留意。

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章:

  • Dojo 表单校验
  • 扩展访问:Uber Lite App开发始末
  • 嵌入式开发教程,学习嵌入式怎么入门和提高?
  • 5G来之前,视频UGC选择产品解决方案?
  • nodejs处理高并发的原理机制
  • 关于List、List?、ListObject的区别
  • 如何合理的规划jvm性能调优
  • 异步
  • 这一次,彻底弄懂TCP三次握手,四次挥手
  • 线程的等待和唤醒
  • js中forEach回调同异步问题
  • 整行读字符串且需分割计算字符串个数
  • 比特大陆新一轮裁员50%,回应称系人员调整
  • zabbix linux系统模板更新
  • 2019.2.20 c++ 知识梳理
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2018一半小结一波
  • AngularJS指令开发(1)——参数详解
  • Apache的基本使用
  • ES6系列(二)变量的解构赋值
  • GraphQL学习过程应该是这样的
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • javascript从右向左截取指定位数字符的3种方法
  • jquery cookie
  • mac修复ab及siege安装
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • STAR法则
  • tweak 支持第三方库
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 检测对象或数组
  • 如何进阶一名有竞争力的程序员?
  • 如何设计一个比特币钱包服务
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • # include “ “ 和 # include < >两者的区别
  • #14vue3生成表单并跳转到外部地址的方式
  • (06)Hive——正则表达式
  • (function(){})()的分步解析
  • (ZT)出版业改革:该死的死,该生的生
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (离散数学)逻辑连接词
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十五)使用Nexus创建Maven私服
  • (原)本想说脏话,奈何已放下
  • (转)mysql使用Navicat 导出和导入数据库
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net 路由处理厉害了
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net通用权限框架B/S (三)--MODEL层(2)
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @Conditional注解详解