首页> 中国专利> 一种基于稀疏文件的数据库存储模型的系统和方法

一种基于稀疏文件的数据库存储模型的系统和方法

摘要

本实施例提供了一种数据库存储模型,利用稀疏文件的特点高效存储和检索数据。所述实施例提供了利用文件系统抽象层掩盖磁盘空间的管理复杂性的数据库算法,也为所述数据库提供了保持多个数据库对象的线性和连续的逻辑地址空间。一种实施例方法包括:在逻辑稀疏文件中预分配多个固定大小和固定偏移的连续区段。在接收到将数据库对象写入所述区段的命令时,在数据库目录中映射所述数据库对象至所述区段。该方法还包括:与文件系统进行连接,以初始化存储介质空间而将所述数据库对象写入所述固定偏移的区段。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-28

    授权

    授权

  • 2016-10-26

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150224

    实质审查的生效

  • 2016-09-28

    公开

    公开

说明书

技术领域

本发明一般涉及数据库系统,以及在特定实施例中,涉及一种基于稀疏文件的数据库存储模型的系统和方法。

背景技术

传统的数据库服务器使用一个或多个系统文件存储各个数据库对象。或者,一些模型在裸盘存储基础上建立统一的存储管理。这两种方法都各有利弊。对于存储有众多数据库(database,DB)对象的大型数据库管理系统(database management system,DBMS),例如,数据库对象多达数十万乃至数百万,第一种模型性能较差或容易崩溃。后一种方法则需要扎实的推动力(时间上和资源上)以构建、实施、和稳定数据库存储层。两种方法都能够将整个可用内存分割为特定数据库对象区域和共享元数据区域,以便高效和有机地访问数据库对象中的数据。数据库采用单独的文件表示每个数据库对象(如表格、索引、触发),可能需要几千个文件表示一种典型数据库,甚至几百万个文件表示一个巨型大规模并行处理(massively parallel processing,MPP)数据库。管理如此巨大的单独文件的集合以及特别是并行创建和删除文件的元数据密集型操作,并非易事,尤其是在分布式集群文件系统环境中。因此,需要一种改进的数据库存储模型以解决此类问题。

发明内容

根据一实施例,一种数据库系统引擎执行的数据库存储操作方法包括:在逻辑稀疏文件中预分配多个固定大小和固定偏移的连续区段。在接收到将 数据库对象写入所述区段的命令时,在数据库目录中映射所述数据库对象至所述区段。该方法还包括:与文件系统进行连接,以初始化存储介质空间而将所述数据库对象写入所述固定偏移的区段。

根据另一实施例,一种数据库系统引擎执行的数据库存储操作方法包括:配置采集文件,所述采集文件包括多个固定大小且相隔固定偏置的区段,添加所述采集文件的采集文件对象ID(collection file object ID,COID)至表空间目录的条目。针对所述采集文件中的每个所述区段,初始化采集目录的条目中的对象ID(object ID,OID)和对象区段索引(object segment index,OSEG)。该方法还包括:在所述采集目录的所述条目中添加所述COID和指示所述采集文件中的所述区段的位置的采集区段索引。

根据再一实施例,一种进行数据库存储操作的管理组件包括至少一个处理器,以及用于存储所述至少一个处理器执行的编程的非瞬时性计算机可读存储介质。所述编程包括的指令用于在逻辑稀疏文件中预分配多个固定大小和固定偏移的连续区段。所述编程包括的进一步的指令用于接收将数据库对象写入所述区段的命令,以及在数据库目录中映射所述数据库对象至所述区段。所述管理组件还用于与文件系统组件进行连接,以初始化存储介质空间而将所述数据库对象写入所述固定偏移的区段。

上文仅粗略描述了本发明实施例的特征,以便下文中关于本发明的详细描述能够得到更好理解。下文中将描述本发明实施例的其他特征和优点,构成了本发明权利要求的内容。本领域技术人员应当理解,基于此处公开的理念和具体实施例,可便利地修改和设计与本发明具有相同目的的其他结构和过程。本领域技术人员也应意识到,这些同等建构不应背离附带权利要求中规定的本发明的精神和范围。

