CN101551808A - 支持多进程的嵌入式的树型数据库技术 - Google Patents

支持多进程的嵌入式的树型数据库技术 Download PDF

Info

Publication number
CN101551808A
CN101551808A CNA2009100155177A CN200910015517A CN101551808A CN 101551808 A CN101551808 A CN 101551808A CN A2009100155177 A CNA2009100155177 A CN A2009100155177A CN 200910015517 A CN200910015517 A CN 200910015517A CN 101551808 A CN101551808 A CN 101551808A
Authority
CN
China
Prior art keywords
data
shared drive
file
write
tree
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
Application number
CNA2009100155177A
Other languages
English (en)
Other versions
CN101551808B (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.)
CVIC Software Engineering Co Ltd
Original Assignee
CVIC Software Engineering 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 CVIC Software Engineering Co Ltd filed Critical CVIC Software Engineering Co Ltd
Priority to CN2009100155177A priority Critical patent/CN101551808B/zh
Publication of CN101551808A publication Critical patent/CN101551808A/zh
Application granted granted Critical
Publication of CN101551808B publication Critical patent/CN101551808B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明是一种支持多进程的嵌入式的树型数据库技术,包括程序初始流程和水印操作流程,采用共享内存机制、二叉树遍历与序列化存储技术等,查询效率高、功能安全可靠、轻巧而灵活。

Description

支持多进程的嵌入式的树型数据库技术
技术领域
本发明涉及一种支持多进程的嵌入式的树型数据库技术,即InforGuard网页防篡改系统中间件存储水印信息的数据库技术。
背景技术
在基于WEB服务器或应用服务器(以下简称为服务器)的网络应用中,需要对部署在服务器上的资源文件、脚本文件、页面文件、以及页面文件引用的服务性文件进行保护,即保证服务器提供给访问用户的文件是正确性;为此需要将各个文件的摘要信息(也就是水印信息)保存到数据库中。
目前,在此领域采用的方式为:
1.文件对应存储方式
该方法是根据文件路径和名子,在水印目录下,生成与之对应的一个文件,用于存储水印信息;这种方式也就意味着一个文件就要有一个与之对应的存储水印的文件,如果一个网站有100000个网页,也就要有100000个水印文件;这种方式的优点是比较直观,可以很方便的去查看,但是其缺点是性能低,安全性差。
2.关系数据库存储方式
该方法是采用关系数据库,将文件全名和水印存储到现有的关系型数库中;这种方式的优点是实现简单,开发周期短,但是缺点是查询性能低(查询的性能又是限制Web服务器的一个重要因素)。
发明内容
本发明的目的就是针对上述的不足,提供了一种查询效率高、功能安全可靠的支持多进程的嵌入式的树型数据库技术。
本发明主要采用了一下技术:
1.共享内存机制
在进程启动后,数据库模块会将数据库中的数据加载到共享内存中,方便该进程或其他进程读写数据;在被加载后,所有的操作都是操作共享内存(大大提高了读写速度),而共享内存和磁盘数据的同步使用独立的线程进行维护。
2.二叉树遍历与序列化存储技术
数据结构是一个二叉树,左子、右兄;一个节点的属性有节点名、文件列表、子目录及兄弟目录;树在磁盘上的存储,采用的序列化存储技术。
3.数据更新缓存技术
为了提高查询速度,数据实现采用了更新缓存技术,将数据库更新的数据缓存到临时文件中去,一是提高了速度,二是提高了可靠性。
4.双文件交替读写技术
为了提高数据的可靠性,采用两个文件交替写的方式,这样可以将计算机突然重启丢失的数据降到最低。
具体来说,本发明是一种支持多进程的嵌入式的树型数据库技术,包括程序初始流程和水印操作流程,其中,
程序初始流程为:
1-1)初始化读写锁,为了支持多进程操作,所以要使用信号量来实现进程之间的互斥;
1-2)加载数据库文件与缓存文件中的数据到共享内存,数据在磁盘上,是以序列化的字符存储的,这一步就是将磁盘上的数据解析到内存中对应的树形结构中;
1-3)启动同步线程,当更新的数据内容大于一个限值时,同步线程就会将共享内存的数据同步到磁盘上,实现持久化存储。
水印操作流程为:
2-1)加读或写锁,实现进程间的互斥;
2-2)查询或更新共享内存数据,如果是读操作,遍历二叉树,取出该文件的水印并返回;如果是写操作,先更新共享内存的数据;
2-3)更新内容写入缓存,如果是写操作,在更新共享内存中的数据之后,保存到缓存文件。
上述第1-2)步中加载数据库文件与缓存文件中的数据到共享内存是这样实现的:它包括共享内存、内容缓存和二叉树序列化存储,其中,
共享内容为:在非Windows平台上通过shmget和shmat函数实现共享内存的创建与分配置;在Windows平台上通过CreateFileMapping和MapViewOfFile函数实现共享内存的创建与分配置;
内容缓存为:将某一段时间对数据库的更新记录写到某一文件中,等到更新到某一规模,再统一将数据写到数据库文件中去,目的是提高操作数据库的效率和安全性;
二叉树序列化存储为:采用流的方式,通过<<和>>操作符重载,来实现数序列化。
通过本发明,实现了一套用于存储水印信息的数据库,其特点如下:
1.支持多进程
可以多个进程同时操作该数据库(此数据库要被Web服务器加载,同时也会被InforGuardMa(监控代理)加载),而多个进程之间采用共享内存的方式实现数据的共享,从而提高了查询的速度;和文件对应存储方式相比,在进行水印比对时不需要再从磁盘上读到文件,从而大大提高了比对速度。
2.嵌入式
不需要启动独立的进程,而是直接由其他进程调用统一的接口,从而实现数据库内嵌到其调用进程中去。
3.树型数据结构
由于水印信息是和文件对应的,而文件在操作系统中又是以树状的目录结构存在的,自然而然用于存储水印的数据库实现为树型数据库是更为合理的;因为树型数据结构,无论是查询还是更新操作上,其速度都是高于关系数库的。
本发明提供的支持多进程的嵌入式的树型数据库技术,具有以下优点:
1.查询效率高
由于采用了共享内存机制和树型结构的描述以及更新缓存的技术,所以查询与更新的效率要高。
2.功能安全可靠
双文件交替读写的方而以及缓存机制的应用,从而保障了功能的安全可靠性。
3.轻巧而灵活
采用嵌入进程的方式,使得程序灵活性大大提高,实现上比较轻便,容易实现。
附图说明
图1为本发明实施例中程序初始化流程图;
图2为本发明实施例中水印操作流程图。
具体实施方式
一种支持多进程的嵌入式的树形数据库技术,包括程序初始流程和水印操作流程。
初始流程如图1所示,开始于步骤101初始化读写锁,为了支持多进程操作,所以要使用信号量来实现进程之间的互斥。
然后进入步骤102加载数据库文件与缓存文件中的数据到共享内存,数据在磁盘上,是以序列化的字符存储的,这一步就是将磁盘上的数据解析到内存中对应的树形结构中。
加载数据库文件与缓存文件中的数据到共享内存是这样实现的:它包括共享内存、内容缓存和二叉树序列化存储,其中,
共享内容为:在非Windows平台上通过shmget和shmat函数实现共享内存的创建与分配置;在Windows平台上通过CreateFileMapping和MapViewOfFile函数实现共享内存的创建与分配置;
内容缓存为:将某一段时间对数据库的更新记录写到某一文件中,等到更新到某一规模,再统一将数据写到数据库文件中去,目的是提高操作数据库的效率和安全性;
二叉树序列化存储为:采用流的方式,通过<<和>>操作符重载,来实现数序列化。
然后进入步骤103启动同步线程,当更新的数据内容大于一个限值时,同步线程就会将共享内存的数据同步到磁盘上,实现持久化存储。
水印操作流程如图2所示,开始于步骤201加读或写锁,实现进程间的互斥。
然后进入步骤202查询或更新共享内存数据,如果是读操作,遍历二叉树,取出该文件的水印并返回;如果是写操作,先更新共享内存的数据;
最后进入步骤203更新内容写入缓存,如果是写操作,在更新共享内存中的数据之后,保存到缓存文件。

Claims (2)

1.一种支持多进程的嵌入式的树型数据库技术,其特征在于包括程序初始流程和水印操作流程,其中,
程序初始流程为:
1-1)初始化读写锁,使用信号量实现进程之间的互斥;
1-2)加载数据库文件与缓存文件中的数据到共享内存,即将磁盘上的数据解析到内存中对应的树形结构中;
1-3)启动同步线程,当更新的数据内容大于一个限值时,同步线程就会将共享内存的数据同步到磁盘上,实现持久化存储;
水印操作流程为:
2-1)加读或写锁,实现进程间的互斥;
2-2)查询或更新共享内存数据,如果是读操作,遍历二叉树,取出该文件的水印并返回;如果是写操作,先更新共享内存的数据;
2-3)更新内容写入缓存,如果是写操作,在更新共享内存中的数据之后,保存到缓存文件。
2.根据权利要求1所述的支持多进程的嵌入式的树型数据库技术,其特征在于:上述第1-2)步中加载数据库文件与缓存文件中的数据到共享内存是这样实现的:它包括共享内存、内容缓存和二叉树序列化存储,其中,
共享内容为:在非Windows平台上通过shmget和shmat函数实现共享内存的创建与分配置;在Windows平台上通过CreateFileMapping和MapViewOfFile函数实现共享内存的创建与分配置;
内容缓存为:将某一段时间对数据库的更新记录写到某一文件中,等到更新到某一规模,再统一将数据写到数据库文件中去;
二叉树序列化存储为:采用流的方式,通过《和》操作符重载,来实现数序列化。
CN2009100155177A 2009-05-13 2009-05-13 支持多进程的嵌入式的树型数据库技术 Active CN101551808B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100155177A CN101551808B (zh) 2009-05-13 2009-05-13 支持多进程的嵌入式的树型数据库技术

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100155177A CN101551808B (zh) 2009-05-13 2009-05-13 支持多进程的嵌入式的树型数据库技术

Publications (2)

Publication Number Publication Date
CN101551808A true CN101551808A (zh) 2009-10-07
CN101551808B CN101551808B (zh) 2011-04-13

Family

ID=41156055

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100155177A Active CN101551808B (zh) 2009-05-13 2009-05-13 支持多进程的嵌入式的树型数据库技术

Country Status (1)

Country Link
CN (1) CN101551808B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101860532A (zh) * 2010-05-07 2010-10-13 深圳市共进电子有限公司 多进程配置文件的保存及加载方法
CN102385526A (zh) * 2011-11-16 2012-03-21 深圳市大赢家网络有限公司 在多进程之间共享股票数据的方法及装置
CN102117308B (zh) * 2010-01-06 2012-11-14 卓望数码技术(深圳)有限公司 一种数据处理方法和数据处理系统
CN103064748A (zh) * 2013-01-05 2013-04-24 浪潮电子信息产业股份有限公司 一种Linux下处理多进程间通讯的方法
CN103176852A (zh) * 2011-12-22 2013-06-26 腾讯科技(深圳)有限公司 一种用于进程间通信的方法及装置
CN106708825A (zh) * 2015-07-29 2017-05-24 腾讯科技(深圳)有限公司 一种数据文件处理方法及系统
CN109150930A (zh) * 2017-06-15 2019-01-04 北京金山云网络技术有限公司 配置信息加载方法及装置、业务处理方法及装置
CN109359005A (zh) * 2018-09-14 2019-02-19 厦门天锐科技股份有限公司 一种跨进程的数据采集处理方法
CN113297114A (zh) * 2021-05-21 2021-08-24 清创网御(合肥)科技有限公司 一种基于加密卡pcie独立io支持多进程、多线程的方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999537B (zh) * 2011-09-19 2017-01-18 阿里巴巴集团控股有限公司 一种数据迁移系统和方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117308B (zh) * 2010-01-06 2012-11-14 卓望数码技术(深圳)有限公司 一种数据处理方法和数据处理系统
CN101860532A (zh) * 2010-05-07 2010-10-13 深圳市共进电子有限公司 多进程配置文件的保存及加载方法
CN102385526A (zh) * 2011-11-16 2012-03-21 深圳市大赢家网络有限公司 在多进程之间共享股票数据的方法及装置
CN103176852A (zh) * 2011-12-22 2013-06-26 腾讯科技(深圳)有限公司 一种用于进程间通信的方法及装置
CN103176852B (zh) * 2011-12-22 2016-05-25 腾讯科技(深圳)有限公司 一种用于进程间通信的方法及装置
CN103064748A (zh) * 2013-01-05 2013-04-24 浪潮电子信息产业股份有限公司 一种Linux下处理多进程间通讯的方法
CN106708825A (zh) * 2015-07-29 2017-05-24 腾讯科技(深圳)有限公司 一种数据文件处理方法及系统
CN106708825B (zh) * 2015-07-29 2019-09-27 腾讯科技(深圳)有限公司 一种数据文件处理方法及系统
CN109150930A (zh) * 2017-06-15 2019-01-04 北京金山云网络技术有限公司 配置信息加载方法及装置、业务处理方法及装置
CN109150930B (zh) * 2017-06-15 2020-12-18 北京金山云网络技术有限公司 配置信息加载方法及装置、业务处理方法及装置
CN109359005A (zh) * 2018-09-14 2019-02-19 厦门天锐科技股份有限公司 一种跨进程的数据采集处理方法
CN109359005B (zh) * 2018-09-14 2022-04-19 厦门天锐科技股份有限公司 一种跨进程的数据采集处理方法
CN113297114A (zh) * 2021-05-21 2021-08-24 清创网御(合肥)科技有限公司 一种基于加密卡pcie独立io支持多进程、多线程的方法
CN113297114B (zh) * 2021-05-21 2022-12-06 清创网御(合肥)科技有限公司 一种基于加密卡pcie独立io支持多进程、多线程的方法

Also Published As

Publication number Publication date
CN101551808B (zh) 2011-04-13

Similar Documents

Publication Publication Date Title
CN101551808B (zh) 支持多进程的嵌入式的树型数据库技术
CN103020315B (zh) 一种基于主从分布式文件系统的海量小文件存储方法
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
CN101329685B (zh) 一种家庭网关上内存数据库的实现方法
CN102158546B (zh) 一种集群文件系统及其文件服务方法
CN105787093B (zh) 一种基于LSM-Tree结构的日志文件系统的构建方法
CN109271343B (zh) 一种应用于键值存储系统中的数据合并方法和装置
CN103023982B (zh) 一种云存储客户端的低延迟元数据访问方法
CN102331993B (zh) 分布式数据库的数据迁移方法和分布式数据库迁移系统
CN102184260B (zh) 一种云计算环境下的海量数据存取方法
US20130246693A1 (en) Flash-aware storage optimized for mobile and embedded dbms on nand flash memory
CN102567427B (zh) 一种对象数据处理方法及装置
KR20110032343A (ko) 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법
CN102831222A (zh) 一种基于重复数据删除的差量压缩方法
CN106202173B (zh) 一种文件仓库存储的智能排重方法及系统
CN110209528B (zh) 数据备份方法、装置、服务器以及存储介质
CN108021717B (zh) 一种轻量级嵌入式文件系统的实现方法
CN114281762B (zh) 一种日志存储加速方法、装置、设备及介质
CN103617097A (zh) 文件恢复方法及装置
AU2017340759B2 (en) Techniques for generating snapshots of datasets
CN103473258A (zh) 云存储文件系统
KR20160012388A (ko) 파일 단위 순서 모드 저널링 기법을 이용한 fsync 시스템 호출 처리 장치 및 방법
US8612390B2 (en) Lightweight caching of transaction log for sequential access
CN105183949A (zh) 一种铁路主数据的清洗方法及系统
CN103226592A (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