首页> 中国专利> 导航地图多个更新区域的数据库文件访问管理方法及装置

导航地图多个更新区域的数据库文件访问管理方法及装置

摘要

本发明提供一种导航地图多个更新区域的数据库文件访问管理方法及装置,该方法包括步骤:将各个导航功能模块使用的、用于查询数据库的查询请求在数据库访问管理单元中进行注册;数据库访问管理单元为注册的查询请求分配查询请求ID;各个导航功能模块使用查询请求ID进行数据访问。

著录项

  • 公开/公告号CN103514185A

    专利类型发明专利

  • 公开/公告日2014-01-15

    原文格式PDF

  • 申请/专利权人 北京四维图新科技股份有限公司;

    申请/专利号CN201210210037.8

  • 发明设计人 刘泽林;刘志毅;

    申请日2012-06-20

  • 分类号G06F17/30;

  • 代理机构北京银龙知识产权代理有限公司;

  • 代理人曾贤伟

  • 地址 100028 北京市朝阳区曙光西里甲5号凤凰置地广场A座写字楼17层

  • 入库时间 2024-02-19 21:53:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-09-29

    授权

    授权

  • 2014-02-19

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

    实质审查的生效

  • 2014-01-15

    公开

    公开

说明书

技术领域

本发明涉及导航地图多个更新区域的数据库文件访问管理方法及装置,尤 其涉及在导航电子地图数据中存在多更新区域时的导航电子地图数据库访问 管理方法及装置。

背景技术

随着导航电子地图数据量越来越大以及用户对数据更新的及时性要求越 来越高,新的导航电子地图存储规格增加了对数据进行增量更新的特性。例如 2010年发布了一份电子地图数据,2011年发布的新数据仅提供一份增量更新 的数据,增量更新数据中只包括了相对于2010年2011年的地图出现变化的那 部分数据,这样就不需要提供2011年的全国的电子地图数据,这样提供给用 户的数据就非常少,用户系统只需根据增量更新数据的内容在2010年的数据 基础上做些修改就可以了,不需要更新全国地图数据,这样用户更新数据就比 较快。

为了满足增量更新及大容量数据的存储要求,全国电子地图被划分为若干 个更新区域,每个更新区域包含该更新区域所有导航功能模块需要的数据,同 时由于某些嵌入式操作系统对文件容量小于2GB的限制,造成了一份全国电 子地图可能需要几十个文件存储。这就要求导航系统在地图数据被访问时要具 有完善的机制对地图数据文件访问进行管理,既要保证数据访问过程效率高, 又要求资源占用尽可能少,以满足在嵌入式系统资源有限的情况下流畅地运行 所有导航应用。

如图1所示,在现有的导航系统中,通常各个模块独立管理该模块需要访 问的地图数据文件。从图1中可以看出现有系统中各个模块独立管理数据库对 象,由于每个数据库对象都需要独立的缓冲区,因此造成了内存消耗较大。在 Sqlite数据库系统中,如果不同导航功能模块使用同一个数据库文件,那么利 用Sqlite数据库系统的共享缓冲区模式可以达到节约内存的目的。但对于具有 多更新区域的地图的应用,由于数据库文件较多,如果每个导航功能模块都独 立使用数据库访问对象,则需要消耗较多的内存。在嵌入式导航系统内存容量 较少的情况下更是不能被接受。

另外,导航功能模块从数据库中读取数据是通过数据的ID来进行检索的, 每一类型的数据查询语句形式都是相同的,仅仅是数据的ID和某些条件的数 值发生变化,而查询语句在使用时需要数据库系统进行编译,每次编译都需要 耗费时间,利用Sqlite的参数化SQL可以避免这种情况,只需要编译一次, 每次查询时只要绑定需要变化的数值就可以完成查询操作,极大地提高效率。 但在具有多更新区域的地图的应用中,由于存在数据库调度的问题,因此会造 成编译好的查询语句使用的文件被卸载的情况,如果无法及时通知查询语句使 用方则会造成查询操作的失败,而要建立这种通知机制会极大增加系统的复杂 性。

发明内容

为了解决上述现有技术中的问题,本发明提供一种导航地图多个更新区域 的数据库文件访问管理方法,包括步骤:将各个导航功能模块使用的、用于查 询数据库的查询请求在数据库访问管理单元中进行注册;数据库访问管理单元 为注册的查询请求分配查询请求ID;及各个导航功能模块使用查询请求ID进 行数据访问。

还提供一种导航地图多个更新区域的数据库文件访问管理装置,包括:注 册单元,用于将各个导航功能模块使用的、用于查询数据库的查询请求进行注 册;ID分配单元,用于为注册的查询请求分配查询请求ID,各个导航功能模 块使用查询请求ID进行数据访问。

本发明通过科学的调度策略实现了导航引擎仅使用一个数据库对象达到 高效访问多更新区域地图数据库的要求,保证了在嵌入式设备内存资源受限情 况下对导航数据的高效访问。

附图说明

图1表示现有的导航系统的结构示意图;

图2表示根据本发明实施例的导航系统的结构示意图;

图3表示根据本发明实施例的查询语句索引表的结构示意图;

图4表示根据本发明实施例的数据库对象索引表的结构示意图;

图5表示根据本发明实施例的数据库访问管理单元初始化的流程图;

图6表示根据本发明实施例的向数据库访问管理单元进行注册的流程图;

图7表示根据本发明实施例的查询语句注册管理策略的执行流程图;

图8表示根据本发明实施例的查询语句注册管理策略的执行流程图;

图9表示根据本发明实施例的查询语句注册管理策略的执行流程图。

具体实施方式

本发明提供的导航地图多个更新区域的数据库文件访问管理方法的核心 思想是通过在导航系统中增加数据库访问管理单元来统一管理数据库对象,各 导航功能模块使用到的查询语句需要在系统启动时向数据库访问管理单元注 册,由数据库访问管理单元为注册的查询请求分配固定的查询请求ID,导航 功能模块使用查询请求ID进行数据访问。通过这种方式,各导航功能模块不 需要考虑数据库文件名称、数据库文件加载等细节,只需要通过更新区域ID 和查询请求ID就可以对数据进行访问。

根据本发明的一个方面,提供一种导航地图多个更新区域的数据库文件访 问管理方法,该方法包括步骤:将各个导航功能模块使用的、用于查询数据库 的查询请求在数据库访问管理单元中进行注册;数据库访问管理单元为注册的 查询请求分配查询请求ID;及各个导航功能模块使用查询请求ID进行数据访 问。

根据本发明的另一方面,提供一种导航地图多个更新区域的数据库文件访 问管理装置,包括:注册单元,用于将各个导航功能模块使用的、用于查询数 据库的查询请求进行注册;ID分配单元,用于为注册的查询请求分配查询请 求ID,各个导航功能模块使用查询请求ID进行数据访问,如图2所示。

数据库访问管理单元启动时要构建三个索引表,分别是数据库文件信息表、 查询请求索引表、数据库对象索引表,用于管理数据库文件、查询请求、更新 区域、导航功能模块的索引信息以及相互间的关联。下面分别对三个索引表进 行说明。

(1)数据库文件信息表,该表用于对数据库文件访问的统一管理,每个 数据库文件信息记录的信息包括:

a、加载状态标识,标识数据库文件是否被加载。

b、访问计数,当数据库被访问时,计数加1;数据库访问结束时则减1; 用于标识当前访问数据库的查询操作数量,当该计数大于0时,该数据库文件 不允许被卸载。

c、互斥量,用于线程同步。

d、数据库别名,当一个数据库对象加载多个数据库文件时,每个数据库 需要别名,用于区分不同数据库文件。

e、数据库文件名称,数据库文件在存储设备上的保护绝对路径的文件名 称。

f、文件最后访问时间

(2)查询语句索引表,各个导航功能模块注册的查询语句由该表管理, 其结构见图3。

(3)数据库对象索引表,该表用于管理更新区域ID→功能模块ID→数据 库文件/查询请求间的三级索引关系,见图4。

由于更新区域ID/导航功能模块ID的定义是与更新区域和功能模块数量 相关的,即使使用的ID的编码大于更新区域/导航功能模块的数量,超出的范 围也是很有限的,因此数据库访问管理单元建立的数据索引表采用数组来存储 信息,数组第n个位置存储的是更新区域/导航功能模块ID=n的数据,这样检 索数据过程中通过ID值可以直接访问相应的数据,避免了查找过程效率的损 失。

数据库访问管理单元初始化流程见图5。

在多更新区域地图导航应用中,当数据库文件数量超过31个时,一个数 据库对象无法同时加载全部的数据库文件,这时需要有一个合理的调度策略来 确定哪个数据库文件被加载、哪个数据库文件被卸载,以便于保证数据访问的 效率。

本发明中数据库文件调度的策略定义如下:

(1)数据库访问管理单元不主动加载任何数据库文件,只有当导航功能 模块请求使用某个注册的查询请求时,才将该查询涉及的数据库文件加载到数 据库对象中。