附图说明

为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:

图1示出了一种数据库采集文件表空间的实施例;

图2示出了区段和子段至数据库管理的数据库对象的映射实施例;

图3示出了一种创建数据库系统目录以管理存储区段的方法实施例;

图4示出了一种方法实施例以分配数据库区段和分配磁盘空间至数据库对象;

图5示出了一种释放数据库存储区段和解除磁盘空间分配的方法实施例;

图6为一种可用于实施各种实施例的示例性处理系统的图。

除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。

具体实施方式

下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。

本实施例提供了一种数据库存储模型,利用稀疏文件的特点高效存储和检索数据。所述实施例提供了利用文件系统抽象层掩盖磁盘空间的管理复杂 性的数据库算法,也为数据库提供了保持多个数据库对象的线性和连续逻辑地址空间。所述常备存储空间能按需稀疏分配。所述实施例利用文件系统稀疏文件提供的软配置或“精简”配置(见下文)高效存储数据库对象,避免文件系统管理大量文件时的缺点。数据库存储层提供将数据库对象映射至所述文件系统提供的固定大小的连续逻辑地址区间内的目录(表格)。将所述文件系统分类,只为提供逻辑上连续的精简配置的地址空间,所述数据库将所述地址空间划分为映射至数据库对象的多个区段。所述数据库存储层采用较为简单的方法通过大型稀疏文件中的固定大小和固定偏移的逻辑“区段”来保持大量(如几千个)数据库对象。每个数据库对象都能在单个的精简配置的连续地址空间内独立扩展。利用稀疏文件以及改变所述数据库存储层和文件系统之间的界线,能够潜在地应用于任何合适的数据库。所述底层系统内存可能是或可能不是传统的文件系统,可以是任何提供精简配置的连续地址空间的接口。

稀疏文件是底层文件系统提供的一种抽象文件。稀疏文件提供了较大的虚拟地址空间、可用空间管理、地址空间的非连续使用以及元数据的维持,性能可靠且具备扩展性。稀疏文件仅利用文件内的已分配/初始化空间,而非文件的整个地址空间。例如,稀疏文件在创建时能够包括1百万兆字节(TB)的地址空间,但仅包括44千字节(KB)从地址0开始的已分配/初始化数据,以及另外100KB从地址0xffff(或64KB)开始的数据。那么,在整个1TB空间中,稀疏文件只能利用144KB,外加文件元数据的少量附加字节。

典型的,文件提供单个的连续的地址空间。在能够支持超过4TB文件的文件系统中,要表示可能扩展至1千兆字节(GB)大小的对象,就要将所述1GB的对象在所述文件中间隔开来,例如,将10GB预分配至10个区段。这种方法浪费了大量的磁盘空间。对于那些从未达到1GB大小的对 象,这样分配空间也很浪费。稀疏文件提供单个的连续地址空间,最初包括未分配/未初始化的空间区域。支持稀疏文件的现代文件系统(如Ext4,XFS,Btrfs,NTFS)能够提供直接在文件中预分配区域的系统接口,无需(为了实际数据使用)初始化空间。这种系统也能解除之前已被写入的文件的未使用区域的分配。这些文件系统提供多种文件状态:未分配,已分配但未初始化,和已分配且已初始化。另外,一些文件系统提供“精简”配置的稀疏文件。这就意味着这些系统直到数据被写入才会为文件分配磁盘空间。上述任一系统都能被用于提供稀疏文件。

使用Ext4等现代文件系统,每个对象都能被置于固定逻辑地址间隔的地方,且所述对象之间的未使用部分未初始化。这样,每个所述对象的连续地址空间都能在所述逻辑地址空间中扩展而不受文件中其他对象的阻碍,从而不浪费磁盘空间。所述底层文件系统透明管理所述磁盘中的可用空间,提供所述磁盘中的盘区以备份写入时的对象。当不再需要对象内的数据时,所述磁盘空间能够通过系统呼叫返回所述文件系统可用空间,文件系统分配器能再次使用所述不需要的磁盘空间以延展其他对象。这样使用数据库文件的稀疏文件使得多个数据库对象可置于单个文件内,无需产生为每个对象创建和管理文件的成本。文件系统元数据的更新仅反映当表格/索引被添加/丢弃或延展/减少时的页面附加和移除。这样,许多(如几千个)表格/索引都能在单个文件中表示。所述数据库能轻松且高效地使用目录将所述对象映射至所述文件中的连续区间。

图1示出了一种采集文件表空间100,其在逻辑连续地址空间内具有固定大小的区段和位于固定偏移的子段。采集文件是一种能够包括多个表格、索引、触发和/或其他数据库对象的数据的稀疏文件。在传统的数据库术语中,采集文件被当作是一种在同一存储容器(如文件、文件系统、卷或磁盘)中保持多个相关的数据库对象的表空间。所述表空间是所述元数据的一 部分,在内部目录表格的条目中描述。所述采集文件的大小受限于其驻留的文件系统,当需要定位某个设备中的特定表格/索引或者数据库较大时,可指定多个采集文件。所述采集文件可包括指示文件目的的信息头,但采集文件中没有描述其布局的元数据。所述文件中包括的未使用的区段和子段在使用前未被初始化。区段和子段只有在被写入时才能显现。所述描述采集文件的布局的元数据位于所述数据库采集目录中。

所述采集目录是系统维持的目录(如永久表格或数据结构),包括管理所述采集文件所需的各种元数据信息以及各种数据库对象的分配/分配。例如,所述采集目录包括所述数据库中每个表格/索引对象的区段的采集文件名称和偏置。所述目录维持在非易失性内存中,提供合适的关系型DBMS的一致性、持久性和ACID(原子性、一致性、隔离性和持久性)语义学。所述目录的每一行都描述了一个对象ID(object ID,OID)表格/索引区段至采集文件区段的映射。通过所述对象ID和对象区段索引列,给所述采集目录编索引。

所述采集文件的列对应于所述对象ID(object ID,OID),对象区段索引(object segment index,OSEG),采集文件名(collection filename,CFILE),采集文件区段索引(collection file segment index,CSEG),区段格式(segment format,FMT)。在采集文件中为表格或对象创建区段时,为所述OID和OSEG以及相关联的CFILE、CSEG和采集文件区段FMT值添加表空间条目至所述采集目录。所述OSEG是所述对象的关系中区段(区段列表)的索引。所述OSEG的范围为0至所述关系中的最后一个区段的索引。给所述OID和OSEG列编索引以便迅速查找OID和OSEG对,或者迅速在所述采集目录中找到未使用(如OID=0且OSEG=0)的区段。所述采集文件(collection file,CFILE)和采集文件区段索引(collection file segment index,CSEG)定义所述区段的位置。所述CFILE是所述采集文件中的所述 对象ID,也称为采集文件对象ID(collection file object ID,COID)。所述CSEG是所述采集文件中的所述区段的索引。所述FMT是描述所述区段内容的整数值。例如,默认FMT=0指示所述区段仅包括数据,FMT=1用于指示所述区段仅包括初始化数据,FMT=2指示所述区段包括数据和可用空间映射,FMT=3指示所述区段包括数据、可用空间映射和可视性映射。

图2示出了区段和子段至所述数据库管理的数据库对象的映射方法200的实施例。区段是采集文件中固定大小的连续的逻辑地址区间。每个区段在偏移开始,所述偏置是所述区段大小的倍数,在采集文件中可配置且固定。例如,一个16TB的包括1GB区段的采集文件包括在所述文件中每个1GB的倍数开始的区段。所述采集文件中的所述区段依次从0至16383(16TB/1G)编号。稀疏分配采集文件,意味着所述磁盘空间仅在所述区段被占用时才会分配。区段为了分配的目的而被划分为固定大小的页面。页面是字节方面的可配置大小(如8KB),是区段内为数据分配的空间的最小量。

