使用求散列的逻辑帐户表
技术背景
本申请涉及使用求散列的逻辑帐户表。
背景
企业资源规划(ERP)系统管理组织的内部和外部资源,包括有形资产、财务资源、材料和人力资源。ERP系统促进组织的边界内部所有组织/商业功能之间的信息流动并管理到外部风险承担者(stakeholder)的连接。ERP系统要么驻留在集中式服务器上要么跨提供服务并通过一个或多个网络通信的模块化硬件和软件分布。分布式的设计可允许组织装配来自不同供应商的模块,而不需要将复杂的和昂贵的计算机系统的多个副本放置在不使用它们的全部能力的区域中。
在传统的ERP系统中,帐户表(COA)表示维度的组合并可作为可能的组合的物理列表被持久存储。这意味着帐户代码以及其他片段的所有有效组合也被持久存储,这可采用数小时或数日来生成并可在某个数量的组合后变得不可能。某些系统将组合的其他片段移到实际COA的外部并作为替代,将它们简单地添加为报告分层结构或在使用期间加标签的其他数据片段。尽管这样的机制可减少处理资源的需要,但是它们不允许许多公共部门公司期望的在单个组合处的所需的控制的粒度级。
概述
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
各实施例旨在将COA维护为约束、准则和关系的逻辑集合,并不持久存储任何有效的组合直到某个组合被第一次使用。当需要在单独的组合上设置或引用任何业务逻辑或特性时,该组合可以被“即时”地物理地持久存储,并接着变成可被以后使用的物理组合。根据某些实施例,散列值可与每个组合相关联,使得查找被简化。
通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。可以理解,前述一般描述和以下具体实施方式均仅是说明性的,且不限制所要求保护的各方面。
附图简要说明
图1是示出其中可实现各实施例的示例联网ERP环境的概念图;
图2示出具有逻辑COA的ERP系统的各组件和模块的概览;
图3示出用于创建新的组合的示例消费者交互的序列图;
图4是其中可实现根据各实施例的系统的联网环境;
图5是其中可实现各实施例的示例计算操作环境的框图;以及
图6示出用于根据各实施例的在ERP系统中采用使用求散列的逻辑COA的过程的流程图。
详细描述
如以上简要描述的,逻辑COA可被存储为元数据、约束、准则和关系的集合。COA组合可被生成为它们被第一次引用,并且散列码可用于简化检查过程以查明组合是否已经存在,并且如果组合已经存在,则加载该组合。在以下详细描述中,参考了构成详细描述的一部分并作为说明示出各具体实施例或示例的附图。可组合这些方面,可利用其他方面,并且可作出结构上的改变而不背离本发明的精神或范围。因此,以下具体实施方式并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。
虽然在结合在计算设备上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了各实施方式,但是本领域技术人员会认识到各方面也可以结合其他程序模块实现。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,如本领域技术人员理解的,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、小型计算机、大型计算机以及类似计算设备。各实施方式还能在任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备两者中。
各实施例可被实现为计算机实现的过程(方法)、计算系统、或者如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并且编码包括用于使得计算机或计算系统执行示例过程的指令的计算机程序的计算机存储介质。例如,计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘和类似存储介质中的一个或多个来实现。
贯穿本说明书,术语“平台”可以是用于企业资源规划操作的软件和硬件组件的组合。平台的示例包括但不限于,在多个服务器上执行的托管服务、在单个服务器上执行的应用程序以及类似系统。术语“服务器”一般指通常在联网环境中执行一个或多个软件程序的计算设备。然而,服务器还可被实现为视作网络上的服务器的、在一个或多个计算设备上执行的虚拟服务器(软件程序)。以下提供这些技术和示例操作的更详细的内容。
参考图1,示出了其中可实现各实施例的示例联网ERP环境的概念图100。在服务器102上执行的ERP应用104可以是分布式(或集中式)系统的一部分,并且提供帐户、产品生命周期管理、人力资源、供应链管理、客户关系管理、仓库管理、以及之类的服务中的一个或多个。
用户可经由在计算设备112上执行的浏览器或客户机应用114通过网络110来访问由ERP应用104提供的服务。在ERP系统中,帐户表(COA)表示帐户和其他片段的组合。关系COA一般仅包括主帐户,额外的片段被松散地相关以供稍后在过帐(posting)中使用。在该情况下,这些值的多个有效组合可容易地达到万亿或更多,因此组合不能被持久存储。鉴于此,支持关系COA的系统一般允许在帐户结构中的单个片段,即主帐户。这样的系统通常在商业部门业务中使用。
另一方面,公共部门业务一般要求正式的COA不仅仅包括主帐户,也包括额外的片段,因为它们需要在组合级别处控制并设置特性。这被称为线性COA。该方法将ERP应用限制到相对小数量的组合,因为它们在COA被定义时预先生成了所有的有效组合。
各实施例使得单个实现能使用相同的业务逻辑既支持关系COA又支持线性COA。真线性COA 120可被设置,即使它可能生成非常大量的组合,因为组合不被创建直到第一次由业务逻辑使用。这可通过将COA 120存储为元数据124、约束128、准则126以及关系122的集合来实现。元数据124定义哪些片段存在、它们所保持何种类型的数据、以及在COA 120的哪些结构中。约束128和准则126可接着基于哪些值存在于其他片段中来过滤出有效组合的集合。该集合可进一步通过关系122来过滤,关系122对值进行分类或将值彼此之间直接相关。这些组件可被存储为系统中的元数据,并且在定义时没有物理组合被创建。
在业务逻辑第一次需要引用物理组合(132)(要么跟踪值要么对其设置特性)时,组合可被物理地持久存储(如果它没有已经存在)。至此以后,如果之后的业务逻辑需要引用一物理实例,则该物理实例可被引用。从消费者看来,所有有效组合在所有时间都逻辑地存在。物理地持久存储组合的动作可通过类库从消费者抽象,该类库确保当值被请求时、该值物理地存在。在第一次使用(130)后被创建的有效组合的物理列表形成物理COA 132,其在大小上明显地小于逻辑COA 120。
组合可能是复杂的,包括多个表格中的数据,并可以是无限长的。因此,确定一给定的组合是否还物理地存在的过程可以是非常消耗资源的。即使用户知道组合存在,但是由于显示组合的值可不需要唯一地标识它,找到该组合可同样是资源昂贵的。为了提供快速查找过程,根据某些实施例可使用求散列机制。
一旦用户或业务逻辑在类分层结构中构建组合定义,类似哪些值在各个片段中、正在使用哪些分层结构的项和/或其他值可被跟踪。在消费者请求物理组合时,可使用预定义的散列来对数据一起求散列以获得该组合的值。该唯一散列可被作为列(column)存储在物理组合上。由此,查找某个组合涉及由散列值来索引的查找。自此,可通过遍历数据库中的标准外键关系来发现所有相关数据。可使用在此描述的原理来使用任意数量的求散列机制。根据一示例实施例,可使用散列冲突的最小化可能结合相对小的存储大小(20个字节)来实现SHA1求散列。
图2示出具有逻辑COA的ERP系统的各组件和模块的概览的图200。为了在物理COA组合达到高数量时增强查找性能,根据某些实施例,可为每个组合计算散列并存储在索引列中。散列可包括关于组合的键信息。键信息可包括每个片段的总数、标识符和/或值;每个分层结构的总数、标识符和排序;与每个分层结构相关的多个部分;以及额外的信息。散列可被计算为大的多字节散列并被存储为根组合值表格上的索引。
当非瞬态状态被指定时,组合存储可具有存储的单个唯一组合。非瞬态组合是需要被永远持久存储并永远不能被改变或删除的组合,这是因为引用它的对象也永远不能被改变或删除,例外是在系统范围的维度属性值改变的情况下其可具有更新的显示值和组合串。单个非瞬态组合可被多个非瞬态或瞬态对象引用。
瞬态组合可被一个瞬态对象引用。由于存在一对一的引用,不需要用于瞬态组合的引用计数。由此,一旦源对象被删除,瞬态组合也是被删除的组合,这是因为没有其他对象引用该瞬态组合了。因此,在保存过程期间,组合被标记来指示它是否是事务的一部分以及它是否是瞬态的。基于该信息,DimensionStorage(维度存储)类可对不同的组合执行更新、删除或插入动作。
在根据各实施例的系统中,可存在两个级别的瞬态指示器。第一个级别可以在主组合本身上。第二个级别可以在与某个分层结构相关联的任何子组合上。瞬态主组合可包括既是瞬态又是非瞬态的子组合是可能的,这是因为瞬态主组合可尝试重新使用任何非瞬态子组合(如果非瞬态子组合在它创建瞬态组合之前就存在)。如果主瞬态组合被删除,只有瞬态子组合可被删除。
在图200显示的逻辑COA模型中,逻辑COA内的元数据(维度元数据240)存储关于存在哪些维度属性以及这些维度属性的值被存储在哪里的信息。元数据的逻辑模型可包括属性维度属性(Dimension Attributes)248,其是可被跟踪以用于维度系统的数据的种类。示例包括主帐户、部门、目的、成本中心、运货汽车、产品线等等。维度属性可以是实体支持的或自定义列表。关于可用值和哪些列需要被用作来自实体的键、值和名称的信息可被指定为对于属性的平行外键。如果指定的实体可被分类,则维度属性类别242可被用于跟踪该维度属性的有效分类。
维度分层结构252是用于定义数据的哪些部分要被跟踪的维度属性248的经排序的集合。它们可包括维度分层结构层250实例,其提供对维度属性248的排序和链接。某些维度分层结构可通过帐户结构标记被标记为帐户结构。为了避免去标准化并适当地表示函数依赖性,维度分层结构252和维度分层结构层250二者需要被分解到完整的子类别中,且外键被向下移动到子类别层。
如果维度属性被组织成集合(维度属性集合280),则每个维度属性集合项282可被链接到维度属性248并向维度属性集合284报告。维度属性值276模型包括维度属性248的各个维度属性值(278)。维度属性值集合270包括各个维度属性值集合项274,其被链接到维度属性值278并向维度属性值集合272报告。
约束262允许用户描述维度信息的有效组合。约束可被表示为分层结构树(维度约束树264),其中每个节点(显示为维度约束节点266)包括指示该节点何时是有效的准则(维度约束节点准则268)。随着用户开始输入维度信息,任何具有无效约束的节点可变得无效,并且由此约束树可被裁减来限制将来由用户作出的值输入。
用于约束的准则可以是通配符或范围准则,并可被跟踪为维度约束节点准则268的类型。显式范围和通配符可以被用于允许增强的执行约束的评估。规则254指定当使用特定帐户根时要由用户输入的额外的分层结构和树(应用维度规则的分层结构256)。这在模型中被表示为维度约束树264和帐户根之间的联接(join)实体。当在事务中使用指定的帐户根时,所有相关联的维度分层结构252可被附到帐户控制以用于用户输入。规则254也包括维度规则准则258,该维度规则准则258和应用维度规则的分层结构256一起馈送到维度规则260。
图3示出用于创建新的组合的示例消费者交互的序列图。序列图300显示当创建新的组合时,消费者与示例DimensionStorage(维度存储)和DimensionStorageSegment(维度存储片段)类的交互。该示例显示三个片段组合的条目,其中前两个片段表示分类帐(ledger)帐户,最后一个片段是基于所选的分类帐帐户由帐户规则触发的所添加的维度。序列图300中的示例组合和组件仅用于示例性目的而提供。
DimensionStorage(维度存储)类可通过跟踪分层结构和片段的经排序的列表来支持对维度值的任何组合的存储和检索。它可隐藏跨不同的表格对任何值组合的事务性存储的实现细节。存储类的键功能可包括以下能力:在知晓初始分层结构之前设置片段;将分层结构映射到多个片段,可选地增加所跟踪的片段的总数;通过绝对的从左到右索引来对片段进行设置/检索/清除;执行单个保存调用来持久存储并返回引用组合的外键;管理瞬态和事务性特性;执行单个寻找调用以基于组合外键检索并水合(hydrate)所有分层结构和片段;当维度属性值标识符被改变时,同步显示值;当维度分层结构结构被改变时,修补数据;以及将现有的瞬态组合标记为非瞬态。
DimensionStorage(维度存储)类对于任何规则、约束或企业相关限制而言是不可知的,并且假设所有确认已经发生,所提供的组合是有效的并且能被持久存储(或经检索的组合依然是有效的)。
DimensionStorageSegment(维度存储分段)类可为存储在维度组合中的每个分段提供跟踪的数据的两个键部分的封装。第一部分是用户输入到片段中并呈现在用户界面上的字符串值。第二部分是对在输入的初始时刻值被解析成的属性值的外键。该类可简单地被DimensionStorage(维度存储)类用作数据容器。
帐户和维度值组合可存储在事务上作为单个引用标识符进入组合表格。出现在帐户表页面上的任何片段可被分组到分类帐帐户类型,并且剩余的片段可被分组到非分类帐帐户类型。分层结构和约束树可被定义在完整的帐户结构上并且不是这些子分组中的一个。因此,对约束节点分组的外键可驻留在帐户数量层处。用于组合存储的物理模型和逻辑模型是显著不同的,这是因为由于系统中的许多过程是基于帐户信息的,查询性能是优先考虑的。此外,如果维度被广泛地使用表明值存储需要尽可能地紧凑而不伤害性能,则组合信息可能是系统中的较大的表格中的一个。
组合散列是不存在于逻辑模型中的属性值组合上的特性。每当用户输入完整的组合,下一查询需要确定该完整的组合是否已经存在并且如果是,则返回该组合的标识符。如以上讨论的,可使用为组合计算的并存储在索引列中的散列值来增强该可能资源昂贵的查询。这允许对给定组合的快速查找。可基于用户输入来计算散列并可执行简单的索引查找来查看值是否存在并返回其标识符。
如序列图300中显示的,消费者302提供具有三个分段条目的维度存储304:主帐户,成本中心以及部门。这些被指定为维度存储分段306、308和310。在输入帐户号以消除歧义后在所有三个维度存储分段中指定初始分层结构(332)。在初始分段两者完成后可由帐户规则指定额外的分层结构(334)。
在图1到图3中讨论的示例组件、模块、数据类型和交互仅仅是为了说明目的而非对实施例构建限制。可使用在此描述的原理使用其他组件、数据类型和配置来实现使用求散列的逻辑COA。
图4是其中可实现各实施例的示例联网实施例。提供企业资源规划服务的平台可生成并消费大量的组合的数据,诸如帐户的组合。这样的平台可通过在一个或多个服务器414上或单个服务器(例如,web服务器416)上执行的软件(诸如,主控的服务)来实现。平台可与在诸如智能电话413、膝上计算机412或台式计算机411(“客户机设备”)之类的各个计算设备上的客户机应用通过网络410进行通信。作为平台的一部分,ERP应用可将COA维护为约束、准则和关系的逻辑集合,并不持久存储任何有效的组合直到某个组合被第一次引用。在第一次使用后,组合可被物理地持久存储,减少资源成本和存储空间。ERP应用可进一步使用与每个组合相关联的散列值,使得简化查找。当请求物理组合时,可使用预定义的散列来对数据一起求散列以获得组合的值。该散列可存储在物理组合上作为列,使得查找某个组合涉及由散列值来索引的查找。与ERP操作相关联的数据可直接或通过数据库服务器418存储在数据存储419。
网络410可包括服务器、客户端、因特网服务供应商、以及通信介质的任何拓扑结构。根据各实施例的系统可具有静态或动态拓扑结构。网络410可包括诸如企业网络等安全网络、诸如无线开放网络等非安全网络、或因特网。网络410还可通过诸如公共电话交换网(PSTN)或蜂窝网络等其他网络来协调通信。此外,网络410可包括诸如蓝牙或类似网络等短程无线网络。网络410提供此处描述的节点之间的通信。作为示例而非限制,网络410可包括诸如声学、RF、红外线和其他无线介质等无线介质。
可使用计算设备、应用、数据源和数据分布系统的许多其他配置来在ERP系统中实现使用求散列的逻辑COA。此外,图4中所讨论的联网环境仅用于说明目的。各实施方式不限于示例应用程序、模块、或过程。
图5及相关联的讨论旨在提供对其中可实现各实施方式的合适计算环境的简要概括描述。参考图5,示出了根据各实施例的、诸如计算设备500等用于应用程序的示例计算操作环境的框图。在一基本配置中,计算设备500可以是执行ERP应用的服务器,并包括至少一个处理单元502和系统存储器504。处理单元502可具有其自己的高速缓存存储器或将系统存储器504的专用部分用作高速缓存。计算设备500还可包括协作执行程序的多个处理单元。取决于计算设备的确切配置和类型,系统存储器504可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。系统存储器504通常包括适于控制平台操作的操作系统505,诸如来自华盛顿州雷德蒙市的微软公司的
操作系统。系统存储器504还可包括一个或多个软件应用,诸如程序模块506和、ERP应用522、以及帐户处理模块524。
ERP应用522可提供以下中的一个或多个:帐户、产品生命周期管理、人力资源、供应链管理、客户关系管理、仓库管理、以及之类的服务。帐户处理模块524可使用如先前讨论的使用求散列的逻辑COA来生成、过滤、分析并存储帐户和帐户组合数据。该基本配置在图5中由虚线508内的那些组件示出。
计算设备500可具有附加特征或功能。例如,计算设备500还可包括附加数据存储设备(可移动和/或不可移动),例如磁盘、光盘或磁带。在图5中通过可移动存储509和不可移动存储510示出了这样的附加存储。计算机可读介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器504、可移动存储509和不可移动存储510都是计算机可读介质的示例。计算机可读介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或能用于存储所需信息且可以由计算设备500访问的任何其它介质。任何这样的计算机可读介质都可以是计算设备500的一部分。计算设备500也可具有输入设备512,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备和类似输入设备。还可包括输出设备514,诸如显示器、扬声器、打印机和其他类型的输出设备。这些设备在本领域中公知并且无需在此处详细讨论。
计算设备500还可包含通信连接516,该通信连接允许该设备诸如通过分布式计算环境中的有线或无线网络、卫星链接、蜂窝链接、短程网络和类似机制来与其他设备518进行通信。其他设备518可包括提供数据存储服务、消费数据、以及之类的设备的计算机设备。通信连接516是通信介质的一个示例。通信介质可包括以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”指的是一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括如有线网络或直接线连接之类的有线介质,以及如声学、RF、红外及其他无线介质之类的无线介质。
各示例实施例还包括各种方法。这些方法可以用任何数量的方式,包括本文中所描述的结构来实现。一种此类方式是通过本文中描述的类型的设备的机器操作。
另一可任选方式是结合一个或多个人类操作者执行该方法的各个操作中的某一些来执行该方法的一个或多个操作。这些人类操作者无需彼此同在一处,而是其每一个可以仅与执行程序的一部分的机器同在一处。
图6示出用于根据各实施例在ERP系统中使用使用求散列的逻辑COA的过程600的流程图。过程600可以在ERP系统的服务器中实现。
过程600开始于操作610,其中生成COA作为元数据、约束、准则和关系的集合。元数据定义哪些片段存在、它们所保持何种类型的数据、以及在COA的哪些结构中。约束和准则基于哪些值存在于其他片段中来过滤有效组合的集合。该集合可进一步通过关系来过滤,关系对值进行分类或将值彼此之间直接相关。这些分量可作为元数据存储在系统中。
在操作620,可接收到针对组合的第一请求。第一请求可以是业务逻辑第一次需要引用组合来跟踪值或在其上设置特性。在决定操作630,可作出组合是否作为物理组合存在的判断。如果组合并非已经物理地存在,其可在操作640被物理地持久存储并在将来业务逻辑需要引用它时被引用。当请求物理组合时,可使用预定义的散列来将数据一起求散列以获得组合的值。该唯一散列可被作为列存储在物理组合上。
在操作650,可(从消费者或逻辑过程)接收到针对被物理地持久存储的组合的请求。作为响应,可在操作660执行由散列值来索引的查找,以快速地找到组合。自此,可通过遍历数据库中的标准外键关系来发现所有相关数据。
包括在过程600内的各操作仅出于说明目的。根据各实施例的具有使用求散列的逻辑COA的ERP系统可以使用此处所述的各原理通过具有更少或更多步骤的相似过程、以及不同的操作次序来实现。
以上说明书、示例和数据提供了对各实施方式组成的制造和使用的全面描述。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求和各实施方式的示例形式而公开的。