(2)数据库文件加载成功后,设置数据库文件信息中的“加载状态标识” 为已加载状态。

(3)已加载的数据库文件保持加载状态,直到符合策略(4)、(5)、(6) 的情况才允许卸载

(4)在数据库对象加载的数据库文件达到31个的情况下,如果需要访问 未加载的数据库文件时,将符合条件(5)、(6)的数据库文件卸载。

(5)只允许卸载数据库文件信息中访问计数等于0的数据库文件

(6)在符合条件(5)的情况下优先卸载最后访问时间距现在最久的数据 库文件

(7)如果出现符合条件(4)同时不符合条件(5)、(6)的情况,则需要 向请求方返回失败信息。

(8)数据库文件卸载成功后,设置数据库文件信息中的“加载状态标识” 为未加载状态。

(9)卸载数据库文件时,首先要从数据库对象中将已编译的访问被卸载 数据库文件的查询命令清除,同时将数据库对象索引表中的查询命令记录清除。

地图数据查询使用的查询语句的可以简单描述成:从哪个表,选择什么数 据,条件是什么。而多更新区域地图数据库文件调度过程中影响到的是“从哪 个表”这一部分,当一个数据库对象加载了多个数据库文件情况下,需要从某 个表中读取数据时,需要在表名称前面限定其属于哪个数据库文件。

本发明中的查询语句注册管理机制通过如下策略避免了数据库调度对导 航功能模块查询数据操作的影响:

(1)导航功能模块将所有需要使用的查询语句向数据库访问管理单元注 册,数据库访问管理单元将查询语句插入到查询语句索引表中该功能模块对于 的查询请求列表中,注册流程参考图6。

(2)注册时将完整的SQL语句分为三部分,选择部分、来源部分、条件 部分,分别对应选择什么数据、从哪个表、条件是什么三部分,其中条件部分 可以为空;来源部分是使用到的数据库表的名称列表,当使用多个表时,系统 默认表的别名按a、b、c…来命名。

(3)注册后数据库访问管理单元会为查询语句分配一个固定的查询语句 ID,该ID同时可以用于识别查询语句访问数据的导航功能模块索引信息以及 查询语句的索引信息,以便于使用时快速查找。

(4)导航功能模块需要查询数据时,需要向数据库访问管理模块发出连 接请求,将更新区域ID和查询语句ID传递给数据库访问管理单元。如果两个 ID确定的查询语句已经在数据库对象中编译成功,则数据库访问管理单元将 数据库对象返回给导航功能模块用于查询操作;否则执行策略(5)、(6),成 功后将数据库对象返回给导航功能模块。

(5)如果查询语句还未成功编译,数据库访问管理单元根据查询语句ID 从查询语句索引表中获取到查询语句的信息,将查询语句三个部分拼成完整的 SQL语句.

(6)并在数据库对象中编译查询语句。

(7)在策略(5)拼接SQL语句过程中,首先需要根据更新区域ID以及 查询语句ID中的模块信息从数据库对象索引表中找到查询使用到的数据库文 件信息,如果该数据库文件已经加载到数据库对象,则从数据库文件信息表中 取出别名作为查询语句中表的前缀。

(8)执行策略(7)成功后,将数据库文件信息中的访问计数加1。

(9)如果数据库文件未被加载,根据数据库调度策略加载需要使用的数 据库文件,如果成功则执行策略(7)、(8),否则返回失败信息。

(10)查询操作执行完毕必须向数据库访问管理单元发出查询结束通知。

(11)查询操作结束后,将数据库文件信息中的访问计数减1。

图7、8描述了策略(4)、(5)、(6)、(7)、(8)、(9)的执行流程。

图9描述了策略(10)、(11)的执行流程。

本发明通过独特的查询语句注册管理机制,隐藏了多更新区域下数据库名 称以及数据库文件加载/卸载对查询语句的影响,简化了导航功能模块数据访 问的流程,降低了各导航功能模块访问多更新区域数据的复杂度。同时充分利 用Sqlite提供的参数化的SQL,解决了数据访问过程中相同查询语句多次重复 编译的效率问题。

本发明利用Sqlite数据库系统可以同时打开31个数据库文件的特性,通 过科学的调度策略来管理数据库文件的加载/卸载操作,在系统中只申请一个 数据库访问对象的情况下,保证各个功能模块对数据库高效、流畅地访问数据, 达到节约系统内存的要求。

本发明利用发明的查询语句注册管理机制简化数据访问操作,只需要通过 更新区域ID,查询语句ID两个参数就可以对数据库进行访问,隐藏数据库文 件名称、数据库加载/卸载等细节。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号