CN101706756A - 一种元数据的缓存方法及装置 - Google Patents
一种元数据的缓存方法及装置 Download PDFInfo
- Publication number
- CN101706756A CN101706756A CN200910250741A CN200910250741A CN101706756A CN 101706756 A CN101706756 A CN 101706756A CN 200910250741 A CN200910250741 A CN 200910250741A CN 200910250741 A CN200910250741 A CN 200910250741A CN 101706756 A CN101706756 A CN 101706756A
- Authority
- CN
- China
- Prior art keywords
- memory instance
- dirty
- metadata
- memory
- instance
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种元数据的缓存方法及装置,其中所述方法包括:判断缓存池中被调用的内存实例是否为脏的内存实例;当判断被调用的内存实例为脏的内存实例时,将该内存实例从缓存池中删除,对该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。本发明提供的元数据的缓存方法及装置,当调用者调用缓存池中的内存实例时,首先会判断内存实例是否脏,如果该内存实例是脏的内存实例,则将该内存实例对应的元数据进行重新装载,确保被调用的内存实例均是非脏的。这样脏的内存实例就不会被调用者使用,因此避免了内存实例被误改后而影响其他调用者。
Description
技术领域
本发明涉及数据结构技术领域,特别涉及一种元数据的缓存方法及装置。
背景技术
元数据是用来描述业务数据结构的一种模型。在软件开发中,模型比代码更容易被理解。因此,业务开发人员通过定义元数据来开发应用系统。
元数据装载器是用于访问元数据的程序模块,负责把元数据从物理存储格式载入到内存,转换为一定格式的内存实例,并维护这些内存实例的生命周期。
目前,常见的元数据装载器装载数据时是通过不使用缓存机制或使用缓存机制来实现的。
首先介绍不使用缓存机制的元数据装载器装载元数据的过程。
元数据装载器每次访问一个元数据时,均需要读取元数据的物理存储格式,载入内存,并进行组装,生成元数据的内存实例。这样,当调用者在多处访问同一个元数据时,由于各自获得的是不同的内存实例。因此,当有一个内存实例被误改后,不会影响其他调用者。
但是,这种不使用缓存机制的元数据装载器由于每次访问元数据时,均需要对元数据进行重新装载,当元数据被频繁使用时,就需要频繁地重复性劳动。
下面介绍使用缓存的元数据装载器装载元数据的过程。
在内存中设置缓存池,元数据装载器第一次装载元数据之后,均将装载后的内存实例放入缓存池中。以后,调用者使用元数据时,均可以从缓存池中获取,因此,不需要元数据装载器重新装载元数据。当同一个元数据被频繁使用时,可以避免重复地劳动。
但是,由于调用者每次访问元数据时,均是从缓冲池中获取,如果有调用者误改了某个内存实例,而没有保存,这样修改的中间结果将影响其他的调用者。
发明内容
本发明要解决的技术问题是提供一种元数据的缓存方法及装置,可以避免内存实例被误改后而影响其他调用者。
本发明实施例提供一种元数据的缓存方法,包括以下步骤:
判断缓存池中被调用的内存实例是否为脏的内存实例;
当判断被调用的内存实例为脏的内存实例时,将该内存实例从缓存池中删除,对该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
优选地,所述判断被调用的内存实例为脏的内存实例,具体为:
所述被调用的内存实例带有脏标志;
或,
所述被调用的内存实例的时间戳与该内存实例对应的元数据文件的时间戳不一致.
优选地,所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
优选地,所述脏标志是该内存实例被调用者修改前进行设置的。
优选地,还包括,将所述缓存池中非脏的被访问的内存实例返回给调用者;所述非脏的被访问的内存实例是指该内存实例没有脏标志且时间戳与对应的元数据文件的时间戳一致。
本发明实施例还提供一种元数据的缓存装置,包括:判断单元、删除单元和装载单元;
所述判断单元,用于判断缓存池中被调用的内存实例是否为脏的内存实例;
所述删除单元,当所述判断单元的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该脏的内存实例从缓存池中删除;
所述装载单元,当所述判断单元的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
优选地,所述判断单元判断被调用的内存实例为脏的内存实例,具体为:
所述被调用的内存实例带有脏标志;
或,
所述被调用的内存实例的时间戳与该内存对应的元数据文件的时间戳不一致。
优选地,所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
优选地,所述脏标志是该内存实例被调用者修改前进行设置的。
优选地,还包括返回单元,将所述缓存池中非脏的被访问的内存实例返回给调用者;所述非脏的被访问的内存实例是指该内存实例没有脏标志且时间戳与对应的元数据文件的时间戳一致。
与现有技术相比,本发明具有以下优点:
本发明提供的元数据的缓存方法及装置,当调用者调用缓存池中的内存实例时,首先会判断内存实例是否脏,如果该内存实例是脏的内存实例,则将该内存实例对应的元数据进行重新装载,确保被调用的内存实例均是非脏的。这样脏的内存实例就不会被调用者使用,因此避免了内存实例被误改后而影响其他调用者。
附图说明
图1是本发明方法实施例一流程图;
图2是本发明方法实施例二流程图;
图3是本发明装置实施例一结构图;
图4是本发明装置实施例一结构图。
具体实施方式
为了使本领域技术人员更好地理解和实施本发明,下面介绍本发明涉及的几个专业术语.
元数据文件:元数据的物理载体。
元数据编辑器:编辑元数据的图形界面。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
方法实施例一:
参见图1,该图为本发明方法实施例一流程图。
S101:判断缓存池中被调用的内存实例是否为脏的内存实例。
可以理解的是,缓存池中可以存放多个内存实例。一个元数据对应一个内存实例。
有些内存实例在被调用者访问时可能遭到误改,而调用者没有保存修改的中间结果。这样将造成缓存池中的内存实例变为脏的内存实例。
例如,元数据编辑器调用缓存池中的内存实例,对内存实例进行了修改,而没有保存中间结果。
还有一种造成内存实例变为脏的内存实例的原因是:缓存池中的内存实例的时间戳与对应的元数据文件的时间戳不一致。
因为元数据文件可能被修改,这样元数据文件每次被修改后,元数据文件的时间戳将自动更新一次,以记录被修改的时间。
元数据文件被修改时,元数据文件中的元数据将被修改,这样元数据对应的缓存池中的内存实例将变为脏的内存实例。
S102:判断被调用的内存实例为脏的内存实例时,将该内存实例从缓存池中删除,对该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
当调用者从缓存池中调用的内存实例为脏的内存实例时,该内存实例会被从缓存池中删除,同时对该内存实例对应的元数据进行重新装载,这样可以保证调用者调用的内存实例均是非脏的内存实例。从而,避免了调用到被误改后的内存实例,而影响使用。
本发明提供的元数据的缓存方法,当调用者调用缓存池中的内存实例时,首先会判断内存实例是否脏,如果该内存实例是脏的内存实例,则将该内存实例对应的元数据进行重新装载,确保被调用的内存实例均是非脏的。这样脏的内存实例就不会被调用者使用,因此避免了内存实例被误改后而影响其他调用者。
方法实施例二:
参见图2,该图为本发明方法实施例二流程图。
S201:调用者调用缓存池中的内存实例。
S202:判断缓存池中该被调用的内存实例是否有脏标志或其时间戳与对应的元数据文件的时间戳是否不一致;如果有脏标志或时间戳不一致,则执行S203;如果没有脏标志且时间戳一致,则执行S204。
所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
所述脏标志是该内存实例被调用者修改前进行设置的。
S203:将该内存实例从缓存池中删除,对该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中.
S204:将缓存池中非脏的内存实例返回给所述调用者。
所述非脏的内存实例是指该内存实例没有脏标志且时间戳与对应的元数据文件的时间戳一致。
本实施例提供的元数据的缓存方法,通过给缓存池中的内存实例设置时间戳和脏标志来标志该内存实例是否为脏的内存实例。当调用者从缓存池中调用内存实例时,首先判断该内存实例是否有脏标志和该内存实例的时间戳是否与对应的元数据文件的时间戳一致。当内存实例既没有脏标志且内存实例的时间戳与对应的元数据对象的时间戳一致时,说明该内存实例非脏,调用者可以直接使用该非脏的内存实例。如果该内存实例有脏标志或其时间戳与对应的元数据文件的时间戳不一致,则将该内存实例从缓存池中删除,将对应的元数据重新装载,将重新装载生成的内存实例放入缓冲池中。这样可以保证调用者调用的内存实例均是非脏的内存实例,而避免使用脏的内存实例。
基于上述一种元数据的缓存方法,本发明还提供了一种元数据的缓存装置,下面结合具体实施例来详细说明其组成部分。
装置实施例一:
参见图3,该图为本发明装置实施例一结构图。
本实施例提供的元数据的缓存装置包括:判断单元301、删除单元302和装载单元303。
所述判断单元301,用于判断缓存池中被调用的内存实例是否为脏的内存实例。
可以理解的是,缓存池中可以存放多个内存实例。一个元数据对应一个内存实例。
有些内存实例在被调用者访问时可能遭到误改,而调用者没有保存修改的中间结果。这样将造成缓存池中的内存实例变为脏的内存实例。
例如,元数据编辑器调用缓存池中的内存实例,对内存实例进行了修改,而没有保存中间结果。
还有一种造成内存实例变为脏的内存实例的原因是:缓存池中的内存实例的时间戳与对应的元数据文件的时间戳不一致。
因为元数据文件可能被修改,这样元数据文件每次被修改后,元数据文件的时间戳将自动更新一次,以记录被修改的时间。
元数据文件被修改时,元数据文件中的元数据将被修改,这样元数据对应的缓存池中的内存实例将变为脏的内存实例。
所述删除单元302,当所述判断单元301的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该脏的内存实例从缓存池中删除。
所述装载单元303,当所述判断单元301的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
当调用者从缓存池中调用的内存实例为脏的内存实例时,该内存实例会被从缓存池中删除,同时对该内存实例对应的元数据进行重新装载,这样可以保证调用者调用的内存实例均是非脏的内存实例。从而,避免了调用到被误改后的内存实例,而影响使用。
本发明提供的元数据的缓存装置,当调用者调用缓存池中的内存实例时,首先判断单元301会判断内存实例是否脏,如果该内存实例是脏的内存实例,删除单元302会将该内存实例从缓存池中删除.装载单元303将该内存实例对应的元数据进行重新装载,确保被调用的内存实例均是非脏的.这样脏的内存实例就不会被调用者使用,因此避免了内存实例被误改后而影响其他调用者.
装置实施例二:
参见图4,该图为本发明装置实施例二结构图。
本实施例与装置实施例一的区别是增加了返回单元401。
当判断单元301判断被调用的内存实例为非脏的内存实例时,返回单元401直接将该内存实例返回给调用者。
当装置单元303重新装载元数据后,生成的内存实例为非脏内存实例,返回单元401将该重新装载的内存实例返回给调用者。
判断被调用的内存实例为非脏的内存实例具体为:该内存实例既没有脏标志且其时间戳与对应的元数据文件的时间戳相一致。
所述判断被调用的内存实例为脏的内存实例,具体为:
所述被调用的内存实例带有脏标志;或,所述被调用的内存实例的时间戳与该内存实例对应的元数据文件的时间戳不一致。
所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
所述脏标志是该内存实例被调用者修改前进行设置的。调用者要修改该内存实例,首先对该内存实例设置脏标志,然后再修改该内存实例。
本实施例提供的元数据的缓存装置,通过给缓存池中的内存实例设置时间戳和脏标志来标志该内存实例是否为脏的内存实例。当调用者从缓存池中调用内存实例时,首先判断单元判断该内存实例是否有脏标志和该内存实例的时间戳是否与对应的元数据文件的时间戳一致。当内存实例既没有脏标志且内存实例的时间戳与对应的元数据对象的时间戳一致时,说明该内存实例非脏,调用者可以直接使用该非脏的内存实例。如果该内存实例有脏标志或其时间戳与对应的元数据文件的时间戳不一致,则将该内存实例从缓存池中删除,将对应的元数据重新装载,将重新装载生成的内存实例放入缓冲池中。这样可以保证调用者调用的内存实例均是非脏的内存实例,而避免使用脏的内存实例。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (10)
1.一种元数据的缓存方法,其特征在于,包括以下步骤:
判断缓存池中被调用的内存实例是否为脏的内存实例;
当判断被调用的内存实例为脏的内存实例时,将该内存实例从缓存池中删除,对该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
2.根据权利要求1所述的元数据的缓存方法,其特征在于,所述判断被调用的内存实例为脏的内存实例,具体为:
所述被调用的内存实例带有脏标志;
或,
所述被调用的内存实例的时间戳与该内存实例对应的元数据文件的时间戳不一致。
3.根据权利要求2所述的元数据的缓存方法,其特征在于,所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
4.根据权利要求2所述的元数据的缓存方法,其特征在于,所述脏标志是该内存实例被调用者修改前进行设置的。
5.根据权利要求2至4任一项所述的元数据的缓存方法,其特征在于,还包括,将所述缓存池中非脏的被访问的内存实例返回给调用者;所述非脏的被访问的内存实例是指该内存实例没有脏标志且时间戳与对应的元数据文件的时间戳一致。
6.一种元数据的缓存装置,其特征在于,包括:判断单元、删除单元和装载单元;
所述判断单元,用于判断缓存池中被调用的内存实例是否为脏的内存实例;
所述删除单元,当所述判断单元的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该脏的内存实例从缓存池中删除;
所述装载单元,当所述判断单元的判断结果为所述被调用的内存实例为脏的内存实例时,用于将该内存实例对应的元数据进行重新装载,将元数据重新装载后生成的内存实例放入缓存池中。
7.根据权利要求6所述的元数据的缓存装置,其特征在于,所述判断单
元判断被调用的内存实例为脏的内存实例,具体为:
所述被调用的内存实例带有脏标志;
或,
所述被调用的内存实例的时间戳与该内存对应的元数据文件的时间戳不一致。
8.根据权利要求7所述的元数据的缓存装置,其特征在于,所述缓存池中的内存实例的时间戳是该内存实例被放入缓存池时内存实例对应的元数据文件的时间。
9.根据权利要求7所述的元数据的缓存装置,其特征在于,所述脏标志是该内存实例被调用者修改前进行设置的。
10.根据权利要求7至9任一项所述的元数据的缓存装置,其特征在于,还包括返回单元,将所述缓存池中非脏的被访问的内存实例返回给调用者;所述非脏的被访问的内存实例是指该内存实例没有脏标志且时间戳与对应的元数据文件的时间戳一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910250741A CN101706756A (zh) | 2009-12-10 | 2009-12-10 | 一种元数据的缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910250741A CN101706756A (zh) | 2009-12-10 | 2009-12-10 | 一种元数据的缓存方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101706756A true CN101706756A (zh) | 2010-05-12 |
Family
ID=42376982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910250741A Pending CN101706756A (zh) | 2009-12-10 | 2009-12-10 | 一种元数据的缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706756A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094711A (zh) * | 2015-09-22 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制文件系统的方法及装置 |
CN109471843A (zh) * | 2018-12-24 | 2019-03-15 | 郑州云海信息技术有限公司 | 一种元数据缓存方法、系统及相关装置 |
WO2020003050A1 (en) * | 2018-06-25 | 2020-01-02 | International Business Machines Corporation | Method and apparatus to represent activation frame for pause-less garbage collection |
-
2009
- 2009-12-10 CN CN200910250741A patent/CN101706756A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094711A (zh) * | 2015-09-22 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制文件系统的方法及装置 |
CN105094711B (zh) * | 2015-09-22 | 2018-05-18 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制文件系统的方法及装置 |
WO2020003050A1 (en) * | 2018-06-25 | 2020-01-02 | International Business Machines Corporation | Method and apparatus to represent activation frame for pause-less garbage collection |
US10831400B2 (en) | 2018-06-25 | 2020-11-10 | International Business Machines Corporation | Method and apparatus to represent activation frame for pause-less garbage collection |
GB2586769A (en) * | 2018-06-25 | 2021-03-03 | Ibm | Method and apparatus to represent activation frame for pause-less garbage collection |
GB2586769B (en) * | 2018-06-25 | 2021-08-04 | Ibm | Method and apparatus to represent activation frame for pause-less garbage collection |
CN109471843A (zh) * | 2018-12-24 | 2019-03-15 | 郑州云海信息技术有限公司 | 一种元数据缓存方法、系统及相关装置 |
CN109471843B (zh) * | 2018-12-24 | 2021-08-10 | 郑州云海信息技术有限公司 | 一种元数据缓存方法、系统及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103530118A (zh) | 将自定义dll注入目标进程的方法及装置 | |
CN102073525B (zh) | 基于Java平台的Web业务系统的动态升级方法及装置 | |
CN102520967A (zh) | 一种创建与使用移动平台插件的方法、系统和移动终端 | |
CN102207873B (zh) | 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构 | |
CN101645020A (zh) | 虚拟操作系统创建方法 | |
CN104169914A (zh) | 数据存储方法、数据处理方法、装置及移动终端 | |
CN105389186A (zh) | 一种Java应用的热部署方法及系统 | |
CN103106218B (zh) | 插件式联机交易处理系统以及插件式联机交易处理方法 | |
CN104731622B (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN102722432A (zh) | 追踪内存访问的方法和装置 | |
CN102541567A (zh) | 一种2d手机游戏引擎及兼容手机操作系统的方法 | |
CN102467525A (zh) | 单据关联方法及系统 | |
CN103902562A (zh) | 一种终端数据库升级方法及相关装置 | |
CN109558335A (zh) | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 | |
CN101706756A (zh) | 一种元数据的缓存方法及装置 | |
CN106406828A (zh) | 一种修改java系统业务工具功能的方法及装置 | |
CN106250242A (zh) | 基于操作系统的内存复用方法及装置 | |
CN101556591A (zh) | 一种高效地向数据库写入复杂内容的方法 | |
CN107450907A (zh) | 指纹模组的兼容方法、移动终端及具有存储功能的装置 | |
CN102081920B (zh) | 一种控制图片显示的方法及装置 | |
CN106708556A (zh) | 数据显示方法及装置 | |
Zhang et al. | Research and implementation of cross-platform development of mobile widget | |
CN101827163A (zh) | 手机资源数据动态加载系统及方法 | |
CN102521277A (zh) | 一种数据库平台的访问方法 | |
CN100428151C (zh) | 大规模并发联机交易中基于版本的c/c++组件热插拔方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20100512 |