CN107122435B - 非关系型数据库的控制方法及装置 - Google Patents
非关系型数据库的控制方法及装置 Download PDFInfo
- Publication number
- CN107122435B CN107122435B CN201710258351.6A CN201710258351A CN107122435B CN 107122435 B CN107122435 B CN 107122435B CN 201710258351 A CN201710258351 A CN 201710258351A CN 107122435 B CN107122435 B CN 107122435B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- level
- relational database
- delayed loading
- 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.)
- Active
Links
Images
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/24—Querying
- G06F16/245—Query processing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种非关系型数据库的控制方法及装置,其中的方法包括:按照业务类型,将业务数据存储在该业务类型对应的数据表内,并将所述数据表内的预先选定的数据确定为延迟加载数据;在实际使用所述延迟加载数据时,判断所述延迟加载数据是否已从所述非关系型数据库读取过;如果没有读取过,则从所述非关系型数据库中读取所述数据,并将读取的所述数据加入到已读取数据集合中;如果读取过,从保存的已读取数据集合中获取所述延迟加载数据。本发明可减少客户端的资源开销以及网络传输的开销,减少对数据无谓的加载。
Description
技术领域
本发明涉及计算机及互联网技术领域,特别是涉及一种非关系型数据库的控制方法及装置。
背景技术
随着互联网时代的到来,社交网络、微博、位置服务等面向普通互联网用户的交互网站正蓬勃兴起,各种网站向数以亿计的用户提供基于互联网和无线网络的交互服务。遍布全世界的互联网用户每天都进行多种多样的交互,随时都在制造各种个样的数据,这些数据的数量是单机时代数据量的数倍。
面对数据的持续增长,关系型数据库在很多方面已经无法满足系统需求,例如,关系型数据库在高并发读写、海量数据高效读写、高可用性以及高扩展性等方面有所欠缺。而非关系型数据库,例如NoSQL、Mongodb、Hbase等,可以达到上述方面的要求,但是又欠缺对数据一致性的能力。
目前互联网网站系统面对数据不断增长、并发持续增高的情况,使用非关系型数据库势在必行,但同时又需要数据的强一致性。在各个非关系型数据库中,NoSQL对一致性的支持很有限,Mongodb在同一个collection(关系型数据库的表)中的操作是原子性的,Hbase则是只提供行级服务。因此,在使用非关系型数据库时,需要把需求事务的数据存储在一个表中,作为一个整体单位。当这个单位很大、层级很多时,每次操作不一定需要处理全部数据,可能只需要读写部分层级。那么,此时将整体表结构全部读写,将耗费不必要的系统开销、网络传输等资源。
发明内容
为了减少客户端的资源开销、网络传输的开销以及减少对数据无谓的加载,本发明实施例提供一种非关系型数据库的控制方法及装置。
根据本发明的一个方面,提供一种非关系型数据库的控制方法,包括:按照业务类型,将业务数据存储在该业务类型对应的数据表内,并将所述数据表内的预先选定的数据确定为延迟加载数据;在实际使用所述延迟加载数据时,判断所述延迟加载数据是否已从所述非关系型数据库读取过;如果没有读取过,则从所述非关系型数据库中读取所述数据,并将读取的所述数据加入到已读取数据集合中;如果读取过,从保存的已读取数据集合中获取所述延迟加载数据。
优选的,所述预先选定的数据包括数据长度超过字段阈值的大字段数据;所述方法还包括:在首次读取而非实际使用所述大字段数据时,直接忽略不做读取操作。
优选的,所述预先选定的数据包括多级数据,所述多级数据是指以树形结构存储的数据;所述方法还包括:分层级获取多级数据,每次仅获取一级数据。
优选的,所述多级数据包括父级数据和子级数据;所述分层级获取多级数据,每次仅获取一级数据,包括:首次获取多级数据时,仅从所述非关系型数据库获取父级数据,忽略子级数据,并将所述父级数据加入到所述已读取数据集合中;当需要使用所述子级数据时,判断是否已从所述非关系型数据库读取过所述子级数据,如果读取过,则从所述已读取数据集合中获取所述子级数据;如果没有读取过,则从所述非关系型数据库读取所述子级数据,并将所述子级数据加入到所述已读取数据集合中。
优选的,还包括:对于所述延迟加载数据,设置已读取标志,用于表明是否已从所述非关系型数据库中读取过;通过是否具有所述已读取标志,判断是否已从所述非关系型数据库读取过所述延迟加载数据。
优选的,还包括:在向已读取数据集合存储数据时,仅保存具有所述已读取标志的数据,和/或,根据新增数据请求增加数据,和/或,根据删除数据请求删除数据。
根据本发明的另一个方面,提供一种非关系型数据库的控制装置,包括:延迟加载数据确定单元,用于按照业务类型,将业务类型对应的业务数据存储在数据表内,并将数据表内的预先选定的数据确定为延迟加载数据;延迟加载数据获取单元,用于在实际使用所述延迟加载数据时,判断是否已从所述非关系型数据库读取过,如果没有读取过,则从所述非关系型数据库中读取所述延迟加载数据,并将读取的所述延迟加载数据加入到已读取数据集合中;如果读取过,从保存的已读取数据集合中获取所述延迟加载数据。
优选的,所述预先选定的数据包括数据长度超过字段阈值的大字段数据;所述延迟加载数据获取单元还用于,在首次读取而非实际使用所述大字段数据时,直接忽略不做读取操作。
优选的,所述预先选定的数据包括多级数据,所述多级数据是指以树形结构存储的数据;所述延迟加载数据获取单元还用于:分层级获取多级数据,每次仅获取一级数据。
优选的,所述多级数据包括父级数据和子级数据;所述延迟加载数据获取单元具体用于:首次获取多级数据时,仅从所述非关系型数据库获取父级数据,忽略子级数据,并将父级数据加入到所述已读取数据集合中;当需要使用所述子级数据时,判断是否已从所述非关系型数据库读取过所述子级数据,如果读取过,则从所述已读取数据集合中获取所述子级数据,如果没有读取过,则从所述非关系型数据库读取所述子级数据,并将所述子级数据加入到所述已读取数据集合中。
优选的,还包括:已读取标志设置单元,用于对于所述延迟加载数据,设置已读取标志,用于表明是否已从所述非关系型数据库中读取过;所述延迟加载数据获取单元,通过是否具有所述已读取标志,判断之前是否已从所述非关系型数据库读取过所述延迟加载数据。
优选的,还包括:数据存储单元,用于在向所述已读取数据集合存储数据时,仅保存具有所述已读取标志的数据,和/或,根据新增数据请求增加数据,和/或,根据删除数据请求删除数据。
可见,本发明通过将某个业务的业务数据(关联的数据)保存在数据表中,这样可以保证其事务性;然后对于该数据表中的特定数据(例如多级数据或大字段数据)标记为延迟加载,从而仅在实际使用数据时才进行数据获取的操作。并且,数据获取的具体方式是,首先判断数据之前是否已经读取过,如果读取过,则从保存的已读取数据集合中获取数据;如果没有读取过,才从数据库中获取数据。本发明可减少客户端系统的资源开销以及网络传输的开销,减少对数据无谓的加载。本发明对业务逻辑是透明的,因为实现了对子级数据做动态获取,业务并不需要关心数据是否从数据库中获取了。本发明应用于非关系型数据库,其具有非关系型数据库所具有的特点,例如高可用性、高扩展性,可以解决大数据存储与高并发读写的问题。
附图说明
图1是本发明一个实施例提供的一种非关系型数据库的控制方法流程图;
图2是本发明一个实施例提供的一种多级数据存储结构示意图;
图3是本发明一个实施例提供的一种多级数据存储结构更新示意图;
图4是本发明一个实施例提供的一种非关系型数据库的控制装置流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如前所述的,现有针对非关系型数据库的控制方案中,需要处理全部数据,将耗费不必要的系统开销、网络传输等资源。例如,一个表有父、子、孙三级,当只需要父级数据,此时将整体读取出来,就浪费了读取子孙的资源。层级越多,耗费越多。同理,当只需要处理某些字段,排除大字段时,读取整体也会耗费不必要的资源。
本发明实施例提供一种非关系型数据库的控制方法,概括而言,通过将特定数据(多级数据或大字段数据)标记为延迟加载,并在实际使用该特定数据时,首先判断数据是否已被读取过,如果是,从保存的已读取数据集合中获取数据,如果没有读取过,才从非关系型数据库中获取数据。这种方式可以避免频繁读取数据库,减少系统开销和网络传输资源的消耗。
参见图1,为本发明实施例提供的一种非关系型数据库的控制方法流程图,该方法包括S101-S102。
S101:按照业务类型,将业务类型对应的业务数据存储在数据表内,并将数据表内的预先选定的数据确定为延迟加载数据。
将某个业务的业务数据(关联的数据)保存在一个的数据表中,这样可以保证其事务性;然后对于该表中的特定数据标记为延迟加载。
所谓延迟加载,也称为懒加载,其含义是只有在真正需要数据时,才真正执行数据加载操作,从而避免一些无谓的性能开销。使用延迟加载的原因,是当要访问的数据量过大时,使用缓存不太适合,因为内存容量有限,为了减少并发量,减少系统资源的消耗,使数据在需要的时候才进行加载。比如部门Entity(数据实体)和员工Entity,部门与员工1对多,如果lazy(延迟加载标志)设置为false(否),那么只要加载了一个部门的po(持久对象,persistant object,可以理解一个PO就是数据库中的一条记录),就会根据一对多配置的关系把所有员工的po也加载出来。但是实际上,有时只是需要用到部门的信息,不需要用到员工的信息,这时员工po的加载就等于浪费资源。如果lazy设置为true(是),那么只有当访问部门po的员工信息时才会加载员工的po的信息。
本发明实施例中,对于特定数据进行延迟加载标记,从而对这些特定数据进行延迟加载,即,仅在实际需要使用该数据时才进行加载。
特定数据包括但不限于多级数据或大字段数据等。多级数据是指类似树形结构存储的数据,例如包括父级、子级的数据,或者包括父级、子级、孙级的数据。对于多级数据,如果每次都读取全部级的数据,往往造成资源消耗过度,并且实际情况往往是仅需要读取上层级的数据,例如,仅需要获取父级数据的情况,如果此时将子级以及孙级数据都获取,势必造成数据的无谓读取,造成资源消耗。大字段数据是指数据的字段大于一定字段阈值的数据。对于大字段数据,由于数据量较大,如果每次都从数据库中读取,也会造成资源消耗。
因此,对于多级数据和大字段数据,标记上延迟加载,从而在后续处理时,仅在实际使用数据时,才进行获取数据的操作,而且,获取数据时,首先判断是否之前已经读取过,如果读取过,则从保存的已读取数据集合中获取数据,如果之前没有读取过,才从数据库中获取数据;如果不是实际使用数据,例如仅是首次读取操作等,则无需从数据库中真正获取数据。
S102:在实际使用延迟加载数据时,判断是否已从非关系型数据库读取过,如果没有读取过,则从非关系型数据库中读取数据,并将读取的数据加入到已读取数据集合中;如果读取过,从保存的已读取数据集合中获取数据。
如前分析的,对于多级数据或大字段数据,如果每次收到相关读取操作请求,都从数据库获取数据,会对数据库频繁读取,造成资源消耗和浪费,因此,通过对多级数据或大字段数据标记为延迟加载,仅在实际使用数据时,才进行获取数据的操作。而且,获取数据时,首先判断是否之前已经读取过,如果读取过,则从保存的已读取数据集合中获取数据,如果之前没有读取过,才从数据库中获取数据;如果不是实际使用数据,例如仅是首次读取操作等,则无需从数据库中真正获取数据。
对于大字段数据,为了尽可能避免无谓的从数据库进行获取,优选方式中,在首次读取该大字段数据时,直接忽略不做读取操作。仅在实际使用该大字段数据时,才执行从数据库或已读取数据集合中获取该大字段数据的操作。
对于多级数据,为了尽可能避免无谓的从数据库进行获取,优选方式中,分层级获取多级数据,每次仅获取一级数据。
例如,对于多级数据包括父级数据和子级数据的情况,分层级获取多级数据、每次仅获取一级数据的具体过程是:首次获取多级数据时,仅从非关系型数据库获取父级数据,忽略子级数据,并将父级数据加入到已读取数据集合中;当需要使用子级数据时,判断是否已从非关系型数据库读取过子级数据,如果读取过,则从已读取数据集合中获取子级数据,如果没有读取过,则从非关系型数据库读取子级数据,并将子级数据加入到已读取数据集合中。
再如,对于多级数据包括父级数据、子级数据和孙级数据的情况,分层级获取多级数据、每次仅获取一级数据的具体过程是:首次获取多级数据时,仅从非关系型数据库获取父级数据,忽略子级数据,并将父级数据加入到已读取数据集合中;当需要使用子级数据时,判断是否已从非关系型数据库读取过子级数据,如果读取过,则从已读取数据集合中获取子级数据,如果没有读取过,则从非关系型数据库读取子级数据,并将子级数据加入到已读取数据集合中;当需要使用孙级数据时,判断是否已从非关系型数据库读取过孙级数据,如果读取过,则从已读取数据集合中获取孙级数据,如果没有读取过,则从非关系型数据库读取孙级数据,并将孙级数据加入到已读取数据集合中。
需要说明的是,上述仅是示例性说明,对于超过三级的更多级数据,也同样原理同样适用。
可见,这种方式保证从上至下(根到分支)获取各个层级的数据,且每次仅获取一个层级的数据,如上面的例子,首先获取父级数据,然后获取子级数据,最后获取孙级数据。
其中,已读取数据集合可以理解是预先设置的一个空集合,每次从数据库中获取到标记了延迟加载的数据时,将该数据加入到该已读取数据集合中,并且不断更新该集合;当然,已读取数据集合也可以理解为在第一次从数据库中获取到标记了延迟加载的数据时生成的集合,并且在后续不断更新。
在具体操作中,可以通过为标记了延迟加载的数据设置一个已读取标志,用于表明是否已从非关系型数据库中读取过;通过已读取标志,判断之前是否已从非关系型数据库读取过所述数据。可以理解,具有已读取标志的数据,需要添加到已读取数据集合中,反之,已读取数据集合中的数据都应该具有已读取标志。
在对数据库进行数据存储时,可根据具有所述已读取标志的数据(已读取数据集合中的数据)进行存储,另外,也可根据新增或删除的数据,对数据进行保存。例如,保存一条数据时,只保存读取过的或者新增/删除的数据。如前描述的,对于多级数据,可以以树形结构作为数据结构,此时,如果更新一条树形结构的数据,则根据已读取数据以及新增/删除的数据,对原树形结构进行更新。
如前分析的,对于多级数据,分层级获取,每次只获取一级数据。首次读取父级数据时,子级数据直接排除掉不取,当需要使用子级数据时,判断有没有读取过,如果读取过,则直接返回数据。如果判断为未读取过,此时到数据库中读取再返回。在返回的数据中,孙级数据如果未读取过,则不读取,直接返回子级数据,如果孙级数据已经读取过,则子孙级数据同时返回。以此类推,逐级获取。
图2示出了多级数据存储结构的树形结构示意图。以图2为例,如果需要获取到节点M,那么客户端只需获取节点A、C、G、M,其他节点不会被读取。
保存一条数据时,只保存读取过的或者新增/删除的节点数据。上面图2例子中只读取了节点A、C、G、M,此时如果增加节点O,删除节点B。则只保存A、C、G、M、O这五个节点,删除节点B及其子节点,其余节点保留。那么此时的树就变为图3所示。
综上所述,由于只读取/更新需要处理的节点,如此一来,即可保证数据的一致性,也会最大程度减少系统开销。
本发明实施例适用于各种类型的非关系型数据库。例如,面向文档存储的Nosql数据库,其支持多级内嵌文档的存储,再例如MongoDB、CouchDB,则更加适合本发明实施例的应用。而面向Key-Value存储的数据库,例如HBase、Cassandra,虽然实现多级数据的延迟加载难度加大,但可轻易实现一级数据的延迟加载,在很多应用场景下完全可以满足需求,也有巨大的实现价值。
下面以使用java语言基于MongoDB实现(也可通过其他语言、数据库来实现)为例,对本发明实施例涉及的一些原理和算法做如下说明。
1.使用Annotation(注释)标记某字段的getter方法为延迟加载(懒加载)方法。
2.遍历所有层级的每个getter方法,通过反射机制(动态获取信息以及动态调用对象方法的机制)创建一个懒加载的字段集合a。
3.利用AOP(Aspect Oriented Programming,将函数的辅助性功能与业务逻辑相分离的编程泛型)技术,将所有标记为懒加载的getter方法设置为切点,创建一个切面,用来实际处理懒加载的代码。
4.使用LTW(Load Time Weaver,加载期切面织入)或者CTW(Compile TimeWeaver,编译时织入)技术,将切面编织进getter方法,在执行该方法前执行切面代码。
5.为每个有懒加载字段的类创建一个特殊标记,用于区别null(失效),并使其可以被反复引用。这个特殊标记可以是个代理、也可以是具有特殊记号的类实例,例如id=-1等,或者通过其他方式实现。若字段指向null代表真实为空,存储数据时将其清空。指向特殊标记代表字段未被从数据库读取过,存储数据时,忽略不处理,维持现状。
6.在读取数据时,将a中的字段(可以是子实体或大字段)指向特殊标记,作为判断是否从数据库中读取过的依据,然后将正常数据返回。如果需要加载指向特殊标记的字段,调用getter方法后,去数据库中动态获取(只取这一个字段),然后通过反射机制将字段从指向特殊标记设为指向实际的数据,后续反复调用getter方法不会重复从数据库取。如果懒加载出来的数据中也包含需要懒加载的字段,则将它们指向特殊标记,后面需要加载的时候再通过切面代码读数据库。如此逐级获取。
7.在存储数据时,遍历所有节点,判断字段是否指向特殊标记。如果是,将该字段名放入一个集合b,其子实体可忽略不再判断;如果不是,再判断其子实体,指向特殊标记,放入b。如此按照层级递归。最终在保存时,忽略掉所有b中的字段,将需要保存的数据作为一个整体一次性存入,被忽略的字段在数据库不会被清空,维持现状。
如此,便可实现数据的懒加载,根据需要动态加载数据。对数据的整体保存也是原子操作,保证了数据的一致性。将其封装到DAO层(java语言中的层),变可使其对业务层透明,达到业务逻辑无感知的效果。
本发明实施例中,将某个业务的业务数据(关联的数据)保存在一个数据表中,这样可以保证其事务性;然后对于该数据表中的特定数据(例如多级数据或大字段数据)标记为延迟加载,从而仅在实际使用数据时才进行数据获取的操作,并且,数据获取的具体方式是,首先判断数据之前是否已经读取过,如果读取过,则从保存的已读取数据集合中获取数据,如果没有读取过,才从数据库中获取数据。本发明可减少客户端系统的资源开销以及网络传输的开销,减少对数据无谓的加载。本发明对业务逻辑是透明的,因为实现了对子级数据做动态获取,业务并不需要关心数据是否从数据库中获取了。本发明应用于非关系型数据库,其具有固有的高可用性、高扩展性,可以解决大数据存储与高并发读写的问题。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,是本发明实施例提供的一种非关系型数据库的控制装置结构示意图。该装置包括:
延迟加载数据确定单元401,用于按照业务类型,将业务类型对应的业务数据存储在数据表内,并将数据表内的预先选定的数据确定为延迟加载数据;
延迟加载数据获取单元402,用于在实际使用延迟加载数据时,判断是否已从所述非关系型数据库读取过,如果没有读取过,则从所述非关系型数据库中读取所述数据,并将读取的所述数据加入到已读取数据集合中;如果读取过,从保存的所述已读取数据集合中获取所述数据,。
优选的,所述预先选定的数据包括数据长度超过字段阈值的大字段数据;所述延迟加载数据获取单元402还用于,在首次读取而非实际使用所述大字段数据时,直接忽略不做读取操作。
优选的,所述预先选定的数据包括多级数据,所述多级数据是指采用树形结构存储的数据;所述延迟加载数据获取单元402还用于:分层级获取多级数据,每次仅获取一级数据。
优选的,所述多级数据包括父级数据和子级数据;所述延迟加载数据获取单元402具体用于:首次获取多级数据时,仅从所述非关系型数据库获取父级数据,忽略子级数据,并将父级数据加入到所述已读取数据集合中;当需要使用所述子级数据时,判断是否已从所述非关系型数据库读取过所述子级数据,如果读取过,则从所述已读取数据集合中获取所述子级数据,如果没有读取过,则从所述非关系型数据库读取所述子级数据,并将所述子级数据加入到所述已读取数据集合中。
优选的,还包括:已读取标志设置单元403,用于对于延迟加载数据,设置已读取标志,用于表明是否已从所述非关系型数据库中读取过;所述延迟加载数据获取单元402,通过所述已读取标志,判断之前是否已从所述非关系型数据库读取过所述延迟加载数据。
优选的,还包括:数据存储单元404,用于在向已读取数据集合存储数据时,仅保存具有所述已读取标志的数据,和/或,根据新增数据请求增加数据,和/或,根据删除数据请求删除数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种关系型数据库的调度方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种非关系型数据库的控制方法,其特征在于,包括:
按照业务类型,将业务数据存储在该业务类型对应的数据表内,并将所述数据表内的预先选定的数据确定为延迟加载数据,其中,所述预先选定的数据包括多级数据,所述多级数据是指以树形结构存储的数据,所述多级数据通过分层级获取,每次仅获取一级数据;
在实际使用所述延迟加载数据时,判断所述延迟加载数据是否已从所述非关系型数据库读取过;
如果没有读取过,则从所述非关系型数据库中读取所述数据,并将读取的所述数据加入到已读取数据集合中;
如果读取过,从保存的已读取数据集合中获取所述延迟加载数据。
2.如权利要求1所述的方法,其特征在于,所述预先选定的数据还包括数据长度超过字段阈值的大字段数据;
所述方法还包括:在首次读取而非实际使用所述大字段数据时,直接忽略不做读取操作。
3.如权利要求1所述的方法,其特征在于,所述多级数据包括父级数据和子级数据;
所述分层级获取多级数据,每次仅获取一级数据,包括:
首次获取多级数据时,仅从所述非关系型数据库获取父级数据,忽略子级数据,并将所述父级数据加入到所述已读取数据集合中;
当需要使用所述子级数据时,判断是否已从所述非关系型数据库读取过所述子级数据,如果读取过,则从所述已读取数据集合中获取所述子级数据;如果没有读取过,则从所述非关系型数据库读取所述子级数据,并将所述子级数据加入到所述已读取数据集合中。
4.如权利要求1-3任一项所述的方法,其特征在于,还包括:
对于所述延迟加载数据,设置已读取标志,用于表明是否已从所述非关系型数据库中读取过;
通过是否具有所述已读取标志,判断是否已从所述非关系型数据库读取过所述延迟加载数据。
5.如权利要求4所述的方法,其特征在于,还包括:
在向已读取数据集合存储数据时,仅保存具有所述已读取标志的数据,和/或,根据新增数据请求增加数据,和/或,根据删除数据请求删除数据。
6.一种非关系型数据库的控制装置,其特征在于,包括:
延迟加载数据确定单元,用于按照业务类型,将业务类型对应的业务数据存储在数据表内,并将数据表内的预先选定的数据确定为延迟加载数据,其中,所述预先选定的数据包括多级数据,所述多级数据是指以树形结构存储的数据,所述多级数据通过分层级获取,每次仅获取一级数据;
延迟加载数据获取单元,用于在实际使用所述延迟加载数据时,判断是否已从所述非关系型数据库读取过,如果没有读取过,则从所述非关系型数据库中读取所述延迟加载数据,并将读取的所述延迟加载数据加入到已读取数据集合中;如果读取过,从保存的已读取数据集合中获取所述延迟加载数据。
7.如权利要求6所述的装置,其特征在于,所述预先选定的数据还包括数据长度超过字段阈值的大字段数据;所述延迟加载数据获取单元还用于,在首次读取而非实际使用所述大字段数据时,直接忽略不做读取操作。
8.如权利要求7所述的装置,其特征在于,所述多级数据包括父级数据和子级数据;所述延迟加载数据获取单元具体用于:首次获取多级数据时,仅从所述非关系型数据库获取父级数据,忽略子级数据,并将父级数据加入到所述已读取数据集合中;当需要使用所述子级数据时,判断是否已从所述非关系型数据库读取过所述子级数据,如果读取过,则从所述已读取数据集合中获取所述子级数据,如果没有读取过,则从所述非关系型数据库读取所述子级数据,并将所述子级数据加入到所述已读取数据集合中。
9.如权利要求6-8任一项所述的装置,其特征在于,还包括:
已读取标志设置单元,用于对于所述延迟加载数据,设置已读取标志,用于表明是否已从所述非关系型数据库中读取过;
所述延迟加载数据获取单元,通过是否具有所述已读取标志,判断之前是否已从所述非关系型数据库读取过所述延迟加载数据。
10.如权利要求9所述的装置,其特征在于,还包括:
数据存储单元,用于在向所述已读取数据集合存储数据时,仅保存具有所述已读取标志的数据,和/或,根据新增数据请求增加数据,和/或,根据删除数据请求删除数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710258351.6A CN107122435B (zh) | 2017-04-19 | 2017-04-19 | 非关系型数据库的控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710258351.6A CN107122435B (zh) | 2017-04-19 | 2017-04-19 | 非关系型数据库的控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122435A CN107122435A (zh) | 2017-09-01 |
CN107122435B true CN107122435B (zh) | 2021-02-12 |
Family
ID=59725900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710258351.6A Active CN107122435B (zh) | 2017-04-19 | 2017-04-19 | 非关系型数据库的控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122435B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356403A (zh) * | 2021-12-17 | 2022-04-15 | 浙江中控技术股份有限公司 | 一种基于低代码应用开发的组态数据处理方法、装置和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929850A (zh) * | 2012-09-28 | 2013-02-13 | 用友软件股份有限公司 | 报表数据处理装置和报表数据处理方法 |
US8656379B2 (en) * | 2011-09-26 | 2014-02-18 | Oracle International Corporation | Systems and methods for uniquely defining Fortran run time type descriptors for polymorphic entities |
CN103838830A (zh) * | 2014-02-18 | 2014-06-04 | 广东亿迅科技有限公司 | 一种HBase数据库的数据管理方法及系统 |
CN106341469A (zh) * | 2016-08-31 | 2017-01-18 | 东软集团股份有限公司 | 树节点数据的加载方法和装置 |
-
2017
- 2017-04-19 CN CN201710258351.6A patent/CN107122435B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656379B2 (en) * | 2011-09-26 | 2014-02-18 | Oracle International Corporation | Systems and methods for uniquely defining Fortran run time type descriptors for polymorphic entities |
CN102929850A (zh) * | 2012-09-28 | 2013-02-13 | 用友软件股份有限公司 | 报表数据处理装置和报表数据处理方法 |
CN103838830A (zh) * | 2014-02-18 | 2014-06-04 | 广东亿迅科技有限公司 | 一种HBase数据库的数据管理方法及系统 |
CN106341469A (zh) * | 2016-08-31 | 2017-01-18 | 东软集团股份有限公司 | 树节点数据的加载方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107122435A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
US10108914B2 (en) | Method and system for morphing object types in enterprise content management systems | |
US20190102447A1 (en) | System and method for metadata sandboxing and what-if analysis in a multidimensional database environment | |
Bende et al. | Dealing with small files problem in hadoop distributed file system | |
US8959519B2 (en) | Processing hierarchical data in a map-reduce framework | |
US10509528B2 (en) | Mechanism for partial page refresh using URL addressable hierarchical page structure | |
US9600299B2 (en) | Application object framework | |
CN108459913B (zh) | 数据并行处理方法、装置及服务器 | |
CN103020255A (zh) | 分级存储方法和装置 | |
KR101941641B1 (ko) | 동일한 타입의 다수의 메타데이터 표현을 효율적으로 제공하는 기법 | |
CN104881466A (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
US20140019889A1 (en) | Regenerating a user interface area | |
US20190258608A1 (en) | Information management | |
Dagur et al. | Optimization of Queries in Database of Cloud Computing | |
CN112783887A (zh) | 一种基于数据仓库的数据处理方法及装置 | |
US11366801B1 (en) | Highly available storage using independent data stores | |
US10021187B2 (en) | Presenting content using decoupled presentation resources | |
CN107122435B (zh) | 非关系型数据库的控制方法及装置 | |
CN110019169A (zh) | 一种数据处理的方法及装置 | |
CN112597151A (zh) | 数据处理方法、装置、设备和存储介质 | |
US9690753B1 (en) | Caching of a site model in a hierarchical modeling system for network sites | |
US9411836B2 (en) | Facilitating consistency between a glossary and a repository | |
CA2864914A1 (en) | Virtual data write-back for business intelligence reporting | |
CN114356945A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US10884646B2 (en) | Data management system for storage tiers |
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 |