所述数据库通过管理固定逻辑偏移的逻辑固定大小区段来管理与数据库对象相关联的空间。所述数据库将这些区段映射至稀疏文件中的偏移,所述映射存储在数据库元数据目录中。某一给定对象的所述区段列表从0开始依次编号。当所述对象扩展至充满整个区段,所述采集文件中的可用区段被分配至所述对象且给与下一个对象区段索引(object segment index,OSEG)。当分配所述采集文件中的所述区段时,保留对应的逻辑地址区间,但不分配所述磁盘空间。当数据被写入所述对象时,所述文件系统为之后的区段分配真实的磁盘空间。

在固定逻辑地址边界上映射所述区段,使得所述文件能够在所述逻辑地址空间内扩展至最大程度,而不覆盖所述采集文件中的下一区段。由于区段 扩展可能不会超过为所述区段分配的空隙,所述数据库无需锁定逻辑地址区间以形成区段。区段内的已分配数据无需将其可用的整个逻辑地址区间都填满。但是,由于未被分配(至所述磁盘或存储介质),一个区段数据的末尾和下一区段的开始之间的未写入空间没有浪费。所述底层文件系统为所述区段处理不相连物理磁盘空间的秘密分配,无需告知所述数据库系统或所述数据库系统无需参与,从而大大简化数据库的实现。

子段是区段内页面子集的一个连续地址区间。子段可用作驻留在区段内的特殊目的的数据库元数据区域。例如,区段内的可用页面维持在可用空间映射(free-space-map,FSM)子段。每个对象具有两个子段,一个数据子段,一个FSM子段。一些对象还具有各种特定对象目的的附加子段。例如,表格对象可能包括为表提供初始化数据的初始化子段(初-子段),或指示所述表数据(行)的哪些部分对于用户事务是可见或不可见的可视性子段。所述元数据子段的大小是预先确定的,以足够表示所述区段内的最大数据。每一种元数据子段在区段内都具有指定的固定位置和大小。

类似于区段的例子,所述区段内的所述元数据子段的所述固定大小和位置简化了对所述子段的磁盘空间管理。子段未被充满时没有造成磁盘空间的浪费是因为只有使用时空间才会被所述文件系统分配。随着对象数据的增长,添加附加区段至所述数据库,每个附加区段都包括所述附加数据子段所需要的数据和元数据子段的附加空间。例如,一个表格对象中,有8KB的页面和1GB的区段,所述可视性子段需要不超过4个页面,所述FSM子段需要大约32个页面。任一区段要保持这两个子段都需要不超过64个页面。因此,在每个1GB区段中,前面的4个页面(32KB)为所述可视性子段保留,60个页面(32KB至512KB)为所述FSM子段保留。所述区段中剩余的131008个页面(1GB至512KB)为所述数据保留。初-子段(针对初始化数据)等元数据子段所需的磁盘空间,可以不需要预先确定,无论是在总量 方面还是基于单个区段的所需方面。这些子段存储在各自的区段中,这些区段的分配受到类似于其他区段的所述采集目录的管理。

采集文件无需预先格式化。所述采集文件表空间的文件名和属性都存储在所述数据库表空间目录中。描述所述采集文件内的所述区段边界的所述数据库元数据以及为其分配的对象都存储在所述数据库采集目录中。最初,所述采集目录中的所述区段都是未使用的(分配至对象ID=0)。所述采集目录在创建第一个采集文件时创建。

图3示出了一种创建数据库系统目录以管理存储区段的方法300的实施例。步骤110中,该方法300开始于为表空间获取新OID。利用“CREATE TABLESPACE”的命令添加采集文件至数据库。步骤120中,在所述CREATE TABLESPACE的命令指定下的文件夹中创建空的采集文件(如仅包括信息头)。采集文件信息头也被写入所述文件中。步骤130中,添加包括所述新建表空间的名称及其对象ID的条目至数据库表空间目录。步骤131中,该方法300确定所述采集目录是否存在。若所述采集目录存在,该方法300继续至步骤160。否则,步骤140中,创建采集目录(如,数据库系统表)。步骤150中,为所述采集目录创建索引。通过所述对象ID(object ID,OID)和对象区段索引(object segment index,OSEG)列,给所述采集目录编索引。步骤160中,为所述采集文件中所述逻辑地址区间的每个区段偏置添加未使用的区段条目(从OID=0,OSEG=0,CSEG=0开始至最大FMT=0)至所述采集目录。

当添加采集文件至所述数据库时,添加所述采集文件中所有未使用区段的条目至所述采集目录。例如,为了添加最大16TB和包括1GB区段的采集文件,添加16KB的区段条目至所述采集目录文件。所述添加的区段未被使用,分配的对象ID为0,对象区段索引(object segment index,OSEG)为 0。每个区段的采集文件对象ID和采集文件偏置都设置为参考所述采集文件中的每个可用区段。当添加所述采集文件表空间至所述数据库时,不分配磁盘空间至所述采集文件。仅添加所述可用区段的描述至所述采集目录。只有在页面被写入所述采集文件时才可以分配磁盘空间。所述子段为所述区段内预定义的连续页面的区间。所述区段直到被写入时才被实例化。直到使用时才分配磁盘空间至所述子段。维持所述目录中未使用区段和已分配区段的映射是一种可能的实现。也可使用其他实现。例如,在其他实现中,所述采集目录中没有也不需要未使用区段的条目。相反,所述数据库目录为所述已分配区段保持记录。

当页面被写入还未分配的区段中的数据子段页面偏置时,为对象分配区段以保持所述数据和元数据。为表格/索引关系分配新的区段需要在所述采集文件目录中为所述采集文件寻找第一个未使用区段。由于所有区段都具有相同的固定尺寸和固定位置,因为不需要搜寻合适大小的空隙,分配新区段较为简单。数据库只需要对关系中的区段的位置和索引保持记录。逻辑连续的地址空间的偏置可通过简单计算获得,该简单计算的变量为所述页面偏置和区段位置。当之前未写入的磁盘页面被写入时,所述底层文件系统透明分配所述常备磁盘空间。所述文件系统的工作是为所述区段提供连续的逻辑页面和管理不相连的物理磁盘盘区。

图4示出了一种方法400的实施例以分配数据库区段和分配磁盘空间至数据库对象。该方法400可用于写页面至对象关系中的某一偏置。在步骤210中,通过将对象偏置除以子段大小,计算出对象区段索引(object segment index,OSEG)。通过所述对象偏置模(%)所述子段大小,计算出子段内页面。步骤220中,该方法400查询采集目录中的对象ID和对象区段索引对。步骤221中,该方法400确定所述区段是否已经分配。若所述区段已被分配,则该方法400继续至步骤260。否则,步骤130中,该方法尝 试在所述采集目录中找到任一未分配的子段(OID=0且OSEG=0)。步骤231中,该方法300检查是否找到未分配区段。如果没有找到,则该方法400在步骤240中上报指示表空间中没有可用磁盘空间,且该方法400继续至步骤260。但是,如果找到了未分配区段,则在步骤250中,通过设置所述对象ID和计算出的对象区段索引,分配该区段至所述对象。在步骤260中,该方法400对目的采集文件区段和计算出的页面进行页面写。如果新的页面从未被写过,文件系统自动分配延展区段内容所需的空间以保持所述新页面。如果页面已经存在,文件系统在指示的偏置上写页面。数据库系统无需发起任何特殊的系统呼叫去写文件。如果实际磁盘写入失败,该方法的写入及其相关的事务失败。

当表格、索引或者其他数据库对象从数据库丢弃或者缩小,未使用区段从对象的关系中分离。图5示出了一种表格内释放数据库存储区段和解除磁盘空间分配的方法500的实施例。步骤310中,该方法开始于删除区间内的第一区段,(在采集文件中)释放与给定对象ID的对象相关联的区段。步骤320中,该方法500在采集目录中查询对象ID和对象区段索引。步骤321中,该方法检查是否找到所述区段。如果没有找到所述区段,则该方法500结束。如果找到所述区段,则通过在步骤330中将所述对象ID和对象区段索引都设为0,更新或释放所述区段。步骤340中,该方法500(或数据库系统)通过系统呼叫通知底层文件系统解除采集文件中CSEG偏移的子段的分配。然后,所述文件系统可释放底层磁盘空间。对于任何指向所述区段的读,所述文件系统上报零,在其他区段被写入时可按需分配磁盘空间。因此,无需清空所述区段中的数据。步骤350中,该方法继续至下一个待释放区段(如果找到的话),并返回至步骤320。

上述方法的执行者为连接在数据库系统和主机或文件系统之间的所述DBMS的数据存储引擎。如上述方法所述,所述引擎可以为所述DBMS的 应用软件编程接口(application programming interface,API),用于创建、读取、更新和删除数据库中的数据。在实施例中,通过ACID事务更新数据库目录中维持的数据库元数据,以自动达到一致性/恢复。所述数据库元数据和驻留在采集文件中的对象区段和子段上写的数据也可以通过ACID事务进行更新,以及自动恢复。可以利用日志处理或日志记录文件系统维持文件系统元数据的完整性。映射逻辑连续区段至不相连物理磁盘盘区的文件系统元数据可以通过ACID事务进行更新,以及自动恢复。由于数据库数据和元数据的完整性由数据库事务在运行时保护,所述文件系统无需恢复数据。但是,所述文件系统可能需要确保所述文件系统元数据在数据库恢复时保持一致。当所述文件系统在数据库重新启动和恢复之前挂载时,首先恢复所述文件系统元数据。

图6为可用于实施各种实施例的处理系统600的方框图。所述处理系统可以是智能手机等移动个人用户设备的一部分或者与其相对应。特定装置可利用所有所示的组件或所述组件的仅一子集,且装置之间的集成程度可能不同。此外,设备可以包括部件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等。处理系统600可以包括配备一个或多个输入/输出设备,例如扬声器、麦克风、鼠标、触摸屏、按键、键盘、打印机、显示器等的处理单元601。处理单元601可包括中央处理器(CPU)610、存储器620、大容量存储设备630、视频适配器640,以及连接到总线的输入/输出(I/O)接口690。所述总线可以为任何类型的若干总线架构中的一个或多个,包括存储总线或者存储控制器、外设总线等等。

所述CPU610可包括任何类型的电子数据处理器。存储器620可包括任意类型的系统存储器,例如静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read- only memory,ROM)或其组合等等。在实施例中,存储器620可包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。大容量存储器设备630可包括任意类型的存储设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备630可包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。

视频适配器640以及I/O接口690提供接口以将外部输入以及输出装置耦合到处理单元上。如图所示,输入输出设备的示例包括耦合至视频适配器640的显示器660和耦合至I/O接口670的鼠标/键盘/打印机690的任意组合。其它设备可以耦合至处理单元601,可以利用附加的或更少的接口卡。举例来说,串行接口卡(未图示)可以用于为打印机提供串行接口。

处理单元601还包括一个或多个网络接口650,网络接口650可包括以太网电缆等有线链路,和/或到接入节点或者一个或多个网络680的无线链路。网络接口650允许处理单元601通过网络680与远程单元通信。例如,网络接口450可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,处理单元601耦合到局域网或广域网上以用于数据处理以及与远程装置通信,所述远程装置例如其它处理单元、因特网、远程存储设施或其类似者。

虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号