CN105373561A - 识别非关系数据库中的记录模式的方法和设备 - Google Patents
识别非关系数据库中的记录模式的方法和设备 Download PDFInfo
- Publication number
- CN105373561A CN105373561A CN201410429768.0A CN201410429768A CN105373561A CN 105373561 A CN105373561 A CN 105373561A CN 201410429768 A CN201410429768 A CN 201410429768A CN 105373561 A CN105373561 A CN 105373561A
- Authority
- CN
- China
- Prior art keywords
- key
- layer
- record
- father
- bucket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了识别非关系数据库中的记录模式的方法和设备。一个实施例的识别方法包括根据记录的结构属性将所述记录分配到一模式桶以及在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。另一实施例的识别方法包括:根据全局编码表,对记录的最低层的键进行编码,并对最低层中隶属于不同父键下的键分别进行排序;根据子层的键的码更新其父层中的相应父键的键名;以及根据用于父层的全局编码表,基于父层的经更新的键名,对父层的键进行编码,并对父层中隶属于不同父键下的键分别进行排序,其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
Description
技术领域
本公开涉及数据库领域,更具体地,涉及一种识别非关系数据库中的记录模式的方法和设备。
背景技术
数据库在现代信息技术中发挥着重要的作用。作为数据库的重要类型之一,关系数据库系统被广泛地应用于存储和检索各类信息。然而,随着巨量用户数、大数据以及云计算的出现,关系数据库已不能很好地满足日益更新的现代信息技术的需要。例如,在云计算中所采用的三级架构以及数据库级中的动态横向扩展都不适合使用关系数据库。针对这一问题,业界提出了非关系数据库(NoSQL)。关系数据库中的表通常存储格式化的数据结构,每个记录的字段的组成相同,即使不是每个记录都需要所有的字段,关系数据库也会为每个记录分配所有的字段,这样的结构导致关系数据库的性能瓶颈。相比之下,非关系数据库虽然也以键值对(key-valuepair)的方式存储数据,但它的结构不固定,不同记录可以有不一样的字段,每个记录可以根据需要增加或减少一些键值对,这样就不会局限于固定的结构,可以减少时间和空间的开销。对于开发者而言,利用非关系数据库,可以通过更灵活的数据模型来提高应用开发效率,可以更好地动态缩放以支持更多的用户和数据,以及可以更好地满足用户需要高响应速度应用的期望。
然而,由于非关系数据库具有灵活的数据模型(例如具有稀疏性、演化性和分层化),且不存在元数据目录,因此目前缺少对非关系数据库的高效元数据管理,从而非关系数据库的数据模型的实施难以得到保证。在关系数据库中,每一个对象类型(objecttype)的记录的模式(Schema)都相同,然而,在非关系数据库中,同一对象类型下的不同记录的模式可以不相同。例如,对于某个非关系数据库DrugStore中的对象类型Drug的5000条记录,可能存在10、100或更多个模式,并且模式的个数还可能随着记录的增多而继续增加。因此,为了实施和利用非关系数据库,需要能够识别出记录的模式,以便建立元数据库(metadatarepository)。目前,开发者可以人工建立和使用一个设计文件来记录和检查数据模型,但这种方式费时费力且具有较差的灵活性和扩展性。
发明内容
本发明的目的在于提出一种可以高效地识别非关系数据库中的同构记录模式的方法和设备。
根据本发明的一个方面,提供了一种识别非关系数据库中的记录模式的方法,包括:根据记录的结构属性将所述记录分配到一模式桶;以及在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。
根据本发明的另一个方面,提供了一种识别非关系数据库中的记录模式的方法,包括:根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;以及从所述最低层的上一层起直至最高层重复执行以下步骤:根据子层的键的码更新其父层中的相应父键的键名;以及根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序,其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
根据本发明的另一个方面,提供了一种识别非关系数据库中的记录模式的设备,包括:模式粗分单元,配置为根据记录的结构属性将所述记录分配到一模式桶;以及模式细分单元,配置为在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。
根据本发明的另一个方面,提供了一种识别非关系数据库中的记录模式的设备,包括:第一编码排序单元,配置为根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;键名更新单元,配置为根据子层的键的码更新其父层中的相应父键的键名;第二编码排序单元,配置为根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序;以及重复处理单元,配置为控制所述键名更新单元和所述第二编码排序单元从所述最低层的上一层起直至最高层依次进行处理,其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
根据本发明的再一个方面,提供了一种计算机程序产品,所述计算机程序产品包括可由计算机读取并存储指令的存储介质,所述指令可由所述计算机执行,以执行根据本发明的以上方面提供的用于识别非关系数据库中的记录模式的方法的各步骤。
根据本发明可以高效地识别出非关系数据库中的同构记录模式,尤其对于数据量巨大且不断具有数据增加或更新的非关系数据库,本发明可以大大提高建立或更新非关系数据库的元数据库的速度,从而提高数据库的性能。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2示例性地示出了非关系数据库中的记录。
图3示出了根据本公开的第一实施例的识别非关系数据库中的记录模式的方法。
图4示出了用于说明根据本公开的第一实施例的识别非关系数据库中的记录模式的方法的示例识别过程。
图5示出了根据本公开的第二实施例的识别非关系数据库中的记录模式的方法。
图6示出了根据记录的结构属性对记录的模式进行粗分的示意图。
图7示出了根据本公开的第二实施例的第一示例的识别非关系数据库中的记录模式的方法。
图8示出了根据本公开的第二实施例的第二示例的识别非关系数据库中的记录模式的方法。
图9示出了用于说明根据本公开的第二实施例的第二示例的识别非关系数据库中的记录模式的方法的示例识别过程。
图10示出了利用本公开的第二实施例的第二示例的方法识别一示例非关系数据库中的记录模式的性能图。
图11示意性地示出了根据本公开的第三实施例的识别非关系数据库中的记录模式的设备的框图。
图12示意性地示出了根据本公开的第四实施例的识别非关系数据库中的记录模式的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在本公开中,非关系数据库是指任何包括“键值对”结构的数据(例如JSON/BSON数据,Bibtex数据等等)的数据库,例如MongoDB。非关系数据库中的记录也可以称为非关系数据库中的数据对象实例。一个记录是对象类型下的一个对象实例,其是一个键值对结构,可以包含若干键值对。一个键值对也可以称为记录的一个字段。各个键值对之间可以通过预先定义的区分符来进行区分,例如,可以通过逗号等来将不同的键值对进行区分;同时,每个键值对内的“键”和“值”可以通过预先定义的分隔符进行分隔,例如通过冒号来进行分隔,因此可以根据分隔符来从一个键值对中确定其中的键。键值对中的“值”可以是一个真正的值,例如字符串、数值等等,也可以仍然是一个键值对结构,因此非关系数据库的记录可以是层级结构。此外,可以利用预先定义的分组符(例如大括号)将多个键值对结构进行区分,从而不但可以识别出一个文件中的多个记录,而且可以识别出一个记录内的键值对结构。
图2示例性地示出了非关系数据库中的记录。图2示出了两个示例性记录R201和R202。记录R201和R202中的键值对结构用大括号(分组符)包围,相邻键值对之间用逗号(区分符)进行区分,“键”和“值”之间利用冒号(分隔符)进行分隔。通过识别这些分组符、区分符和分隔符,可以提取出记录各层的键和值。根据所提取出的各层的键及其层信息可以获得该结构的层级结构信息,即记录的模式(也称为“记录模式”)。如图2所示,记录201的第一层(也称为最高层,即,记录的最外大括号中的键值对所构成的层)包括四个键值对,这些四个键值对的键分别为“_id”、“discussion_id”、“author”和“text”。此外,可以看出键“_id”和“author”的值仍然是键值对结构。键“_id”的值包括一个键值对,该键值对的键是“$oid”。键“author”的值包括两个键值对,这两个键值对的键分别是“_id”和“name”,它们与“$oid”一起构成该记录的第二层。记录R201的上述层级结构可以通过一个树结构进行表示,如图2中的树T201所示,树T201具有一个虚拟根节点,在根节点之下具有四个子节点,其对应于记录T201的第一层的四个键值对并分别由这四个键值对的键名标记,这四个子节点为第一层子节点。在第一层子节点“_id”下具有第二层子节点“$oid”,并且在第二层子节点“author”下具有两个第二层子节点“_id”和“name”。第二层子节点“$oid”、“_id”和“name”对应于记录R201的三个第二层键值对。由此,可以通过树T201将记录R201的层级结构表达出来。一般地,根据记录构建与其对应的树结构的方式可以为:在树的虚拟根节点之下的第一层生成与记录的最高层(第一层)的键值对对应的节点(第一层节点),并根据第一层键值对所包含的第二层键值对生成隶属于树的第一层节点的子节点(第二层节点),并由此下去直至在树中建立了对应于记录的所有键值对的节点。在非关系数据库中,提取一记录的记录模式即是确定记录的键值对层级结构,其可以通过上述树结构的方式体现,也可以通过任何其它可以体现该层级结构的方式体现。需要说明的是,非关系数据库的记录模式也可以仅有一层,即第一层键值对的值都不再包含进一步的键值对结构,这种情况也包含在这里所述的层级结构的含义中。
为了更好地建立和利用非关系数据库,需要将非关系数据库的所有记录模式提取出来并存储到元数据库(metadatarepository)中。根据上文所述,可以通过记录中的分组符、区分符和分隔符等提取出每个记录的记录模式。然而,如果将每个记录的记录模式都存储到元数据库中,必然造成冗余而浪费存储空间,这是因为有些记录模式是相同或实质相同的。在本公开中,将相同或实质相同的记录模式统称为同构记录模式。同构记录模式是指作为同一键值对的值的键值对(第一层的所有键值对被认为是一虚拟根键值对的值)的个数和结构都相同,但它们的顺序可以不同。这里,键值对结构相同是指键值对的键名相同,对应的值是相同的数据结构。换言之,如果两个记录模式中作为同一键值对的值的键值对被以相同规则排序后这两个记录模式完全相同,则这两个记录模式同构。如果通过上述方式将记录模式(层级结构)构建为有根且被标记的树(例如树T201),则在两个记录模式对应的树同构的情况下,两个记录模式同构。两个有根且被标记的树同构是指这两个树的每个父节点下的子节点经过相同规则排序后为相同的树。例如,图2中示出的记录R202的记录模式可以被构建为树T202,树T202具有根节点(其为虚拟根节点)并且除根节点外的每个节点都被记录R202中的相应键所标记,所以树T202称为有根且被标记的树。当然,这里的根节点也可以用记录的识别符标记,但对于本公开而言,根节点可以不被标记。从树T201和树T202的对比可以看出,除了第一层节点“author”和“discussion_id”的顺序不同外两者完全。根据上述对同构树的定义,对树T201和树T202的每个父节点下的子节点以相同的规则进行排序,例如以字母顺序进行排序。对于树T201和树T202的第一层四个节点,由于它们都属于根节点的子节点,所以将它们例如以字母顺序(其它字符可以排在字母之前或之后)进行排序。经排序后,树T201和树T202的第一层节点变得完全相同,即都依次为“_id”、“author”、“discussion_id”和“text”。然后对父节点“author”下的两个子节点“_id”和“name”进行排序,排序后这两个节点的顺序不变。至此完成了所有父节点下的子节点的排序。通过以上排序后,树T201和树T202变得完全相同,因此它们是同构的,从而与其对应的记录R201和记录R202的记录模式也是同构的。需要说明的是,这里所述的相同规则是指对于不同树同一父节点下的子节点需要使用相同的规则,而不同父节点下的子节点可以采用不同的规则分别排序。
由于同构的记录模式是相同或实质相同的,所以它们可以只被存储一次,以便节约存储空间。因此,非关系数据库的元数据库的建立应该包括同构记录模式识别的处理。具体地,元数据库的建立过程可以包括记录模式提取、同构记录模式识别、以及记录模式存储。记录模式提取可以如上所述通过记录中的分组符、区分符和分隔符等进行。在提取出一记录的记录模式时,通过同构记录模式识别来确定元数据库中是否已存在该记录模式的同构模式,进而判断是否需要存储该记录模式。当识别出一个记录的记录模式与元数据库中的某一记录模式同构时,则可以不存储该记录模式;当识别出该记录模式与元数据库的任何记录模式都不同构时,存储该记录模式以更新元数据库。下文将通过具体实施例说明根据本公开的记录模式的识别方法。
图3示出了根据本公开的第一实施例的识别非关系数据库中的记录模式的方法300。
在步骤301,根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序。根据该实施例,可以针对要建立元数据库的非关系数据库保持一个或多个全局编码表,所述全局编码表分层保存该关系数据库中的记录的键的键名与相应码的映射关系。编码所使用的“码”可以是数字、字符、字符串等数据类型。这里的“分层保存”是指:根据记录的层级结构,对每一层独立地保持一个编码表,不同层的编码表之间是互相独立的,它们可以采用相同或不同的编码方式。这里,记录的层是指如上所述将记录转化为树结构时该树的对应层。从树的根节点向下,根节点的子节点所在的层称为第一层,也称为最高层;第一层的节点的子节点所在的层称为第二层;第二层的节点的子节点所在的层称为第三层;如此下去直到最低层,最低层是指该层的所有节点都不存在子节点,即最低层的所有节点都是叶节点。这里,“全局”是指所有要处理的记录的同一层都使用同一个编码表,即所有记录的第一层都使用针对第一层的全局编码表,第二层都使用针对第二层的全局编码表,等等。因此,在步骤301中,当确定用于记录的最低层的全局编码表时,首先确定待处理的记录的的最低层是第几层,然后查找用于所对应的层的全局编码表。例如,如果某一记录的最低层是第一层,则使用用于第一层的全局编码表;如果某一记录的最低层是第二层,则使用用于第二层的全局编码表。这里的编码表可以是预先设定的,即,在进行处理之前系统中已经保存了用于所有可能的层及其键的编码表。然而,编码表也可以是动态更新的编码表。当在处理一个新记录的某一层时,可以根据该新记录的该层的键来更新该编码表。换言之,当该新记录的该层的某个键在用于对应层的全局编码表中不存在时,可以在该全局编码表中添加用于该键的编码的项。在这种情况下,系统起初可以不设定初始编码表,也可以仅设定简单的初始编码表。如此,根据本公开的同构记录模式识别方法将具有更大的灵活性和可扩展性。由于编码表中记录了相应层中的键的键名与相应码的映射,因此,根据用于最低层的映射表可以对最低层的键进行编码。在对最低层进行了编码之后,则可以对其进行排序。根据上文关于同构树的定义可知,应当对不同父节点下的节点分别进行排序,相应地,对于记录,应当对隶属于不同父键下的键分别进行排序。这里,两个键之间的父子关系对应于这两个键所对应的树节点的父子关系。排序的具体规则可以根据需要任意设定,只要其对所有记录采用相同规则就可以。例如,可以根据键的码的数字顺序或字母顺序。
图4示出了用于说明根据本公开的第一实施例的识别非关系数据库中的记录模式的方法的示例识别过程。图4示例性地示出了针对两个记录R401和R402的识别过程,需要说明的是,为了描述的直观性,图4中已经将这两个记录的模式用树结构(树T401和T401)表示出来。记录R401和记录R401的最低层都是第二层,用于第二层的全局编码表为编码表L2,编码表L2中对第二层的所有键给出了键名与码之间的映射。其中,“_id”对应于码“1”,“name”对应于码“2”,“gender”对应于码“3”。在对第二层的节点进行编码后,根据例如码的数字顺序,对第二层中隶属于同一父节点(父键)下的节点(键)进行排序。对于记录R401,第二层的键“name”和“gender”隶属于同一父键“A”,因此,对它们进行排序,经排序后,键“name”位于键“gender”之前,因为键“name”对应的码“2”小于键“gender”对应的码“3”。对于记录R402,第二层的键“_id”和“name”隶属于同一父键“author”,经排序后,键“_id”仍然位于键“name”之前,因为键“_id”对应的码“1”小于键“name”对应的码“2”。显然,本领域的技术人员可以采用其它排序规则,例如大值的码排在小值的码之前。
在完成了最低层的编码和排序后,可以依次对最低层之上的各层进行编码和排序,即从最低层的上一层(父层)起直至最高层重复执行下述步骤302和303。然而在对最低层之上的各层进行编码和排序之前,需要首先根据下一层的键的码对上一层的相应父键的键名进行更新,以便在该上一层的键名上体现下一层的键值对结构。即,在步骤302中,根据子层的键的码更新其父层中的相应父键的键名。这里,父层与子层的关系即为上一层与下一层的关系,例如,第一层是第二层的父层,第二层是第一层的子层。当子层(例如,最低层)的键被编码和排序后,这些键的父键(即父层中的相应父键)将被更新,该更新基于该父键的所有子键的码,以便体现该父键所包含的子键。例如,可以将父键的原键名加上其所有子键经上述排序后的码序列作为更新后的键名。在图4的示例中,对于记录R401,第一层(最低层的父层)中的键“A”的键名被根据其子键的码“2”和“3”更新为“A((2)(3))”;对于记录R402,第一层中的键“author”的键名被根据其子键的码“1”和“2”更新为“author((1)(2))”。需要注意的是,图4中的键名更新方式仅为示例,只要更新后的键名能够与本层中具有不同结构的键相区别即可,其中不同结构的键包括键名不同的键和/或所包含的子键不同的键。
在完成了上述父层的键的键名更新之后,在步骤303中,根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序。步骤303中的编码和排序的具体方式类似于步骤301,这里不再累述。例如,在图4的示例中,这里所述的父层是第一层,其对应的全局编码表为编码表L1。记录R401的第一层中的节点被编码和排序为码“4”、“5”和“6”,记录R401的第一层中的节点被编码和排序为码“1”、“2”和“3”。需要说明的是,由于第一层是最高层,所以第一层中的键实际上没有父键,然而,在排序时对于第一层中的所有键都认为是同一个虚拟根键(对应于虚拟根节点)的子键。
在图4的示例中,由于两个记录都仅有两层,所以步骤302和303仅被执行一次。然而,如果要处理的记录超过两层,则需要从最低层的父层起重复执行步骤302和303,直至记录的最高层(即第一层)。在记录的最高层的键被编码和排序后,这些码可以构成一个码序列,该码序列可以唯一地识别一组同构记录模式,即如果两个记录模式是同构的,则根据以上步骤获得的码序列一定是相同的,而如果两个记录根据以上步骤获得的码序列不相同,则这两个记录的记录模式一定不是同构的。换言之,所述记录的记录模式可以根据最高层的键经编码和排序后形成的码序列识别所述记录的记录模式,从而同构记录模式被以相同的识别符标记而被识别出来。例如,在图4的示例中,用于识别记录R401的记录模式的码序列为“456”,用于识别记录R402的记录模式的码序列为“123”,因此它们不属于同构记录模式。需要说明的是,这里所述的“所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别”并不意味着一定使用这样的码序列作为该记录模式的识别符,而是也可以将所述码序列再次编码为其他识别符(例如更简单的数字识别符)来作为该记录模式的识别符,这种情况仍然包含在本公开的范围内。例如,码序列“456”可以进一步编码为“2”作为记录模式的识别符,码序列“123”可以进一步编码为“1”作为记录模式的识别符。
在第一实施例中,通过利用子键的码更新父键的键名而将记录的层级结构从最低层起逐层体现到最高层,并通过全局编码表对各层进行编码,从而可以利用最高层的简单编码来唯一地识别同构记录模式。根据本公开的第一实施例,在判断一个记录的记录模式是否已存在同构记录模式时,只要将该记录进行上述步骤301至303的处理,并判断由此得出的码序列(或该码序列经编码后的识别符)是否已经存在,如果该码序列已经存在,则表示该记录已存在同构记录模式,否则,表示不存在同构记录模式而需要将该记录的记录模式存储到元数据库中。通过此方式,在识别非关系数据库中的同构记录模式时,不需要将该非关系数据库中的所有记录两两进行比较,而仅需要根据上述方法得出一识别符,并简单地判断该识别符是否已经存在即可。这对于如今具有海量数据的数据库而言尤其可以大大降低识别时间而节约计算资源。此外,如背景技术部分所述,非关系数据库是可扩展的,其中的数据会被不断更新,因此,对于非关系数据库中新增记录的同构模式判断而言,利用本公开的第一实施例可以大大提高效率,这是因为,根据本公开,仅需要根据上述方法获得新增记录的模式的一识别符,而不需要将该新增记录与所有原有记录两两进行比较。因此,根据本公开的第一实施例,可以高效地识别非关系数据库中的同构记录模式,进而可以高效地建立元数据库,避免计算资源和存储空间的浪费。
进一步,在本实施例中,可以选择性地在对所述记录的每一层进行编码前,根据要编码的层中的键名更新用于该要编码的层的编码表。换言之,当该记录的某层的某个键在用于对应层的全局编码表中不存在时,可以在该全局编码表中添加用于该键的编码的项。由此,根据本实施例的同构记录模式识别方法将具有更大的灵活性和可扩展性。此外,在本公开中,用于不同层的编码表可以保持在一个文件中或不同的文件中。
图5示出了根据本公开的第二实施例的识别非关系数据库中的记录模式的方法500。
在第二实施例中,首先利用记录的结构特征对记录的模式进行粗分,然后再在粗分的模式组(也称为模式桶)内进一步识别记录的记录模式。在步骤501中,根据记录的结构属性将所述记录分配到一模式桶。这里,记录的结构属性例如可以指记录的总键数、总层数和各层的键数中的至少一个(对应于相应树结构的总节点数、总层数和各层的节点数中的至少一个)等等,只要能够体现出某一记录的模式与其它模式的不同即可。当两个记录的上述结构属性不同时,它们一定不属于同构记录模式,因而不需要进一步判断这两个记录的模式是否同构。换言之,只需要在具有相同结构属性的记录之间判断它们的模式是否同构。图6示出了根据记录的结构属性对记录的模式进行粗分的示意图。在图6的示例中,总层数和总键数(对应于树结构的总层数和总节点数)被选择为这里的结构属性。需要注意的是,这里树结构的虚拟根节点不被计入总节点数和总层数,当然,也可以将其计入,只要对所有记录都适用相同的规则即可。图6中所示的记录R601具有10个键并具有2层(图6中仅示出了该记录R601对应的树结构T601),因此其被分配到具有2层和10个键的模式桶中。在将记录分配到对应的模式桶后,在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录(步骤502)。步骤502中具体识别记录模式的方式可以采用用于判断同构记录模式的任何现有或将来出现的识别方式。在本实施例的启示下,本领域的技术人员可以容易地将其他用于判断同构记录模式的识别方式适用到这里。下文将以示例的方式具体说明步骤502的具体实现方式。然而,对于第二实施例而言,步骤502的具体实现方式并不构成对其范围的限制。
在第二实施例中,通过将记录首先进行模式粗分,可以大大降低同构模式识别的计算复杂度。尤其是当需要全局考虑的记录总数或键总数非常大时,如果直接进行同构模式识别将耗费巨大的计算资源,而通过现将记录进行粗分则可以大大减少具体识别同构模式时所需要考虑的记录数或键数,从而减小计算资源的花费。
图7示出了根据本公开的第二实施例的第一示例的识别非关系数据库中的记录模式的方法700。方法700的步骤701与图5的步骤501相同。方法700的步骤702至704是图5的步骤502的一种具体实现方式,并且采用了类似于第一实施例的方法。具体地,在步骤701中,根据记录的结构属性将所述记录分配到一模式桶。在步骤702中,根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序。从所述最低层的上一层起直至最高层重复执行步骤703和704。在步骤703中,根据子层的键的码更新其父层中的相应父键的键名。在步骤704中,根据所述模式桶的用于所述父层的编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序。上述步骤701至步骤704与第一实施例中的步骤701和702类似,关于第一实施例的相关说明也可以适用到这里。它们区别仅在于,在第二实施例的该示例中,各个编码表不再是全局编码表而是某一模式桶的编码表。这里,某一模式桶的用于某一层的编码表是指对需要在该模式桶内进行同构模式识别的该层的所有记录都适用的表,但不同模式桶的编码表之间是相互独立的,它们可以使用相同或不同的编码方式。例如,即使第一模式桶的用于第一层的键“_id”的码是“1”,第二模式桶的用于第一层的键“_id”的码也可以不是“1”,而第二模式桶的用于第一层的其它键的码却可以是“1”。由此可见,第二实施例中用于编码和排序的编码表将小于第一实施例中的全局编码表,从而可以减小计算资源的消耗。例如,当采用基数排序(radixsort)时,计算复杂度为O(|s|),其中s是所采用的基数(即编码表中的键数),如果编码表中的键数较大,则计算复杂度将较大,尤其是当编码表中的键数大于vlogv(其中v是待排序的键数)时,基数排序法将不比其它快速排序法更具有优势。由于模式桶的编码表的键数小于全局编码表,因而采用第二实施例的计算复杂度将更小。
该示例的模式桶的编码表可以是预先设定的或动态更新的。优选地,可以在对所述记录的每一层进行编码前,根据要编码的层中的键名更新用于该要编码的层的编码表。
与第一实施例类似的,根据第二实施例的第一示例,在识别非关系数据库中的同构记录模式时,不需要将该非关系数据库中的所有记录两两进行比较,而仅需要根据上述方法得出一识别符,并简单地判断该识别符是否已经存在即可。因此,第二实施例的第一示例同样可以高效地识别非关系数据库中的同构记录模式,进而可以高效地建立元数据库,避免计算资源和存储空间的浪费。此外,如上所述,由于第二实施例的第一示例利用模式桶特定的编码表代替全局编码表,可以进一步减少计算资源的消耗。
在第二实施例的第一示例中,根据所述模式桶的编码表对最高层进行了编码和排序后同样可以获得一个码序列。然而,由于该第一示例中的编码表不是全局的而仅是用于某个模式桶的,所以可能在不同模式桶中出现相同的上述码序列。从而,仅仅使用上述码序列不能唯一地确定一组同构记录模式。在第二实施例的第一示例中,通过上述码序列结合所述模式桶的识别符来识别所述记录的记录模式。码序列和模式桶的识别符可以唯一地识别一组同构记录模式。从而,根据最高层的键经编码和排序后形成的码序列结合所述模式桶的识别符识别所述记录的记录模式,可以唯一地识别该记录的同构记录模式。与第一实施例类似地,这里所述的通过码序列结合模式桶的识别符识别记录的记录模式并不意味着一定使用这样的码序列连接模式桶的识别符的形式作为该记录模式的识别符,也可以将所述码序列和模式桶的识别符一起编码为其他识别符作为同构记录模式的识别符。
图8示出了根据本公开的第二实施例的第二示例的识别非关系数据库中的记录模式的方法800。方法800的步骤801与图5的步骤501相同。步骤802至805具体描述了如何在模式桶中识别记录的记录模式,以便确定同构记录模式。图9示出了用于说明根据本公开的第二实施例的第二示例的识别非关系数据库中的同构记录模式的方法的示例识别过程。图9中示出了两个记录(记录R901和记录R902),它们已被表示为树结构(树T901和树T902)。
在步骤801中,根据记录的结构属性将所述记录分配到一模式桶。图9中的记录R901和记录R902都具有5个键和2层,因此都被分配到识别符(ID)为[5,2]的模式桶中。
在步骤802中,根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码。在图9中,编码表为模式桶[5,2]的用于第二层的编码表L2,因此,第二层中的各个键被如图所述编码。
在步骤803中,将所述记录分配到所述模式桶内由所述最低层的键的码经整体排序后形成的码序列识别的模式子桶。这里,对最低层的键的码进行整体排序,即将该层的所有的键一起排序,而不是按父键分别排序。例如,树R901中的第二层节点“gender”和“name”虽然分别隶属于不同的父键“Did”和“author”,但也将它们的键排序后形成码序列来识别该模式子桶。如此,可以保证可能具有同构模式的记录一定被分配到相同模式子桶中。需要说明的是,步骤803中的“识别”也并一定表示利用该码序列作为该模式子桶的识别符,仅表示可以用该码序列确定该模式子桶,同样可以将该码序列进一步编码为更简单的识别符来标识该模式子桶。在图9的示例中,记录R901的上述码序列为“23”,因此其被分配到识别符为[2,3]的子桶;记录R902的上述码序列为“12”,并其被分配到识别符为[1,2]的子桶。
在步骤804中,根据所述最低层的键的码按其父键分别排序后的码序列更新所述最低层的父层中的相应父键的键名。这里,与第一实施例类似,将父键的键名根据子键编码排序后的码序列进行更新。由于对某一父键的更新仅涉及其自身的子键,所以步骤804中的排序与步骤803不同,步骤804中的排序仅对同一父键下的子键进行排序,而不同父键下的子键分别进行排序,它们互相之间并不进行排序。这与第一实施例中对最低层中隶属于不同父键下的键分别进行排序的方式相同,这里不再累述。在图9的示例中,记录R901的第一层(最低层的父层)的键“Did”和“author”的键名被更新为“Did(3)”和“author(2)”,记录R902的第一层的键“author”的键名被更新为“author((1)(2))”。
在步骤805中,将所述最低层的经更新的父层当作所述最低层并将所述模式子桶当作所述模式桶重复上述步骤802至804,直到完成根据所述记录的最高层的子桶分配为止。在执行了一次上述步骤802至804之后,最低层的父层中已经包含了该最低层的结构信息,因此可以将该父层当做新的最低层迭代执行步骤802至804,直到完成最高层的处理。在该迭代执行中,除了将层信息进行替换,还需要将模式桶进行替换。因为在执行了一次步骤802至804之后,记录已经被分配到一个模式子桶中,所以在再次执行步骤802至804时,只需要在该模式子桶内继续识别。具体的,在再次执行时,可以直接使用专属于该模式子桶的编码表来进行编码。专属于模式子桶的编码表表示该编码表与用于该模式子桶之外的记录的编码表相独立。在图9的示例中,此时将第一层(最低层的父层)作为最底层,并将子桶[2,3]和[1,2]分别作为新的模式桶来对记录R901和记录R901进行编码。记录R901所使用的编码表是子桶[2,3]的编码表[2,3]-L1,记录R902所使用的编码表是子桶[1,2]的编码表[1,2]-L1。由编码表[2,3]-L1和[1,2]-L1可以看出,由于它们是互相独立的,所以它们可以对不同的键名使用相同的码。例如,记录R901对键名“Did(3)”使用码“1”,记录R902对不同的键名“Did”也使用码“1”。第一层的键经过编码后,对其进行排序而进一步分配模式子桶(步骤803),此时,记录被分配到隶属于第一次执行步骤803时的子桶(其此时被当做模式桶)的子桶。在图9的示例中,记录R901被分配到子桶[2,3]内的子桶[1,2,3],记录R902被分配到子桶[1,2]内的子桶[1,2,3]。由于此时图9中的记录R901和记录R902都已经处理完了其最高层(即,已经完成了根据所述记录的最高层的子桶分配),所以不再继续进行上述步骤804。然而,如果此时处理的不是最高层,则应该继续更新当前层的父层键名,并且将该父层作为新的最低层继续执行上述步骤802至804,直至完成了最高层的处理为止。
当完成了根据记录的最高层的子桶分配后,该记录的同构模式已被确定。某一记录被如上分配到的所有模式子桶和模式桶的结合可以唯一地确定该记录的同构模式,因此,为了确定所述记录的同构记录模式,可以根据所述记录被分配到的所有模式子桶和模式桶识别所述记录的记录模式。例如,可以将所有模式子桶和模式桶的识别符顺序相连来识别该记录模式。在图9的示例中,记录R901的模式可以被识别为“5223123”,记录R902的模式可以被识别为“5212123”。显然,这两者不是同构模式。当然,与上文其它实施例类似地,这里所述的通过所有模式子桶和模式桶识别所述记录的记录模式并不意味着一定使用将这些模式子桶和模式桶的识别符连接起来作为该记录模式的识别符,也可以将这些模式子桶和模式桶的识别符一起再次编码为其他识别符来识别同构记录模式。
另外,与第一示例类似地,所述模式桶或模式子桶的编码表也可以是预先设定的或动态更新的。优选地,可以在对所述记录的每一层进行编码前,根据要编码的层中的键名更新用于该要编码的层的编码表。
与第一实施例和第二实施例的第一示例类似的,根据第二实施例的第二示例,在识别非关系数据库中的同构记录模式时,不需要将该非关系数据库中的所有记录两两进行比较,而仅需要根据上述方法得出一识别符,并简单地判断该识别符是否已经存在即可。因此,第二实施例的第二示例同样可以高效地识别非关系数据库中的同构记录模式,进而可以高效地建立元数据库,避免计算资源和存储空间的浪费。此外,在第二实施例的第二示例中,逐层将记录分配到越来越细的模式子桶中,可以进一步减小用于编码和排序的编码表,从而可以进一步节约计算资源。例如,如上所述,当采用基数排序时,计算复杂度为O(|s|),由于本示例采用了更小的编码表,因此计算复杂度也更低。
图10示出了利用本公开的第二实施例的第二示例的方法识别一示例非关系数据库Drugbank中的同构记录模式的性能图。图10中还同时给出了利用判断同构树的AHU(A.V.AhoandJ.E.Hopcroft,“Design&AnalysisofComputerAlgorithms”,PearsonEducationIndia,1974)算法识别同一非关系数据库Drugbank中的同构记录模式的性能。图10的横轴是Drugbank数据库中的记录数,纵轴是判断记录的同构模式所花费的时间(由于单个记录所用时间过短,所以图10中显示的是每100条记录所花费的时间)。图10的上面一条曲线是AHU算法的性能,下面一条曲线是本发明的性能。从图10可以看出,起初记录数比较少时,两者的区别较小,然而随着记录数增大,两者的区别越来越大。当记录数为4000时,本发明的方法比AHU算法快了近3个数量级。AHU算法采用对树(记录)两两比较的方式来判断其同构性,因此,随着数据量的增大,判断每一条记录所花费的时间不断增大。然而,本发明的方法并不需要对记录进行两两比较,只需要对记录的记录模式识别出一识别符即可。因此,判断单个记录的同构模式的时间不会因为记录数的增大而增加。在图10中,本发明的方法在开始时花费的时间较多是因为需要建立和更新相应的编码表,后来随着编码表趋于稳定,所花费的时间减少并趋于稳定。如今数据库的数据量都非常巨大,往往以百万或更多计,并且数据库的数据不断增加和更新,在这种情况下,本发明的优势将非常明显。
图11示出了根据本公开的第三实施例的识别非关系数据库中的记录模式的设备1100的结构框图。所述设备1100包括:第一编码排序单元1101,配置为根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;键名更新单元1102,配置为根据子层的键的码更新其父层中的相应父键的键名;第二编码排序单元1103,配置为根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序;以及重复处理单元1104,配置为控制所述键名更新单元和所述第二编码排序单元从所述最低层的上一层起直至最高层依次进行处理。这里,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
上文关于第一实施例的识别非关系数据库中的同构记录模式的方法的细节同样适用于设备1100,这里不再累述。根据一个实施方式,上述第一编码排序单元1101、键名更新单元1102、第二编码排序单元1103和重复处理单元1104可以通过类似图1中所述的计算机系统/服务器12的计算机结合软件的方式实现,并且上述模块并非表示实体上一定分离为不同的模块,它们的全部或部分功能可以合并为一个模块实现。
可选地,所述第一编码排序单元1101和/或所述第二编码排序单元1102还可被配置为:在对所述记录的特定层进行编码前,根据该特定层中的键名更新用于该特定层的编码表。
图12示出了根据本公开的第四实施例的识别非关系数据库中的记录模式的设备1200的结构框图。所述设备1200包括:模式粗分单元1201,配置为根据记录的结构属性将所述记录分配到一模式桶;以及模式细分单元1202,配置为在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。
上文关于第二实施例的识别非关系数据库中的同构记录模式的方法的细节同样适用于设备1200,这里不再累述。根据一个实施方式,上述模式粗分单元1201和模式细分单元1202可以通过类似图1中所述的计算机系统/服务器12的计算机结合软件的方式实现,并且上述模块并非表示实体上一定分离为不同的模块,它们的全部或部分功能可以合并为一个模块实现。
在第四实施例中,所述结构属性可以包括以下中的至少一个:所述记录的总键数、总层数和各层的键数。
在一个实施方式中,所述模式细分单元1202可以包括:第一编码排序单元,配置为根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;键名更新单元,配置为根据子层的键的码更新其父层中的相应父键的键名;第二编码排序单元,配置为根据所述模式桶的用于所述父层的编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序;以及重复处理单元,配置为控制所述键名更新单元和所述第二编码排序单元从所述最低层的上一层起直至最高层依次进行处理。这里,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列结合所述模式桶的识别符所识别。
在另一实施例方式中,所述模式细分单元1202包括:编码单元,配置为根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码;子桶分配单元,配置为将所述记录分配到所述模式桶内由所述最低层的键的码经整体排序后形成的码序列识别的模式子桶;键名更新单元,根据所述最低层的键的码按其父键分别排序后的码序列更新所述最低层的父层中的相应父键的键名;以及迭代处理单元,配置为控制所述编码排序单元、所述子桶分配单元和所述键名更新单元将所述最低层的经更新的父层当作所述最低层并将所述模式子桶当作所述模式桶进行迭代处理,直到完成根据所述记录的最高层的子桶分配为止。这里,所述记录的记录模式根据所述记录被分配到的所有模式子桶和模式桶所识别。
此外,可选地,所述编码单元、所述第一编码排序单元和/或所述第二编码排序单元还可被配置为:在对所述记录的特定层进行编码前,根据该特定层中的键名更新用于该特定层的编码表。
本公开的上述识别非关系数据库中的记录模式的设备可以高效地识别出非关系数据库中的同构记录模式,尤其对于数据量巨大且不断具有数据增加或更新的非关系数据库,可以大大提高建立或更新非关系数据库的元数据库的速度,从而提高数据库的性能。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种识别非关系数据库中的记录模式的方法,包括:
根据记录的结构属性将所述记录分配到一模式桶;以及
在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。
2.根据权利要求1所述的方法,其中所述结构属性包括以下中的至少一个:所述记录的总键数、总层数和各层的键数。
3.根据权利要求1所述的方法,其中在所述模式桶内识别所述记录的记录模式包括:
根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;以及
从所述最低层的上一层起直至最高层重复执行以下步骤:
根据子层的键的码更新其父层中的相应父键的键名;以及
根据所述模式桶的用于所述父层的编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序,
其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列结合所述模式桶的识别符所识别。
4.根据权利要求1所述的方法,其中在所述模式桶内识别所述记录的记录模式包括:
根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码;
将所述记录分配到所述模式桶内由所述最低层的键的码经整体排序后形成的码序列识别的模式子桶;
根据所述最低层的键的码按其父键分别排序后的码序列更新所述最低层的父层中的相应父键的键名;以及
将所述最低层的经更新的父层当作所述最低层并将所述模式子桶当作所述模式桶重复上述步骤,直到完成根据所述记录的最高层的子桶分配为止,
其中,所述记录的记录模式根据所述记录被分配到的所有模式子桶和模式桶所识别。
5.一种识别非关系数据库中的记录模式的方法,包括:
根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;以及
从所述最低层的上一层起直至最高层重复执行以下步骤:
根据子层的键的码更新其父层中的相应父键的键名;以及
根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序,
其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
6.根据权利要求3-5中的任一项所述的方法,还包括:
在对所述记录的每一层进行编码前,根据要编码的层中的键名更新用于该要编码的层的编码表。
7.一种识别非关系数据库中的记录模式的设备,包括:
模式粗分单元,配置为根据记录的结构属性将所述记录分配到一模式桶;以及
模式细分单元,配置为在所述模式桶内识别所述记录的记录模式,使得能够确定所述非关系数据库中具有同构记录模式的记录。
8.根据权利要求7所述的设备,其中所述结构属性包括以下中的至少一个:所述记录的总键数、总层数和各层的键数。
9.根据权利要求7所述的设备,其中所述模式细分单元包括:
第一编码排序单元,配置为根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;
键名更新单元,配置为根据子层的键的码更新其父层中的相应父键的键名
第二编码排序单元,配置为根据所述模式桶的用于所述父层的编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序;以及
重复处理单元,配置为控制所述键名更新单元和所述第二编码排序单元从所述最低层的上一层起直至最高层依次进行处理,
其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列结合所述模式桶的识别符所识别。
10.根据权利要求7所述的设备,其中所述模式细分单元包括:
编码单元,配置为根据所述模式桶的用于所述记录的最低层的编码表,对所述记录的最低层的键进行编码;
子桶分配单元,配置为将所述记录分配到所述模式桶内由所述最低层的键的码经整体排序后形成的码序列识别的模式子桶;
键名更新单元,根据所述最低层的键的码按其父键分别排序后的码序列更新所述最低层的父层中的相应父键的键名;以及
迭代处理单元,配置为控制所述编码排序单元、所述子桶分配单元和所述键名更新单元将所述最低层的经更新的父层当作所述最低层并将所述模式子桶当作所述模式桶进行迭代处理,直到完成根据所述记录的最高层的子桶分配为止,
其中,所述记录的记录模式根据所述记录被分配到的所有模式子桶和模式桶所识别。
11.一种识别非关系数据库中的记录模式的设备,包括:
第一编码排序单元,配置为根据用于记录的最低层的全局编码表,对所述记录的最低层的键进行编码,并对所述最低层中隶属于不同父键下的键分别进行排序;
键名更新单元,配置为根据子层的键的码更新其父层中的相应父键的键名;
第二编码排序单元,配置为根据用于所述父层的全局编码表,基于所述父层的经更新的键名,对所述父层的键进行编码,并对所述父层中隶属于不同父键下的键分别进行排序;以及
重复处理单元,配置为控制所述键名更新单元和所述第二编码排序单元从所述最低层的上一层起直至最高层依次进行处理,
其中,所述记录的记录模式根据最高层的键经编码和排序后形成的码序列所识别。
12.根据权利要求9-11中的任一项所述的设备,其中所述编码单元、所述第一编码排序单元和/或所述第二编码排序单元还被配置为:
在对所述记录的特定层进行编码前,根据该特定层中的键名更新用于该特定层的编码表。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410429768.0A CN105373561B (zh) | 2014-08-28 | 2014-08-28 | 识别非关系数据库中的记录模式的方法和设备 |
US14/830,158 US10031930B2 (en) | 2014-08-28 | 2015-08-19 | Record schemas identification in non-relational database |
US14/956,808 US10366059B2 (en) | 2014-08-28 | 2015-12-02 | Record schemas identification in non-relational database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410429768.0A CN105373561B (zh) | 2014-08-28 | 2014-08-28 | 识别非关系数据库中的记录模式的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373561A true CN105373561A (zh) | 2016-03-02 |
CN105373561B CN105373561B (zh) | 2019-02-15 |
Family
ID=55375769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410429768.0A Active CN105373561B (zh) | 2014-08-28 | 2014-08-28 | 识别非关系数据库中的记录模式的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10031930B2 (zh) |
CN (1) | CN105373561B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11675751B2 (en) * | 2020-12-01 | 2023-06-13 | International Business Machines Corporation | Systems and methods for capturing data schema for databases during data insertion |
US11645231B1 (en) * | 2022-04-24 | 2023-05-09 | Morgan Stanley Services Group Inc. | Data indexing for distributed query execution and aggregation |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320054A1 (en) * | 2003-04-09 | 2008-12-25 | Cindy Howard | Database and Software Conversion System and Method |
CN101661481A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 存储xml数据的方法、执行xml查询的方法及其装置 |
CN103530327A (zh) * | 2013-09-25 | 2014-01-22 | 清华大学深圳研究生院 | 一种从非关系型数据库到关系型数据库的数据迁移方法 |
CN103714086A (zh) * | 2012-09-29 | 2014-04-09 | 国际商业机器公司 | 用于生成非关系数据库的模式的方法和设备 |
CN103810275A (zh) * | 2014-02-13 | 2014-05-21 | 清华大学 | 用于非关系与关系型数据库间数据交互的方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279007B1 (en) | 1998-11-30 | 2001-08-21 | Microsoft Corporation | Architecture for managing query friendly hierarchical values |
US7016906B1 (en) * | 2000-05-04 | 2006-03-21 | Unisys Corporation | Data processing method and apparatus employing OLE DB and having dual schema and auto update features |
US20070239742A1 (en) | 2006-04-06 | 2007-10-11 | Oracle International Corporation | Determining data elements in heterogeneous schema definitions for possible mapping |
US20080063209A1 (en) * | 2006-09-07 | 2008-03-13 | International Business Machines Corporation | Distributed key store |
JP4527753B2 (ja) * | 2007-07-03 | 2010-08-18 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
US8495055B2 (en) | 2007-10-01 | 2013-07-23 | Technion Research And Development Foundation Ltd | Method and computer program for evaluating database queries involving relational and hierarchical data |
US8775817B2 (en) * | 2008-05-12 | 2014-07-08 | Microsoft Corporation | Application-configurable distributed hash table framework |
US8996563B2 (en) * | 2010-04-06 | 2015-03-31 | Tokutek, Inc. | High-performance streaming dictionary |
US20120109935A1 (en) | 2010-11-02 | 2012-05-03 | Microsoft Corporation | Object model to key-value data model mapping |
US8862588B1 (en) * | 2011-11-30 | 2014-10-14 | Google Inc. | Generating an empirically-determined schema for a schemaless database |
CN107451225B (zh) * | 2011-12-23 | 2021-02-05 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
US8918434B2 (en) | 2012-04-24 | 2014-12-23 | International Business Machines Corporation | Optimizing sparse schema-less data in relational stores |
US9210178B1 (en) * | 2012-06-15 | 2015-12-08 | Amazon Technologies, Inc. | Mixed-mode authorization metadata manager for cloud computing environments |
US9087138B2 (en) * | 2013-01-15 | 2015-07-21 | Xiaofan Zhou | Method for representing and storing hierarchical data in a columnar format |
US9602280B2 (en) * | 2013-03-13 | 2017-03-21 | Futurewei Technologies, Inc. | System and method for content encryption in a key/value store |
US10102480B2 (en) * | 2014-06-30 | 2018-10-16 | Amazon Technologies, Inc. | Machine learning service |
-
2014
- 2014-08-28 CN CN201410429768.0A patent/CN105373561B/zh active Active
-
2015
- 2015-08-19 US US14/830,158 patent/US10031930B2/en not_active Expired - Fee Related
- 2015-12-02 US US14/956,808 patent/US10366059B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320054A1 (en) * | 2003-04-09 | 2008-12-25 | Cindy Howard | Database and Software Conversion System and Method |
CN101661481A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 存储xml数据的方法、执行xml查询的方法及其装置 |
CN103714086A (zh) * | 2012-09-29 | 2014-04-09 | 国际商业机器公司 | 用于生成非关系数据库的模式的方法和设备 |
CN103530327A (zh) * | 2013-09-25 | 2014-01-22 | 清华大学深圳研究生院 | 一种从非关系型数据库到关系型数据库的数据迁移方法 |
CN103810275A (zh) * | 2014-02-13 | 2014-05-21 | 清华大学 | 用于非关系与关系型数据库间数据交互的方法和装置 |
Non-Patent Citations (2)
Title |
---|
MICHAEL J. MIOR ET AL: "Automated Schema Design for NoSQL Databases", 《SIGMOD’14》 * |
姚云鹏 等: "基于文档模型的Nosql数据库逻辑建模", 《信息系统工程》 * |
Also Published As
Publication number | Publication date |
---|---|
CN105373561B (zh) | 2019-02-15 |
US10031930B2 (en) | 2018-07-24 |
US20160063038A1 (en) | 2016-03-03 |
US20160085778A1 (en) | 2016-03-24 |
US10366059B2 (en) | 2019-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567464B (zh) | 基于扩展主题图的知识资源组织方法 | |
CN104216894B (zh) | 用于数据查询的方法和系统 | |
CN111597209B (zh) | 一种数据库物化视图构建系统、方法以及系统创建方法 | |
CN107003935A (zh) | 优化数据库去重 | |
CN105095237A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN107480141B (zh) | 一种基于文本和开发者活跃度的软件缺陷辅助分派方法 | |
JP7432801B2 (ja) | デプスマップマッチングに基づく医療データエレメント自動化分類方法及びシステム | |
CN105446705A (zh) | 用于确定配置文件的特性的方法和装置 | |
CN110275940B (zh) | 一种中文地址识别方法及设备 | |
CN113869052B (zh) | 基于ai的房屋地址匹配方法、存储介质及设备 | |
CN104239299A (zh) | 三维模型检索方法及装置 | |
CN111178051B (zh) | 建筑信息模型自适应的中文分词方法及装置 | |
CN110968713B (zh) | Bim多尺度信息检索方法及装置 | |
CN111538766A (zh) | 一种文本分类方法、装置、处理设备和票据分类系统 | |
CN112445876A (zh) | 融合结构、属性和关系信息的实体对齐方法和系统 | |
CN102508971B (zh) | 概念设计阶段产品功能模型建立方法 | |
CN105630756A (zh) | 数据处理设备和方法 | |
CN114238524B (zh) | 基于增强样本模型的卫星频轨数据信息抽取方法 | |
CN110334720A (zh) | 业务数据的特征提取方法、装置、服务器和存储介质 | |
CN105373561A (zh) | 识别非关系数据库中的记录模式的方法和设备 | |
CN114463596A (zh) | 一种超图神经网络的小样本图像识别方法、装置及设备 | |
CN102725754B (zh) | 一种索引数据处理方法及设备 | |
CN101853444A (zh) | 基于模型合并的集成化企业过程参考模型建立方法 | |
KR102480518B1 (ko) | 신용평가 모델 업데이트 또는 교체 방법 및 장치 | |
CN104463864B (zh) | 多级并行关键帧云提取方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |