CN113569508A - 基于id进行数据索引与访问的数据库模型构建方法及设备 - Google Patents
基于id进行数据索引与访问的数据库模型构建方法及设备 Download PDFInfo
- Publication number
- CN113569508A CN113569508A CN202111096626.3A CN202111096626A CN113569508A CN 113569508 A CN113569508 A CN 113569508A CN 202111096626 A CN202111096626 A CN 202111096626A CN 113569508 A CN113569508 A CN 113569508A
- Authority
- CN
- China
- Prior art keywords
- data
- access
- data object
- type
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/12—Printed circuit boards [PCB] or multi-chip modules [MCM]
Abstract
本申请提供一种应用于EDA软件的基于ID进行数据索引与访问的数据库模型构建方法及设备,包括:在数据库的创建阶段,为每个数据对象分配ID,并为不同类型的数据对象分别创建相应的数据访问包;其中,数据访问包的内部存储对应的ID,该ID用于标志所索引的数据对象,数据访问包中通过软件编码了根据ID访问相应数据对象的方式;在数据库的使用阶段,EDA软件在运行过程中,EDA软件的各计算模块(即数据库的使用者)产生数据访问需求;根据数据访问需求,直接使用对应的数据访问包(即数据索引)访问相应的数据对象;以及运行数据访问包中的基于编码规则编写的数据访问指令以访问所需的数据对象。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于ID进行数据索引与访问的数据库模型构建方法及设备。
背景技术
随着集成电路工艺的不断发展,芯片设计软件所需处理的数据量越来越大(亿门级别),计算密集程度越来越高。
在数据库中,一般以“数据对象”为单位对数据进行组织管理、存储与访问。每个数据对象本身又是一组简单数据(表现为数据对象的各种属性)的集合。数据对象一般对应于芯片上的某个物理实体或逻辑抽象,而数据属性一般对应于物理实体或逻辑抽象的某种性质或者特征。绝大多数情况下,属性本身也是一种数据对象。
作为一个整体,这些数据库数据清晰完整地描述了整个芯片的结构与特征。不同数据对象依据复杂程度的不同,一般占用几个字节到几兆字节不等的内存资源。数据对象的数量与芯片的基本组成单元——门电路具有相同的数量级,一般可以达到百万至上亿级别。不同数据对象之间存在着复杂的相互关系,一般基于相互引用的方式来描述各种关系。这里“引用”具体指,在一个关系描述中,采用数据对象的内存地址(内存指针)来指代不同的数据对象。一个引用占用内存约为几字节(与计算机硬件平台相关),相较于拷贝整个数据对象的方式,引用的方式极大地节约了内存占用问题,已经被普遍采用。
因此,一般每个数据对象在内存中只有一份存储,但是拥有大量的引用。所有的数据对象及其相互关系组成了一张极其复杂、高密度、高纬度的数据节点网络。芯片设计软件的各种具体计算过程,正是基于这样一张复杂的数据节点网络进行的。不同功能的计算过程具有不同的复杂程度,其耗时一般为几毫秒至几周等。整个芯片设计过程就是对各种软件计算功能的反复调用与循环迭代,其耗时一般为几周至几年。
发明内容
本申请提出一种基于ID进行数据索引与访问的数据库模型构建方法及设备。
本申请第一方面,提供了一种应用于EDA软件的基于ID进行数据索引与访问的数据库模型构建方法,包括:
在所述数据库的创建阶段,为每个数据对象分配ID,并为不同类型的数据对象分别创建相应的数据访问包;其中,所述数据访问包作为数据对象的索引,能够被拷贝并直接存储于所述数据库的使用者的内存中;所述数据访问包的内部存储对应的ID,该ID用于标志所索引的数据对象,并且,所述数据访问包中通过软件编码了根据所述ID访问相应数据对象的方式,所述数据访问包的软件编码规则为:若所述数据对象的类型为第一类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象;或者,若所述数据对象的类型为第二类型或第三类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象;
在所述数据库的使用阶段,所述EDA软件在运行过程中,所述EDA软件的各计算模块产生数据访问需求;
根据所述数据访问需求,直接使用对应的数据访问包访问相应的数据对象,所述数据访问包中包括数据对象的ID和访问所述数据对象的方式;以及
运行所述数据访问包中的基于所述编码规则编写的数据访问指令以访问所需的数据对象。
本申请第二方面,提供了一种计算机设备,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据第一方面所述的方法的指令。
本申请第三方面,提供了一种包含计算机程序的非易失性计算机可读存储软件解决方案,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行第一方面所述的方法。
本申请第四方面,提供了一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行如第一方面所述的方法。
从上面所述可以看出,本申请提供的基于ID进行数据索引与访问的数据库模型构建方法及设备,映射器中只需存储内存占用小的指针或简单数据对象(或属性对象),因此整个映射器占用总内存较小,能够用一块连续内存空间实现,避免了内存分页对映射过程造成的性能问题。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例所提供的一种电子设备的结构示意图。
图2A示出了根据本申请实施例的仿真工具的基本结构示意图。
图2B示出了根据本申请实施例的仿真工具的一个计算命令的基本执行流程。
图2C示出了根据本申请实施例的数据库系统212的模块2124的具体示意图。
图3A示出了根据本申请实施例的基于ID的数据访问方式的示意图。
图3B示出了根据本申请实施例的一个示例性ID映射器的示意图。
图4A示出了本申请实施例所提供的示例性方法的示意图。
图4B示出了根据本申请实施例的一种数据访问架构的示意图。
图5A示出了根据本申请实施例的传统指针模式的数据访问示意图。
图5B示出了根据本申请实施例的OpenDB的基于ID的数据访问模式的示意图。
图5C示出了根据本申请实施例的基于数据访问包的数据访问模式的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了本申请实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1所示,存储的数据可以包括程序指令(例如,用于实现本申请的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2A示出了根据本申请实施例的仿真工具200的基本结构示意图。
如图2A所示,虚线以上为用户部分;虚线以下为仿真工具200,仿真工具200可以由图1所示的设备100实现。仿真工具200可以包括Tcl命令(或者图形/窗口界面)模块204、各计算模块(例如,Place计算模块206、Route计算模块208、Optimization计算模块210等)以及数据库系统212。用户202可以通过在Tcl命令(或者图形/窗口界面)模块204中输入相关命令来操作仿真工具200。在一些实施例中,该仿真工具200可以是任意的EDA(电子设计自动化,Electronic Design Automation)软件。
Tcl命令模块204,主要起着消息传递或命令传递的功能。Tcl命令模块204可以读取用户202向仿真工具200输入的指令,并可以根据指令的具体内容,分配并传递给相应的计算模块去执行具体任务。
根据计算任务的不同,各计算模块可以分为,例如,Place计算模块206、Route计算模块208、Optimization计算模块210等。Place计算模块206可以用于为所有元器件计算出一个合理的摆放位置,Route计算模块208可以用于计算出各个元器件之间合理的导线连接方式,Optimization计算模块210则可以用于将各个元器件之间的摆放位置和导线连接方式进行优化。这些计算模块的计算过程可以在,例如,图1的处理器102中进行。
数据库系统212可以用于完整全面地记录、存储被仿真或者被设计的芯片的所有信息(如位置、方向、尺寸、结构、导线连接方式等等),例如,存储在图1的存储器104中。
图2B示出了根据本申请实施例的仿真工具200的一个计算命令的基本执行流程。如图2B所示,在步骤302,用户202可以通过Tcl命令模块204提供的命令界面或者图形界面向仿真工具200下达一个命令(例如, do_place命令),然后,在步骤304,Tcl命令模块204解析这一命令并将其分发到相应的计算模块(例如,Place计算模块206)。在步骤306,各计算模块执行各自所需进行的具体计算。在这期间,如步骤308所示,各计算模块需要(高频、反复)调取数据库系统212中的数据来进行计算。计算完成后,如步骤310所示,各计算模块可以将计算结果写入数据库系统212,并将计算结果返回给Tcl命令模块204。在步骤312,Tcl命令模块204通过命令界面或者图形界面将计算结果返回给用户202,仿真工具200对一个计算命令的处理过程结束。在步骤314,用户可以根据计算结果进行评估,然后确定下一步计划。
可以看出,在仿真工具200对一个计算命令进行处理的过程中,各计算模块在计算任务的执行过程中,会高频、密集地读取数据库系统212中的数据,或者向数据库系统212中写入新数据。
数据库系统212中所存储的数据信息如图2A的模块2122所示。例如,Place计算模块206自身不直接存储芯片的数据信息,而是在执行计算之前、之中,从数据库系统212中读取所有元器件的方位信息,以及这些元器件之间的相互连接关系等等;计算之中、之后,Place计算模块206可以向数据库系统212中写入相应元器件的新方位信息等。数据库系统212与各计算模块分工协作,共同完成用户指定的任务。
从内存角度而言,各计算模块从数据库系统212中访问数据的基本形式如图2A的模块2124所示。被仿真或被设计的芯片的数据按照类型不同被划分为多个相互独立完整的数据块,分散地存储在不同的内存块(对应于不同内存位置)上。如果两个数据对象处于不同的内存块上,却由于存在逻辑关系而需要相互包含,那么在读取数据的过程中就可以通过“内存地址/指针”的形式进行指定。
通过传统指针模式访问数据对象及其属性的典型过程一般分为如下几步。
首先,数据库创建者(提供数据库中的数据的一方,例如,专用数据库的提供方)创建所有数据对象,将其存储于内存中,并将各数据对象在内存中的地址(指针)作为该数据对象的数据引用。这里,数据库所创建的所有数据对象可以是存储在图1的设备100的存储器104的内存中,也可以是存储在云端设备的内存中,当存储在云端时,仿真工具200可以通过远程调用使用数据库中的数据。
然后,数据库使用者(使用数据库中数据的一方,例如,仿真工具200的开发者或使用者)将从数据库获得的数据指针存储在自己的暂存区中(例如,图1的存储器104),作为其数据引用。当需要访问某个数据对象时,从暂存区获取该数据对象的指针(指针的值即为数据对象的内存地址,通过指针可以直接访问数据对象本身)。当需要访问某个属性对象时,可以通过调用数据对象的自定义命令访问该数据对象的属性对象的值或者指针:若获得的是属性对象的值,则本次访问过程结束,若获得的是属性对象的指针,则需要进一步调用属性对象的自定义命令访问其内部的亚属性对象(值或者指针)。此递归调用过程将持续进行,直至访问到所需要属性的值。
图2C示出了根据本申请实施例的数据库系统212的模块2124的具体示意图。
如图2C所示,Place计算模块206的数据记录在内存块21242中、Inst元器件数据记录在内存块21244中、Pin引脚数据记录在内存块21246中、Net导线数据记录在内存块21248中,这些内存块分散地存储在内存中。如图2C所示,模块21242中示出了Place计算模块206需要计算的示例性信息。实例(例如,InstA和InstB,在图2A的模块2122中可以表现为各种门电路)的元器件信息和相应的引脚(例如,Pin-A1和Pin-B2)的信息分别存储在数据库系统212的内存块21244和21246上。由于元器件信息和相应的引脚存在逻辑关系而需要相互包含(例如,InstA拥有Pin-A1,InstB拥有Pin-B2),那么就需要通过“内存地址/指针”的形式进行指定。例如,如图2C所示,在Inst元器件的内存块21244上,记录了其所包含的Pin引脚所属内存块21246的地址,表明当前inst元器件包含这些pin引脚。
由于Place计算模块206需要计算整个芯片所有元器件的最优位置,因此其计算过程中必须存储所有inst元器件的信息。如前所述,这是通过记录inst元器件所属内存块的“地址”的方式实现的。如图2C所示,当Place计算模块206需要读取“InstA”的位置信息时,Place计算模块206可以根据其记录的InstA的地址——“(2,D)”,定位到InstA所属的内存块21244,从而在这里读取到InstA的location为(11,8)。更复杂一些的情况是,Place计算模块206需要读取InstA中的某一个引脚Pin-A1的位置信息。这时,Place计算模块206在定位到InstA所属的内存块21244以后,还需要进一步读取Pin-A1的内存地址——即(15,B),并定位到Pin-A1所属的内存块21246,从而读取到Pin-A1的location为(1,1)。
由此可见,基于“物理内存指针”实现的数据对象引用与索引方式(亦即,物理地址直接索引),在传统芯片设计软件中已经被普遍采用。从编码角度而言,这种数据访问方式简洁而直观,其示意性编码形式为(访问数据的一级属性):
此时,至少需要耗费两个计算机指令周期时间。
虽然从编码角度具有简洁、直观的优势,但物理地址直接索引的方式却有其固有缺陷。
其一,安全、稳定性差,容易引起内存越界,造成整个软件的瘫痪。数据访问过程中,若数据指针由于某种原因而失效(例如,内存中的数据本身已经被销毁,但是用户缓存的数据指针没用同步销毁),那么访问数据的过程将导致不可预测的严重后果,例如程序的无条件崩溃和退出。这一问题在大规模芯片设计中尤其严重。设想,已经进行了几天甚至几周的计算过程,由于软件瘫痪,不得不重头进行。
其二,数据易失性。由于内存指针保存的是数据对象在随机存储器(RAM)中的保存位置。而RAM的特点是断电后信息丢失,即当程序由于某种原因(例如被动的计算机断电关机、或者主动的中断与保存)中断退出并重启后,程序中的所有数据指针都会失效。因此,长耗时计算过程的中间状态无法被中断并保存到外存,每次计算都需要从头开始加载,无法基于上一次计算的中间状态继续进行(亦即,程序无法基于上一次的计算结果继续计算,只能重新导入所有数据并更新数据指针,从头计算)。这也是在大规模芯片设计中严重拉长设计周期的一个因素。
其三,存在访问效率问题。这一问题在需要访问数据的多级亚属性时尤为明显。例如,若将访问一次数据属性的平均时间定义为Δt,那么访问n级数据亚属性的平均时间为n×Δt。
为了解决物理地址直接索引方式的上述问题,可以采用基于“唯一身份号码(简称ID)”的方式(下面将其称为软地址间接索引)实现对数据对象的指代与访问。
实际上,传统方式中的数据对象的指针(即物理内存地址)也可以理解为一种唯一身份号码。但它与这里所述的ID的区别是,物理地址直接索引方式中,数据库创建者在内存中创建数据对象时记录数据对象在内存中的位置,然后将该位置作为内存指针,其与数据对象在内存中的物理存储位置是一一对应的关系,一旦数据对象在内存中的存储位置变了(例如,掉电后重启导致内存地址变化),之前加载的内存指针(数据引用)也就失效了。这就造成传统的物理地址直接索引方式下,各计算过程或计算模块每次断电重启后都必须重新加载数据,而无法接着上一次计算的中间状态重启并继续计算的原因。而基于ID的方式,解除了ID与数据对象在内存中的物理存储位置之间的直接关联,ID仅与数据对象本身相关联。
图3A示出了根据本申请实施例的基于ID的数据访问方式400的示意图。
如图3A所示,基于ID的数据访问方式,一般分为如下步骤。
首先,数据库创建者创建所有数据对象(其中包括数据对象4062),将其存储于内存406中,并为其分配唯一的整数型ID号码。ID作为数据的引用。
然后,数据库使用者将从数据库获得的数据ID(例如,数据ID4022)存储在自己的暂存区中,作为其数据引用。当应用层402需要访问相应的数据对象时,从暂存区获取所需查询的数据对象的数据ID4022,然后利用ID映射器404,将ID转化为数据指针(指向数据在内存中的存储地址)4024,并基于该数据指针4024按照传统指针模式访问数据对象4062,相应地,若需进一步访问数据对象4062的属性4064、4066或4068,则进一步查找该属性。
由此可见,数据库使用者在其暂存区记录的是数据ID,各计算模块保存的ID引用不会因为计算机断电或者中断而变化,因此其计算过程的一些中间数据在计算机重启前后持续有效,其计算过程在重启后可基于上一次的结果继续进行,从而克服了数据易失性,为实现各计算过程中任意中间状态的中断与重启奠定了基础。另一方面,由于各个计算功能与模块都是通过ID方式间接索引/访问物理内存中所存储的数据对象,避免了直接操作物理地址过程中由于指针无效而造成的内存越界问题,及其带来的不可预知的软件崩溃退出问题。这将大大提升软件的整体稳定性,加速芯片设计的迭代周期。
然而,基于ID的软地址索引方式也会引入新的问题,如果不能有效解决,也会成为性能瓶颈。
其一,增加了软件的复杂度,主要体现为两个方面。
在基础设施层(即数据库系统本身),需要额外实现一套完整的ID转换与索引子系统(ID映射器404),实现从ID到物理地址的转换与映射、管理数据对象的ID值、内存分配等功能。在应用层(即各计算模块)402,需要将其代码实现从“根据指针直接访问、调用数据对象及其各种属性”转换到“根据ID进行数据对象的访问”的方式。
从编码角度而言,这种方式相较物理地址直接索引方式多了一个额外操作,即通过ID映射器(mapper)将ID转换为指针。其示意性编码形式为:
若需要访问数据亚属性,则形式为:
显然,这种方式增加了编码复杂度。
其二,安全、稳定性差。由于数据库使用者仍旧需要在暂存区读取、存储并操作数据指针,因此会面临和传统指针模式一样问题。
其三,计算耗时、访问效率较低。由于计算密度极高,同一个数据对象在对芯片的整个计算过程中会被反复多次访问,这就对每次索引定位过程的速度提出了很高要求。传统的基于指针的物理地址直接索引方式下,这个过程一般在一个计算机指令周期内完成;而相较于传统指针模式,基于ID的软地址间接定位模式下,访问数据需要经过一个额外的ID到指针的映射/转换过程。这个过程一般需要经过多个计算机指令周期。在大规模芯片设计中,高频率而低效的数据索引定位将成为一个性能瓶颈。例如,在第二代数据库系统中(如OpenDB),典型的定位时间至少是传统方式的4倍。它具体包含下列四个步骤(每个步骤至少需要一个计算机指令周期,总耗时至少为4个指令周期):1)从id中提取基地址编号;2)根据基地址编号计算基地址;3)从id中提取偏移地址;4)将基地址与偏移地址合成为最终的物理地址。上述每个步骤至少需要一个计算机指令周期,总耗时至少为4个指令周期。
以图3A所示的基于ID的数据访问方式为例,一个ID映射器404中存储某一类型的数据对象,不同的数据对象对应不同的ID映射器。
我们知道,整个计算机的内存是有限的,它作为一个公共资源,需要分配给运行于计算机上的所有执行程序。每一次内存分配过程中,所分配的内存大小是有限制的。若需要获得更大的内存,则必须通过多个不连续的小内存片段连接而成。
由于这种内存分配大小的限制,在第二代数据库系统中(如OpenDB),不得不将整个ID映射器分成多个页(Page)。
图3B示出了根据本申请实施例的一个示例性ID映射器404的示意图。
如图3B所示,一个映射器404被分为了多个页,例如,页4042、4044、4046和4048。每个页(例如,页4042、4044、4046或4048)是一个连续的内存,可以存储若干个数据对象。例如,页4042中存储数据对象1-6,页4044中存储数据对象7-12,页4046中存储数据对象13-18,页4048中存储数据对象19-24。不同的页以链接方式前后相连,构成一个完整的ID映射器404。
例如,若某个数据对象在第n个页上的第m行,而每个页有c个数据对象(object),则其ID数值的计算公式如下:
ID=c×(n-1)+m
而根据ID计算数据对象的地址则是上述过程的逆过程,具体步骤为:
1)从ID中提取基地址编号(数据对象所在页的编号n);
2)根据基地址编号计算基地址(即数据对象所在页的地址);
3)从ID中提取偏移地址(数据对象所在页的第m行的地址);
4)将基地址与偏移地址合成为最终的物理地址。
上述每个步骤至少需要一个计算机指令周期,总耗时至少为4个指令周期;而指针模式下,这同一过程只需要一个计算机指令周期。由此可见,相较于物理地址直接索引方式,这里每一次的数据访问都增加了“从ID映射器将ID转化为指针”的时间开销。数据访问频率越高,其性能拖累将越严重。而OpenDB中ID映射器的内存分页是造成其转换效率低下的重要原因。
有鉴于此,本申请实施例提供了一种对数据进行访问的方法,能够提高数据访问效率。
图4A示出了本申请实施例所提供的示例性方法500的示意图。图4B示出了根据本申请实施例的一种数据访问架构/数据库模型600的示意图。方法500可以由图1的设备100执行,并在执行过程中依赖于图4B所示的数据访问架构/数据库模型600,该数据访问架构/数据库模型600可以包括应用层602、数据库使用者的暂存区604、数据映射空间606和数据库创建者的物理内存608。当数据库使用者的暂存区604、数据映射空间606和数据库创建者的物理内存608处于同一设备上时,三者均处于该设备的内存中,只是各自被分配了相互独立的内存空间。
如图4A所示,该方法500可以包括以下步骤。
在步骤502,可以对数据库进行创建(数据库的创建阶段),包括:为每个数据对象分配ID,并为不同类型的数据对象分别创建相应的数据访问包(ID Wrapper)。
在一些实施例中,数据访问包可以是由数据库创建者所创建的。根据不同类型数据对象的特点,数据库创建者可以为不同类型的数据分别创建相应的数据访问包,即每种类型的每个数据对象都有一个定制化的数据访问包。数据访问包的创建主要分为两步:1)定义数据访问包所包含的数据对象的原始ID。2)根据数据对象的特点,编写通过原始ID进行高效数据访问的自定义命令(数据访问指令)。根据被访问的目标数据对象的不同,该自定义命令不尽相同。在一些实施例中,数据库创建者可以根据实际情况编写该自定义命令,以使目标数据对象被该自定义命令描述的访问数据对象的最优方式来访问。该最优方式,可以是随着时间流逝和技术发展所出现的新的可以实现高效数据访问的方式,也可以是根据数据类型的不同而选择的针对该特定数据类型的实现高效数据访问的方式,等等。因此,该自定义命令允许数据库创建者设计定制化的高效数据访问方式,以使数据库中的各类数据都能被高效地访问。
其中,所述数据访问包作为数据对象的索引,能够被拷贝并直接存储于所述数据库的使用者的内存中;所述数据访问包的内部存储对应的ID,该ID用于标志所索引的数据对象,并且,所述数据访问包中通过软件编码了根据所述ID访问相应数据对象的方式,所述数据访问包的软件编码规则至少包括了:若所述数据对象的类型为第一类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象;或者,若所述数据对象的类型为第二类型或第三类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象。
在步骤504,进入数据库的使用阶段,设备100可以运行EDA软件,在设备100运行EDA软件的过程中,该EDA软件的各计算模块可以产生各种各样的数据访问需求700。例如,用户可以通过图2所示的仿真工具200的Tcl命令模块204提供的命令界面或图形界面输入想要执行的命令,该命令所指定的任务被Tcl命令模块204所解析并分发到各计算模块,各计算模块在处理该命令时生成访问相应数据的需求,即该数据访问需求700。
在步骤506,设备100可以根据该数据访问需求700,直接使用对应的数据访问包(ID Wrapper)进行数据访问,该数据访问包中包括数据对象的标识和访问所述数据对象的方式。
在系统初始化阶段,数据库创建者可以创建所有数据对象并将其存储于内存608中,并为其分配唯一的整数型ID号码。然后,根据不同类型的数据对象,分别创建相应的数据访问包。数据对象的原始ID作为对应数据访问包的一部分存储于数据访问包中,不同类型的数据对象具有不同类型的数据访问包。应用层(或者计算模块)使用数据访问包作为相应数据对象的引用,以及访问途径。
数据库使用者可以将从数据库获得的数据访问包存储在自己的暂存区604中,作为其数据引用。如图4B所示,数据库使用者的暂存区604中可以包括数据访问包6042、6044、6046。当该数据访问需求700需要访问某种类型的数据对象时,设备100可以直接使用在创建数据库阶段已经创建好的与该数据对象对应的数据访问包来访问该数据对象。
在步骤508,设备100可以运行所述数据访问包中的基于所述编码规则编写的数据访问指令以访问所需的数据对象。执行数据访问包对应的数据快速访问操作依赖于ID映射器的高效ID转换。ID映射器可以根据数据自身的特点,将ID映射为数据指针,或者数据对象本身,或者直接映射为数据对象的某一级亚属性,从而能够克服传统指针模式下多级亚属性访问效率低下的问题。
例如,在步骤5082,若该数据对象的类型为第一类型,设备100可以根据数据对象的标识(ID)在数据映射空间604中获取该数据对象对应的访问地址(例如,在映射器6062中根据该ID获取该数据对象的内存指针),然后基于该访问地址(内存指针)从物理内存608中获取该数据对象,例如,数据对象6082。在一些实施例中,在获取数据对象6082后,还可以进一步获得其属性6084、6086、6088。
在一些实施例中,对于第一类型的数据对象,映射器6062可以使用一个类似一维数组的结构存储数据ID与其指针的对应关系(例如,可以在系统初始化时从物理内存608中获取并加载到数据映射空间606中供映射器6062调用),而具体的数据对象则在物理内存608的内存池(memory pool)中进行存储。
可以看出,采用步骤5082的数据访问方式可以避免内存分页。原因在于,每个指针的内存占用很小(在64位系统下为8字节)。因此,即使对于总数为百万级别的某一类型的数据对象,其所需要的用于存储指针的连续内存空间也仅为8M左右,在内存中不需要进行分页存储,具有可行性。这一模式下,在数据访问包6042中可以使用如下命令将ID转化为指针:
这里,表示一维数组的一次下标寻址操作,一般耗费一个计算机指令周期时间。
这一模式适用于单个数据对象内存占用较大的情况。因此,在一些实施例中,该第一类型可
以是数据对象的数据大小大于第一阈值(例如,100字节)的数据类型。在一些实施例中,该
第一类型的数据对象的访问频率可以高于频率阈值。
又例如,在步骤5084,若该数据对象的类型为第二类型,设备100可以利用数据访问包6044根据该数据对象的标识(ID)在数据映射空间606(例如,映射器6064)中直接获取数据对象(例如,数据对象60642)。
在一些实施例中,对于第二类型的数据对象(例如,对于内存占用较小的数据对象),可以在映射器6064中直接保存构成整个数据对象的一维数组。由于数据对象内存占用较小,同样能够避免内存分页,从而提高ID转换效率。这一模式下,在数据访问包6044中可以使用如下命令将ID转化为数据对象本身:
与步骤5082的数据访问方式不同的是,这里通过ID能够访问到整个数据对象本身,而非数据指针。其优势在于能够有效利用计算机的缓存机制进一步提升数据访问效率。我们知道,计算机的缓存机制会把其所访问内存的临近区域(即所访问的数据对象)加载到缓存中。因此,在一些实施例中,方法500还可以包括:响应于所述数据对象的类型为第二类型且访问频率高于频率阈值(例如,1000次/秒),设备100可以将该数据对象加载到设备100的缓存中,以使该数据对象可以从缓存中被获取。这样,在后续访问同一数据对象时,设备100可以直接从缓存读取数据,相比于从内存中访问数据,这将进一步提高访问效率。而指针模式下,指针永远指向内存中的位置,必须从内存读取数据,无法利用这一缓存机制。因此,这一方式尤其适合对大量简单数据对象的高频率重复访问。
在一些实施例中,该第二类型可以是数据对象的数据大小小于第二阈值(例如,50字节)的数据类型,该第二阈值小于或等于前述第一阈值。在一些实施例中,该第二类型的数据对象的访问频率高于频率阈值(例如,1000次/秒)。
再比如,在步骤5086,若数据对象的类型为第三类型,设备100可以利用数据访问包6046根据该数据对象的标识在数据映射空间604中直接获取该数据对象。在一些实施例中,该第三类型的数据对象为需要多级访问的数据,例如,多级亚属性数据。
在一些实施例中,可以将某一些高频访问的数据对象的多级亚属性从原始数据对象中抽离出来,单独存储于映射器6066中。这样,设备100可以根据原始数据对象的ID直接访问到数据对象的多级亚属性数据,而不需要经过原始数据对象本身来一级一级地访问至该多级亚属性数据。本步骤也可以充分利用计算机的缓存机制,进一步提高数据访问效率。因此,在一些实施例中,响应于所述数据对象的类型为第三类型且访问频率高于频率阈值,将所述数据对象加载到设备100的缓存中,以使所述数据对象从缓存中被获取。
以访问两级亚属性为例,传统物理地址直接索引方式、原始ID模式、步骤5082提供的访问模式和步骤5086提供的访问模式的数据访问过程依次列表并比较如下:
2)原始ID模式:
由上可见,步骤5086模式所需的数据访问步骤最少,访问效率最高。相比于指针模式,它还能够利用计算机缓存机制进一步提高访问效率。当亚属性对象数量越多、访问频率越高、访问层级越深时,其性能优势越加明显。
因此,在一些实施例中,所述第三类型为所述数据对象为访问频率高于频率阈值且数据类型为属性数据的数据。
从上述实施例可以看出,本申请提出的方法500,有三种基本工作模式,均只在映射器中存储内存占用小的指针或简单数据对象(或属性对象),因此占用总内存较小,能够用一块连续内存空间完成存储,避免了内存分页造成的性能问题。
本申请提出的方法500,至少具有以下优点:
1)从编码角度而言,数据访问包具有和传统指针模式一样简洁的编码形式:
若需要快速访问数据各级亚属性,则其形式相较指针模式更为简洁:
2)安全稳定。用户端读取、存储与操作的对象是数据访问包而非指针,因此有效避免了操作无效指针的问题。
3)克服了数据易失性。
4)数据访问效率高。数据访问包允许在软件编码阶段编写自定义高效数据访问命令,根据不同类型数据的特点编写高效的数据访问过程。可以将数据访问包看成是物理内存608中的数据对象在应用层602的镜面映射,通过它可以直接快速访问数据对象及其各级亚属性。它既结合了指针和ID两者的优点,又有效避免了其各自的缺点,并且为进一步提升数据访问效率提供了可能。
在一些实施例中,设备100可以运行相应的数据访问包以执行以下步骤:
例如,设备100可以根据所述数据对象的标识在数据映射空间中按照预设计算规则将所述数据对象的标识转换为所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象。这样,对于没有被归类到第一类型、第二类型和第三类型中的数据对象,可以采用原始的基于ID的方式访问数据。
在另一些实施例中,设备100可以运行相应的数据访问包以执行以下步骤:
设备100可以根据所述数据对象在数据映射空间中获取所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象。这样,对于没有被归类到第一类型、第二类型和第三类型中的数据对象,还可以采用传统的物理地址直接索引方式访问数据。
在一些实施例中,可以在数据访问包中添加用于统计数据访问频次的自定义命令,使得设备100可以调用数据访问包来统计各类型数据对象在预设期间内的访问频次;然后基于所述访问频次确定所述数据访问包中所需增加的数据类型和/或访问数据对象的方式,同时还可根据访问频次获得调试(debug)信息,以供调试所用。这样,可以帮助分析不同类型数据的访问特点,为做出进一步的系统优化提供参考。
下面,我们针对“内存数据访问过程”,按照传统指针模式、OpenDB模式以及方法500提供的模式进行比较,如图5A~图5C所示。以“place计算模块在计算do_place任务过程中,需要读取元器件instA的某一个引脚Pin-A1的location信息”为例进行说明。
如图5A所示,在传统指针模式下,place计算模块的内存块中记录着各数据对象(如instA)所属内存块(如第20行至第35行对应的内存块)的内存地址;而各数据对象内存块(如第20行至第35行对应的内存块)中也是以同样的方式记录了其亚属性(如Pin-A1)所属内存块(如第38行至第53行对应的内存块)的地址。在指针使用者看来,数据读取流程为:“在place计算模块的内存块内读取instA的内存地址→定位到instA所属的内存块→读取pin-A1的内存地址→定位到pin-A1所属的内存块→读取到pin-A1的location为(1,1)” 。这一模式的核心特点是:内存中的数据对象以“内存地址”的方式被引用或指代(基于内存地址的数据引用)。当各种颜色内存块在内存中的地址由于某种原因发生改变时,相应的数据引用地址不会同步更新。因此,这种数据引用方式有以下缺陷:1)容易引起内存越界,造成整个软件的瘫痪;2)数据易失性。
为了克服上述问题,OpenDB将“记录数据对象所属内存块地址”的方式改变为“记录数据对象ID”的方式。这样,即使各种内存块改变了其在内存中的地址,其ID仍旧不变。因此,所记录的数据引用(基于ID的数据引用)不会失效。然而,我们无法使用ID直接寻找到相应数据对象所属的内存块。因此需要将ID转化为相应内存块的地址。这一过程是通过一定计算完成的(如图5B中间栏所示),其基本计算原理为:物理地址address =基地址base +偏移地址offset。这里,base和offset都是通过ID计算出来的。计算得到数据对象所属内存块的地址后,即可按照传统指针模式进行数据的访问。在ID使用者看来,数据读取基本流程为:“在place计算模块的内存块内读取instA的ID→通过计算将ID转化为instA的内地址→定位到instA所属的内存块→读取pin-A1的内存地址→定位到pin-A1所属的内存块→读取到pin-A1的location为(1,1)”。这一模式的核心要点是:1)使用基于ID的数据引用方式代替基于内存地址的数据引用方式,克服了数据易失性问题。2)没有隐藏数据指针,无法有效克服内存越界以及软件瘫痪问题。3)ID到地址的转换需要额外的计算过程,降低了数据访问速度。4)ID到地址的额外转换将数据访问流程复杂化。
为了克服上述2)、3)点问题,方法500采用“基于数据代理与ID映射器”的模式。在
这一模式下,内存数据对象的引用方式既不是基于“内存地址”,也不是基于“数据ID”,而是
基于“数据访问包”(如inst_agent_0)。使用这种架构,使得数据访问包可以在其内部采用
隐藏式的方式,完成从ID→内存地址的转换操作,并代理了数据对象及其亚属性的访问过
程。在ID使用者看来,其数据读取基本流程为“在place计算模块的内存块内读取instA的ID
代理inst-agent-0(数据访问包)→通过ID代理读取到pin-A1的location为(1,1)”。这有几
个好处:1)数据指针被成功隐藏,有效克服了内存越界以及软件瘫痪问题。2)数据访问包
(ID包装器)进行数据访问的过程简洁直观(如),与传统指针模式无
异。3)数据访问包(ID包装器)内部接管并代理了对数据的访问,可以有针对性地针对特定
类型的数据访问进行优化,提高访问效率。例如,通过
直接访问到引脚Pin-A1的位置信息,而不需要像传统指针模式那样经过“inst→Pin-A1以
及Pin-A1→location”的多级定位过程。
在数据访问包(ID包装器)内部,可以通过不同的策略与模式实现从ID到数据指针的快速转换。
一种模式为,采用ID映射器记录ID与数据指针之间的对应关系。当ID使用者使用ID包装器(如inst-agent-0)访问数据属性(如pin-A1)时,我们在ID包装器内部通过ID映射器将ID(如0)映射到数据指针(如row 20)并定位到相应的内存块(例如,图5C第20行至第35行对应的内存块),从而读取相应的数据属性(如pin-A1)返回给ID包装器的使用者。上述ID到指针的转换过程耗时一个计算机指令周期,优于OpenDB的计算式转换过程。
另外,如果某一类型的数据(例如,引脚位置pin location)访问频率特别高,那么可以额外为其创建单独的ID映射器(如pin location fast-mapper)。这样,在内部的ID转换过程中,可以通过ID直接映射得到pin location的内存地址,其数据读取基本流程为:“通过fast-mapper直接将ID映射为instA的引脚pin-A1的location属性的内存地址→定位到黄色内存块中的row 40并直接读取pin-A1的location信息”。这一过程不需要经过“inst→Pin-A1以及Pin-A1→location”的多级定位过程,进一步提高数据访问速度。
通过上面所述可以看出,本申请提供的应用于EDA软件的基于ID进行数据索引与访问的数据库模型构建方法,利用ID包装器(ID Wrapper)的概念来解决数据访问中的问题。本申请所采用的ID包装器和ID映射器相结合的方式,能够根据不同类型数据的特点,为其定制不同模式的高效数据访问方法。相比于传统指针模式和原始ID模式,本申请不但保持了基于ID进行数据访问的优点(安全、稳定、数据持久性),而且具有更加简洁的数据访问形式和更加高效的数据访问效率。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的方法500。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的方法500,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法500相对应的,本申请还提供了一种计算机程序产品,其包括计算机程序。在一些实施例中,所述计算机程序由一个或多个处理器可执行以使得所述处理器执行所述的方法500。对应于方法800各实施例中各步骤对应的执行主体,执行相应步骤的处理器可以是属于相应执行主体的。
上述实施例的计算机程序产品用于使处理器执行如上任一实施例所述的方法500,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种应用于EDA软件的基于ID进行数据索引与访问的数据库模型构建方法,包括:
在所述数据库的创建阶段,为每个数据对象分配ID,并为不同类型的数据对象分别创建相应的数据访问包;其中,所述数据访问包作为数据对象的索引,能够被拷贝并直接存储于所述数据库的使用者的内存中;所述数据访问包的内部存储对应的ID,该ID用于标志所索引的数据对象,并且,所述数据访问包中通过软件编码了根据所述ID访问相应数据对象的方式,所述数据访问包的软件编码规则为:若所述数据对象的类型为第一类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象;或者,若所述数据对象的类型为第二类型或第三类型,根据所述数据对象的标识在数据映射空间中获取所述数据对象;
在所述数据库的使用阶段,所述EDA软件在运行过程中,所述EDA软件的各计算模块产生数据访问需求;
根据所述数据访问需求,直接使用对应的数据访问包访问相应的数据对象,所述数据访问包中包括数据对象的ID和访问所述数据对象的方式;以及
运行所述数据访问包中的基于所述编码规则编写的数据访问指令以访问所需的数据对象。
2.根据权利要求1所述的方法,其中,所述第一类型为所述数据对象的数据大小大于第一阈值的数据;所述第二类型为所述数据对象的数据大小小于第二阈值的数据,所述第一阈值大于或等于所述第二阈值;所述第三类型为所述数据对象为访问频率高于频率阈值且数据类型为需要多级访问的数据。
3.根据权利要求2所述的方法,其中,所述第一类型的数据对象的访问频率高于所述频率阈值;所述第二类型的数据对象的访问频率高于所述频率阈值。
4.根据权利要求2所述的方法,其中,所述第三类型的数据对象为属性数据。
5.根据权利要求1所述的方法,其中,所述数据访问包中的数据访问指令为自定义命令,以使目标数据对象被所述自定义命令描述的访问数据对象的方式来访问。
6.根据权利要求1所述的方法,还包括:
响应于所述数据对象的类型为访问频率高于所述频率阈值的所述第二类型或所述第三类型的数据,将所述数据对象加载到缓存中,以使所述数据对象从缓存中被获取。
7.根据权利要求1所述的方法,所述数据访问包的软件编码规则还包括:
若所述数据对象的类型为第四类型,根据所述数据对象的标识在数据映射空间中按照预设计算规则将所述数据对象的标识转换为所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象。
8.根据权利要求1所述的方法,所述数据访问包的软件编码规则还包括:
若所述数据对象的类型为第五类型,根据所述数据对象在数据映射空间中获取所述数据对象对应的访问地址,基于所述访问地址获取所述数据对象。
9.根据权利要求1所述的方法,还包括:
统计各类型数据对象在预设期间内的访问频次;以及
基于所述访问频次确定所述数据访问包中所需增加的数据类型和/或访问数据对象的方式。
10.一种计算机设备,其特征在于,包括一个或者多个处理器、存储器;和一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被所述一个或多个处理器执行,所述程序包括用于执行根据权利要求1-9任意一项所述的方法的指令。
11.一种包含计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,使得所述处理器执行权利要求1-9中任一项所述的方法。
12.一种计算机程序产品,包括计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行如权利要求1-9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111096626.3A CN113569508B (zh) | 2021-09-18 | 2021-09-18 | 基于id进行数据索引与访问的数据库模型构建方法及设备 |
US17/588,235 US11500828B1 (en) | 2021-09-18 | 2022-01-29 | Method and device for constructing database model with ID-based data indexing-enabled data accessing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111096626.3A CN113569508B (zh) | 2021-09-18 | 2021-09-18 | 基于id进行数据索引与访问的数据库模型构建方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113569508A true CN113569508A (zh) | 2021-10-29 |
CN113569508B CN113569508B (zh) | 2021-12-10 |
Family
ID=78173780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111096626.3A Active CN113569508B (zh) | 2021-09-18 | 2021-09-18 | 基于id进行数据索引与访问的数据库模型构建方法及设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11500828B1 (zh) |
CN (1) | CN113569508B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114004190A (zh) * | 2022-01-05 | 2022-02-01 | 芯行纪科技有限公司 | 基于物理版图的多层级信息获取及可扩展操作的方法 |
CN116151179A (zh) * | 2022-10-31 | 2023-05-23 | 芯行纪科技有限公司 | 芯片设计的布局规划方法及相关设备 |
CN117112618A (zh) * | 2023-10-25 | 2023-11-24 | 上海合见工业软件集团有限公司 | Eda软件数据查询方法、电子设备和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812850A (en) * | 1995-11-13 | 1998-09-22 | Object Technology Licensing Corp. | Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution |
US20040122827A1 (en) * | 2002-12-20 | 2004-06-24 | Hendrik Cazemier | Structure and method for sharing large databases |
CN102169459A (zh) * | 2010-11-29 | 2011-08-31 | 北京握奇数据系统有限公司 | 一种访问数据的方法、装置和智能卡 |
WO2012117438A1 (ja) * | 2011-02-28 | 2012-09-07 | 株式会社日立製作所 | データベース管理装置、データベース管理方法及びデータベースシステム |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN104781810A (zh) * | 2012-09-28 | 2015-07-15 | 甲骨文国际公司 | 将行和对象数据库活动跟踪到块级热图中 |
CN106104514A (zh) * | 2014-03-20 | 2016-11-09 | 国际商业机器公司 | 对利用文件存储系统实施的对象存储库中的对象的加速访问 |
CN111367983A (zh) * | 2020-03-10 | 2020-07-03 | 中国联合网络通信集团有限公司 | 数据库访问方法、系统、设备和存储介质 |
CN112148736A (zh) * | 2020-09-23 | 2020-12-29 | 北京字节跳动网络技术有限公司 | 缓存数据的方法、设备及存储介质 |
CN112241325A (zh) * | 2020-12-15 | 2021-01-19 | 南京集成电路设计服务产业创新中心有限公司 | 一种基于内存池的超大规模集成电路数据库和设计方法 |
CN113342908A (zh) * | 2021-06-30 | 2021-09-03 | 北京天融信网络安全技术有限公司 | 一种面向对象的内核层数据库 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598037B1 (en) * | 1999-07-26 | 2003-07-22 | Microsoft Corporation | Data table object interface for datastore |
US20210089552A1 (en) * | 2019-09-20 | 2021-03-25 | Sap Se | Virtual database tables with updatable logical table pointers |
-
2021
- 2021-09-18 CN CN202111096626.3A patent/CN113569508B/zh active Active
-
2022
- 2022-01-29 US US17/588,235 patent/US11500828B1/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812850A (en) * | 1995-11-13 | 1998-09-22 | Object Technology Licensing Corp. | Object-oriented symbolic debugger using a compiler driven database and state modeling to control program execution |
US20040122827A1 (en) * | 2002-12-20 | 2004-06-24 | Hendrik Cazemier | Structure and method for sharing large databases |
CN102169459A (zh) * | 2010-11-29 | 2011-08-31 | 北京握奇数据系统有限公司 | 一种访问数据的方法、装置和智能卡 |
WO2012117438A1 (ja) * | 2011-02-28 | 2012-09-07 | 株式会社日立製作所 | データベース管理装置、データベース管理方法及びデータベースシステム |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN104781810A (zh) * | 2012-09-28 | 2015-07-15 | 甲骨文国际公司 | 将行和对象数据库活动跟踪到块级热图中 |
CN106104514A (zh) * | 2014-03-20 | 2016-11-09 | 国际商业机器公司 | 对利用文件存储系统实施的对象存储库中的对象的加速访问 |
CN111367983A (zh) * | 2020-03-10 | 2020-07-03 | 中国联合网络通信集团有限公司 | 数据库访问方法、系统、设备和存储介质 |
CN112148736A (zh) * | 2020-09-23 | 2020-12-29 | 北京字节跳动网络技术有限公司 | 缓存数据的方法、设备及存储介质 |
CN112241325A (zh) * | 2020-12-15 | 2021-01-19 | 南京集成电路设计服务产业创新中心有限公司 | 一种基于内存池的超大规模集成电路数据库和设计方法 |
CN113342908A (zh) * | 2021-06-30 | 2021-09-03 | 北京天融信网络安全技术有限公司 | 一种面向对象的内核层数据库 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114004190A (zh) * | 2022-01-05 | 2022-02-01 | 芯行纪科技有限公司 | 基于物理版图的多层级信息获取及可扩展操作的方法 |
CN116151179A (zh) * | 2022-10-31 | 2023-05-23 | 芯行纪科技有限公司 | 芯片设计的布局规划方法及相关设备 |
CN116151179B (zh) * | 2022-10-31 | 2023-11-03 | 芯行纪科技有限公司 | 芯片设计的布局规划方法及相关设备 |
CN117112618A (zh) * | 2023-10-25 | 2023-11-24 | 上海合见工业软件集团有限公司 | Eda软件数据查询方法、电子设备和介质 |
CN117112618B (zh) * | 2023-10-25 | 2024-01-26 | 上海合见工业软件集团有限公司 | Eda软件数据查询方法、电子设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
US11500828B1 (en) | 2022-11-15 |
CN113569508B (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113569508B (zh) | 基于id进行数据索引与访问的数据库模型构建方法及设备 | |
CN102870089B (zh) | 将数据存储到虚拟高速存储系统中的系统和方法 | |
US20150019834A1 (en) | Memory hierarchy using page-based compression | |
US9454481B2 (en) | Affinity group access to global data | |
US20090254594A1 (en) | Techniques to enhance database performance | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
CN103810237A (zh) | 数据管理方法和系统 | |
US9477605B2 (en) | Memory hierarchy using row-based compression | |
WO2020221170A1 (zh) | 分形计算装置、方法、集成电路及板卡 | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
WO2024055571A1 (zh) | 一种namespace设置方法、装置及可读存储介质 | |
US8990500B2 (en) | Storing the most significant and the least significant bytes of characters at non-contiguous addresses | |
US8396858B2 (en) | Adding entries to an index based on use of the index | |
US20080244221A1 (en) | Exposing system topology to the execution environment | |
US20120042304A1 (en) | Program conversion apparatus and computer readable medium | |
CN114443680A (zh) | 数据库管理系统、相关装置、方法和介质 | |
CN114138792A (zh) | 一种Key-value分离存储方法及系统 | |
US11789622B2 (en) | Method, device and computer program product for storage management | |
CN115033500A (zh) | 缓存系统模拟方法、装置、设备和存储介质 | |
Li et al. | An application-oblivious memory scheduling system for DNN accelerators | |
CN106844242B (zh) | 一种数据交换方法和系统 | |
Escuin et al. | Hycsim: A rapid design space exploration tool for emerging hybrid last-level caches | |
US9251101B2 (en) | Bitmap locking using a nodal lock | |
CN108984300B (zh) | 一种版图数据的审阅方法、系统及存储介质 | |
US9304921B2 (en) | Affinity group access to global data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |