`
blueoxygen
  • 浏览: 1193757 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Pooled table and Cluster table

    博客分类:
  • SAP
阅读更多
很多人可能不知道他们和透明表的区别,和为什么定义这两个表。
只知道类似BSEG这样的簇表没法JOIN,原理就不懂了。

前阵子把公司Bao同志做的KS翻了出来,再次复习了一下簇表,以及JCO+簇表的实战演练。
不知道的小朋友先补补吧。
http://www.sap-img.com/abap/the-different-types-of-sap-tables.htm
http://blog.csdn.net/kevingao/archive/2005/04/04/335724.aspx
http://help.sap.com/saphelp_nw04/helpdata/en/cf/21f0b7446011d189700000e8322d00/frameset.htm

关于cluster database 以后再说,在这里,感谢留言朋友的指正。
正在调查中,有些关联的关系可能是我想当然了:)

分享到:
评论
15 楼 jgtang82 2007-09-12  
blueoxygen分析的很detail,不错:)
14 楼 blueoxygen 2007-09-12  
OPEN SQL是会解析成不同的NATIVE SQL,关于簇表的用FIELD JOIN问题,JOIN一般都是JOIN内键与外键。
那么拿BSEG来说,他的table cluster是RFBLG。
我们可以看到他的结构是
MANDT CLNT 3
BUKRS CHAR 4
BELNR CHAR 10
GJAHR NUMC 4
PAGENO INT2 5
TIMESTMP CHAR 14
PAGELG INT2 5
VARDATA RAW 3800
BSEG本身的BUZEI已经不在table cluster的KEY中。
他和其他字段内容,被共通写进了VARDATA中。此刻无论如何转化成NATIVE SQL,我想没有一种NAVIVE SQL能够会再讲JOIN能够自动解析到表中某个字段的内容的某个内容。

关于DB中实际存在的物理表,可以在数据库中找到RFBLG这样一个与数据字典对应的table cluster物理表。字段结构与其一模一样。所以,JOIN就更不可能了。
13 楼 jgtang82 2007-09-12  
for all entries 在后台数据库不同时解析生成的Native SQL也不同的, 这也是我昨天说SAP DAL做的强大的一个原因之一.回过头来想想我们做的所谓的架构,还是比较初级的.:)
12 楼 blueoxygen 2007-09-12  
我刚发现哦,你说的INDX-type table是SAP NW04的Help里的叫法
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3c05358411d1829f0000e829fbfe/content.htm

我说的cluster database是4.7的叫法
http://help.sap.com/saphelp_47x200/helpdata/en/fc/eb3c05358411d1829f0000e829fbfe/content.htm

唉,估计SAP自己也感觉到叫做cluster database不好了。可是这个INDX-TYPE table,我感觉也够晦涩。
11 楼 blueoxygen 2007-09-12  
因为cluster table和table cluster的特殊性,使我误以为他们使用的是cluster database(http://help.sap.com/saphelp_47x200/helpdata/en/fc/eb3c05358411d1829f0000e829fbfe/content.htm)
也就是你说的INDX-type db table。
不过我今天有空会研究一下,找出来到底底层有没有共通性。
因为从原理来看,table cluster就是个cluster database.

其实for all entries操作你也知道,那根本不是任何标准SQL中的join了,只是好像Join而已.
10 楼 jgtang82 2007-09-12  
Data Cluster: We can look it like a package consisted of a set of objects. For instance, a data cluster maybe is a string, an itab, a structure or something else.
而Data Cluster可以存在Memory和Database中,当存在DB中时那个table就叫做INDX-type db table.

另外pooled/cluster tables 之间是不能做Join操作的.但对单表操作的Open SQL是可用的, 需要Join时有两种做法:
1. 使用它们的索引表(如果有的话)
2. For all entries in
:)
9 楼 jgtang82 2007-09-12  
Data Cluster: We can look it like a package consisted of a set of objects. For instance, a data cluster maybe is a string, an itab, a structure or something else.
而Data Cluster可以存在Memory和Database中,当存在DB中时那个table就叫做INDX-type db table.

另外pooled/cluster tables 之间是不能做Join操作的.但对单表操作的Open SQL是可用的, 需要Join时有两种做法:
1. 使用它们的索引表(如果有的话)
2. For all entries in
:)
8 楼 blueoxygen 2007-09-11  
我感觉有些问题我可能搞混了,明天需要查资料,上系统来确认一下。因为我想当然的以为table cluster应用了cluster database技术...看来未必,或者说,不是这么一回事。
7 楼 jgtang82 2007-09-11  
呵呵,我明天上班的时候再看下我的Knowledge base,确认一下具体的叫法。原理方面其实help上面说的很清楚的,SAP的数据访问层做的不是一般的强的。

Table Pool & pool table
Table Cluster & cluster table
table cluster/cluster table
data cluster
Extract dataset
logical database
这些内容确实有不少人没搞的很清楚。
6 楼 blueoxygen 2007-09-11  
可能是我写的太糊涂了。
直接用OPEN SQL可操作的,是cluster table和pooled table,需要用IMPORT EXPORT操作的是SAP有严格定义的table cluster, table pool,这个四个名词是按照SAP HELP上来的。
可能你说的的table cluster就是我指的cluster table,比如我说的BSEG。
那样就没啥问题了。不过还是不能JOIN
5 楼 blueoxygen 2007-09-11  
不是多个表,而是数据字典中虚拟的多个表,在真实DB里,实际是一张表。口误
4 楼 blueoxygen 2007-09-11  
hoho,是嘛?
你测试一下INNER JOIN一下BSEG,肯定不让滴呀。
他们的底层原理是在真实DB里,多个表放在一个表里,也就是table cluster, table pooled,怎么join呢?
3 楼 jgtang82 2007-09-11  
table cluster一般是不能包含像LRAW,LCHAR等这样的数据类型的。我想你这里说的table cluster应该是指INDX-type table.:)它有特定的结构,最后一列放一个data cluster,这种类型的表用Import和Export这种的语句对其内容进行访问。
像cluster table 和 pooled table是可以用Open SQL直接访问的,Join操作也是可以的。
2 楼 blueoxygen 2007-09-11  
pooled table和cluster table是没啥关系,只是有区别而已。
只是绝大多数我们接触的都是透明表,尤其add-on table,自己几乎很少建pooled,cluster table。
另外,pooled table的建立就要指定table pool, cluster table的建立也要指定table cluster.当然,table cluster可以单独建立,作为某种解决方案。
比如用来存储图片,附件等超大型长度文件。
1 楼 jgtang82 2007-09-11  
你说的与Pooled table和cluster table好像没什么关系吧?应该是INDX-Type database table 吧?

Table Pool:Database table in the database that contains the data of several pool tables which were defined in ABAP dictionary.

Table Cluster:Database table in the database that contains the data of several cluster tables which were defined in ABAP dictionary.

相关推荐

Global site tag (gtag.js) - Google Analytics