CN100561482C - 一种嵌入式系统数据库的实现方法 - Google Patents

一种嵌入式系统数据库的实现方法 Download PDF

Info

Publication number
CN100561482C
CN100561482C CNB2008100570476A CN200810057047A CN100561482C CN 100561482 C CN100561482 C CN 100561482C CN B2008100570476 A CNB2008100570476 A CN B2008100570476A CN 200810057047 A CN200810057047 A CN 200810057047A CN 100561482 C CN100561482 C CN 100561482C
Authority
CN
China
Prior art keywords
title
embedded system
hash table
implementation method
system data
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
Application number
CNB2008100570476A
Other languages
English (en)
Other versions
CN101221582A (zh
Inventor
卢俊峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CICT Mobile Communication Technology Co Ltd
Original Assignee
Beijing Northern Fiberhome Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Northern Fiberhome Technologies Co Ltd filed Critical Beijing Northern Fiberhome Technologies Co Ltd
Priority to CNB2008100570476A priority Critical patent/CN100561482C/zh
Publication of CN101221582A publication Critical patent/CN101221582A/zh
Application granted granted Critical
Publication of CN100561482C publication Critical patent/CN100561482C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及嵌入式系统数据库的实现方法,将数据库表格的记录存储地址存储到哈希表中,建立表格名称与记录存储地址的存储位置的关联,首先,读取包含基于表格的映射的表格描述文件;接着,在嵌入式系统的内存中建立多个哈希表;然后,将表格名称分类,每个分类对应一个哈希表,将该表格名称与对应的哈希表相关联;对表格名称进行哈希运算,获得该表格名称所对应的哈希表中的一个位置;最后,将该表格名称对应的记录存储地址存储在上述获得的位置中。本发明能够降低嵌入式系统数据库的复杂度,提高数据库的访问速度。

Description

一种嵌入式系统数据库的实现方法
技术领域
本发明涉及嵌入式系统数据库的实现方法,具体涉及利用哈希表的方式实现嵌入式系统数据库中的数据存储。
背景技术
在使用嵌入式操作系统的设备中,特别是通信设备,如3G基站、Wimax基站等,他们要开始正常工作,需要配置许多数据。在正常工作后,为了维护和优化整个网络,也需要动态的修改、增加、删除、查询许多配置数据,因此,在这些设备中使用一个数据库是必要的。但在使用嵌入式操作系统的设备中,由于其操作系统的不兼容性,以及CPU、内存和FLASH(闪存)的资源有限,一般是不可能直接使用商用的数据库,因此需要根据嵌入式系统自身特点,定制一个适合其本身的数据库。
对于嵌入式系统的数据库,一般来说具有以下几个特点:
1、数据量较小、用户数较少、性能要求不太高;
2、高效的存储、具备一定的安全性;
3、方便的可交换性和可伸缩性;
4、实现的简单性、对资源的占用愈小愈好;
目前业界的一般做法是采用XML(eXtensible Markup Language)方式来存储数据。XML的特点如下:
·XML是一种类似于HTML的标记语言;
·XML是用来描述数据的;
·XML的标记不是在XML中预定义的,必须定义自己的标记;
·XML使用文档类型定义(DTD)或者模式(Schema)来描述数据;
·XML使用DTD或者Schema后就是自描述的语言;
但是,采用XML方式来存储数据仍有许多不足之处,用XML存储数据实现复杂,占用资源较多,而且每次访问数据库,都需要对XML文件进行解析和转换,访问速度较低。
发明内容
本发明的目的在于提供一种嵌入式系统中数据库的实现方法,提高嵌入式系统的数据库访问效率。
一种嵌入式系统数据库的实现方法,将数据库表格的记录存储地址存储到哈希表中,建立表格名称与记录存储地址的存储位置的关联,包括:
(1)读取包含基于表格的映射的表格描述文件;
(2)在嵌入式系统的内存中建立多个哈希表;
(3)将表格名称分类,每个分类对应一个哈希表,将该表格名称与对应的哈希表相关联;
(4)对表格名称进行哈希运算,获得该表格名称所对应的哈希表中的一个位置;
(5)将该表格名称对应的记录存储地址存储在上述获得的位置中。
其中,将表格名称分类的步骤为,按表格名称的首字母对表格名称分类。
其中,对表格名称进行哈希运算的步骤为,将表格名称首字母以外所有字母的ASCII的和,对哈希表的长度取余数,该余数就是该表格名称在其对应的哈希表中的位置。
还包括,进行字节序转换,实现在不同CPU之间的跨平台操作,同一个数据库文件无需处理就能在不同的CPU之间直接使用。
其中,基于表格的映射包括:表格名称,表格描述,表格列数,列名称,列描述,数据类型,默认值。
本发明在基于表格的映射方面采用的是标记语言,是用来描述数据的自描述的语言,但在数据存储方面则采用哈希表方式存储,相对于XML方式来说,本发明的优点主要在于:
1、高效的存储、具备一定的安全性;
2、实现的简单性、对资源的占用少;
3、无需每次都要对文本进行解析和转换,数据访问速度快。
本发明能够降低嵌入式系统数据库的复杂度,提高数据库的访问速度。
附图说明
图1为本发明数据库的存储结构;
图2为X86系列CPU和PPC系列CPU的变量存储方式;
图3为本发明数据库启动的流程;
图4为本发明增加一条数据库记录的流程;
图5为本发明查询一条数据库记录的流程。
具体实施方式
下面将参照本发明的一个实例及其附图来进一步说明:
首先,利用基于表格的映射(Table-Based Mapping)来说明数据库表格的基本信息,该基于表格的映射通过一个结构来说明数据表格的基本信息。该结构描述了一个二维的数据库表格,在结构中定义了表格名称,表格描述,表格列数,列名称,列描述,数据类型,默认值,以下为该结构的一个例子:
[table]
[wmanIfBsProvisionedSfTable]
table_describe=″配置Bs预配置服务流工作参数″
column_num=2
[column1]
column_name=wmanIfBsSfId
column_description=″服务流Id″
column_type=number_1
column_default=1
[column2]
column_name=wmanIfBsSfDirection
column_description=″服务流上下行方向″
column_type=number_1
column_default=1
以上结构描述了一个二维数据库表格。该数据库表格的表格名称为wmanIfBsProvisionedSfTable;table_describe是表格描述,用于说明该数据库表格所存储的数据的相关信息,table_describe=″配置Bs预配置服务流工作参数″表示该数据库表格用于存储配置Bs预配置服务流工作参数;column_num是表格列数,是该数据库表格具有的列的个数,column_num=2表示该数据库表格共有2列;column_name是列名称;column_description是列描述,用于说明该列数据的相关信息;column_type是数据类型;column_default是默认值,用于可以设定默认值。
第一列的列名称为“wmanIfBsSfId”,列描述为服务流Id,数据类型为1个字节的整数,默认值为1;第二列的列名称为“wmanIfBsSfDirection”,列描述为服务流Id,其数据类型为1个字节的整数,默认值为1。
该结构存储于表格描述文件中,该表格描述文件为文本格式的文件,可以直接用文本编辑器进行编辑。在上述表格描述文件中,可以定义一组表格,在使用过程中可以方便的离线增加、修改、删除表格;同时,也可以通过接口函数方便的在线增加、修改、删除、查询表格。这样,充分实现了可交换性和可伸缩性。
本发明的嵌入式系统数据库的实现方法中,先将数据库表格的表格名称按照字典序分类,然后将数据库表格的记录存储地址存储到哈希表中,记录存储地址是数据库表格在存储器中的地址,建立表格名称与记录存储地址的对应关系,这样,不用经过比较,通过数据库表格的表格名称就能直接得到数据库表格的记录存储地址,从而读取数据库表格,本发明中的数据库存储结构如图1所示,下面进行详细说明,
表格名称的首字母按字典序分类,不区分大小写字母,相同首字母的数据库表格的记录存储地址存储在连续的地址空间内,一共有26个相同的哈希表,分别以数据库表格的首字母进行区分,例如,数据库表格wmanIfBsProvisionedSfTable存储在首字母为W的哈希表内。
在每一个哈希表内,利用哈希函数来确定具有相同首字母的数据库表格的记录存储地址的存储位置,以哈希函数H(key)=key MOD m,为例进行说明,其中,H(key)为哈希函数,key为关键字,m为哈希表的表长。
选取数据库表格的表格名称除首字母以外,其它所有字母的ASCII,区分大小写字母,将除首字母以外的所有字母的ASCII的和作为key,wmanIfBsProvisionedSfTable表格名称除首字母为manIfBsProvisionedSfTable,它的ASCII的和为2515;m为哈希表的表长,附图1中哈希表的表长为10,即,包括10个连续的地址空间;那么,数据库表格wmanIfBsProvisionedSfTable的记录存储地址存储在,以W为首字母的哈希表中,在首字母为W的哈希表中,利用哈希函数H(key)=key MOD m来记录存储地址的存储位置,2515对10取余结果为5,那么,数据库表格wmanIfBsProvisionedSfTable的记录存储地址的存储位置就是,以W为首字母的哈希表的序号为5的位置,如附图1所示。
当发生不同的表格名称对应相同的哈希地址时,本发明采用开放定址法处理冲突。
所属技术领域的技术人员应该了解,本实施例中的哈希函数的可以选取多种常用的哈希函数,且哈希表的长度可以根据用户需求设定,不应该理解为对本发明的限制。
对数据库表格进行增加,删除,修改和查询时,数据库表格的表格名称为关键字,根据关键字与记录存储地址的对应关系,可以直接找到该数据库表格的记录存储地址,用表格名称的首字母确定该数据库表格的记录存储地址所在的哈希表,用首字母外所有字母的ASCII的和进行哈希运算,得到该数据库表格的记录存储地址的准确位置,根据记录存储地址访问该数据库表格。相对于XML用标记语言来描述数据,本发明在数据存取的效率上有很大提高。
同时,还需要考虑不同CPU在存储数据时的特点,X86系列CPU的存储方式是小字节方式,多字节变量在内存中的存储是低字节在前;而PPC系列CPU的存储方式为大字节方式,多字节变量在内存中的存储是高字节在前。变量0X01020304在不同CPU的存储位置如图2所示,因此,在读取数据库时,如果不进行字节序转换,同一个数据库文件在不同的CPU平台中,得到的值是不一样的。按照高字节在前存储的变量0X01020304,在PPC系列的CPU中读出来的值是0X01020304,而在X86系列的CPU中读出来的值是0X04030201。
通过字节序转换,本发明的数据库生成的数据库文件适应于各种CPU,实现真正的跨平台。
图3为本发明的数据库启动流程。首先,读取包括基于表格的映射的表格描述文件,获得数据库表格的相关信息,其中包括表格名称,然后,在嵌入式系统的内存中建立多个哈希表,用户可以设定哈希表的个数;判断文件是否结束,如果结束则直接退出,如果文件没有结束,则读取表格名称,根据表格名称的首字母进行分类,每一个分类对应一个哈希表,也就是说,每一个表格名称对应一个哈希表,然后,根据表格首字母外所有字母的ASCII的和进行哈希运算,用户可以设定不同的哈希运算的方法,通过哈希运算,确定该表格名称在其对应的哈希表中的位置,,将该表格名称所对应的记录存储地址,存储到该位置,重复上述步骤,直到全部表格转换完,最后,根据不同的CPU进行字节序的转换,以保证数据库文件适应于各种CPU平台。
图4为本发明增加一条数据库记录的流程。首先解析SQL语句,然后给增加的记录分配内存,接着根据解析后的SQL语句中的数据库名称查找对应的数据库记录存储地址,将增加的记录保存到内存中。最后,根据不同的CPU进行字节序转换,保存到数据库记录文件中。
图5为本发明查询一条数据库记录的流程。首先解析SQL语句,根据解析后的SQL语句中的数据库名称查找对应的数据库记录存储地址,如果没有符合该条件的记录,返回失败,否则,将记录根据不同的CPU进行字节序转换,返回查询值。
以上具体实施方式仅限于说明本发明的嵌入式系统数据库实现方法,但本发明并不局限于实施例的内容。依本发明方法,本领域的普通技术人员可以很容易地实现本发明,或通过其他方式予以改进,凡不脱离本发明思想的任何改进都属于本发明的保护范围。

Claims (5)

1、一种嵌入式系统数据库的实现方法,将数据库表格的记录存储地址存储到哈希表中,建立表格名称与记录存储地址的存储位置的关联,其特征在于,包括:
(1)读取包含基于表格的映射的表格描述文件;
(2)在嵌入式系统的内存中建立多个哈希表;
(3)将表格名称分类,每个分类对应一个哈希表,将该表格名称与对应的哈希表相关联;
(4)对表格名称进行哈希运算,获得该表格名称所对应的哈希表中的一个位置;
(5)将该表格名称对应的记录存储地址存储在上述获得的位置中。
2、如权利要求1所述的嵌入式系统数据的实现方法,其特征在于,将表格名称分类的步骤为,按表格名称的首字母对表格名称分类。
3、如权利要求1所述的嵌入式系统数据的实现方法,其特征在于,对表格名称进行哈希运算的步骤为,将表格名称首字母以外所有字母的ASCII的和,对哈希表的长度取余数,该余数就是该表格名称在其对应的哈希表中的位置。
4、如权利要求1所述的嵌入式系统数据的实现方法,其特征在于,进行字节序转换,实现在不同CPU之间的跨平台操作,同一个数据库文件无需处理就能在不同的CPU之间直接使用。
5、如权利要求1所述的嵌入式系统数据的实现方法,其特征在于,基于表格的映射包括:表格名称,表格描述,表格列数,列名称,列描述,数据类型,默认值。
CNB2008100570476A 2008-01-29 2008-01-29 一种嵌入式系统数据库的实现方法 Active CN100561482C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2008100570476A CN100561482C (zh) 2008-01-29 2008-01-29 一种嵌入式系统数据库的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2008100570476A CN100561482C (zh) 2008-01-29 2008-01-29 一种嵌入式系统数据库的实现方法

Publications (2)

Publication Number Publication Date
CN101221582A CN101221582A (zh) 2008-07-16
CN100561482C true CN100561482C (zh) 2009-11-18

Family

ID=39631421

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2008100570476A Active CN100561482C (zh) 2008-01-29 2008-01-29 一种嵌入式系统数据库的实现方法

Country Status (1)

Country Link
CN (1) CN100561482C (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876983B (zh) * 2009-04-30 2012-11-28 国际商业机器公司 数据库分区方法与系统
CN101859316B (zh) * 2010-04-29 2012-07-11 北京无限立通通讯技术有限责任公司 一种对海量文件进行存取的方法及装置
CN102402394B (zh) * 2010-09-13 2014-10-22 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN103164490B (zh) * 2011-12-19 2016-02-17 北京新媒传信科技有限公司 一种不固定长度数据的高效存储实现方法和装置
CN103186552B (zh) * 2011-12-28 2016-04-06 北京新媒传信科技有限公司 一种业务服务中客户端访问数据的方法和系统
CN102662683B (zh) * 2011-12-30 2015-07-22 广东东研网络科技股份有限公司 基于键-值对格式的通信设备配置文件的生成和导入方法
CN103455606B (zh) * 2013-09-03 2016-07-06 何云坤 一种大数据库创建及数据管理方法
CN104991923B (zh) * 2015-06-25 2018-08-21 无线生活(杭州)信息科技有限公司 一种过滤方法及装置
CN111209831A (zh) * 2019-12-31 2020-05-29 上海犀语科技有限公司 一种基于分类算法的文档表格内容识别方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN1949221A (zh) * 2006-11-27 2007-04-18 北京金山软件有限公司 存储元素的方法与系统及查找元素的方法与系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN1949221A (zh) * 2006-11-27 2007-04-18 北京金山软件有限公司 存储元素的方法与系统及查找元素的方法与系统

Also Published As

Publication number Publication date
CN101221582A (zh) 2008-07-16

Similar Documents

Publication Publication Date Title
CN100561482C (zh) 一种嵌入式系统数据库的实现方法
CN100444167C (zh) 完美双数组trie树词典管理与检索方法
US7562087B2 (en) Method and system for processing directory operations
CN106599104B (zh) 一种基于redis集群的海量数据关联方法
US7860853B2 (en) Document matching engine using asymmetric signature generation
CN107038207A (zh) 一种数据查询方法、数据处理方法及装置
US20080059417A1 (en) Structured document management system and method of managing indexes in the same system
CN101369267B (zh) 一种基于内存库的模糊查询方法
CN103365992B (zh) 一种基于一维线性空间实现Trie树的词典检索方法
US20080114733A1 (en) User-structured data table indexing
CN102999600A (zh) 一种嵌入式数据库自动生成方法和系统
CN104035993A (zh) 电子书的存储检索方法、电子书管理系统、阅读系统
CN103123650A (zh) 一种基于整数映射的xml数据库全文索引方法
CN100483409C (zh) 一种字符数据的检索方法
CN106503040B (zh) 适用sql查询方法的kv数据库及其创建方法
CN108984626B (zh) 一种数据处理方法、装置及服务器
CN104572685A (zh) 数据排序方法
CN103235789B (zh) 一种汉字转换为拼音及首字母的方法
CN100383787C (zh) 一种数据库多表信息初始化方法
CN101158955A (zh) 一种中文词库的构造方法
CN105912696A (zh) 一种基于对数归并的dns索引创建方法及查询方法
CN103064847A (zh) 索引装置、索引方法、检索装置、检索方法和检索系统
Flor A fast and flexible architecture for very large word n-gram datasets
CN101551820A (zh) 兴趣点属性的索引数据库的生成方法和装置
CN108628871A (zh) 一种基于链接特征的链接去重方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190917

Address after: 430073 Hubei province Wuhan Dongxin East Lake high tech Development Zone, Road No. 5

Patentee after: Wuhan Hongxin Communication Technology Co., ltd.

Address before: 100085, beacon building, No. 5-3, East Road, Beijing, Haidian District

Patentee before: Beifang Fenghuo Tech Co., Ltd., Beijing

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 430205 Hubei city of Wuhan province Jiangxia Hidden Dragon Island Tan lake two Road No. 1

Patentee after: CITIC Mobile Communication Technology Co., Ltd

Address before: 430073 Hubei province Wuhan Dongxin East Lake high tech Development Zone, Road No. 5

Patentee before: Wuhan Hongxin Telecommunication Technologies Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee after: CITIC Mobile Communication Technology Co.,Ltd.

Address before: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee before: CITIC Mobile Communication Technology Co., Ltd