CN103425793B - 用于即时通讯系统中利用数据库存储层访问数据库的方法 - Google Patents

用于即时通讯系统中利用数据库存储层访问数据库的方法 Download PDF

Info

Publication number
CN103425793B
CN103425793B CN201310383572.8A CN201310383572A CN103425793B CN 103425793 B CN103425793 B CN 103425793B CN 201310383572 A CN201310383572 A CN 201310383572A CN 103425793 B CN103425793 B CN 103425793B
Authority
CN
China
Prior art keywords
request
module
data base
abstraction interface
database
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
CN201310383572.8A
Other languages
English (en)
Other versions
CN103425793A (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.)
Wu Ba Tongcheng Information Technology Co ltd
Original Assignee
Wu Ba Tongcheng Information Technology 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 Wu Ba Tongcheng Information Technology Co ltd filed Critical Wu Ba Tongcheng Information Technology Co ltd
Priority to CN201310383572.8A priority Critical patent/CN103425793B/zh
Publication of CN103425793A publication Critical patent/CN103425793A/zh
Application granted granted Critical
Publication of CN103425793B publication Critical patent/CN103425793B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明提供了一种用于即时通讯系统中利用数据库存储层访问数据库的方法,所述数据库存储层包含抽象接口模块、配置解析模块、结构体模块和应用接口模块,包括如下步骤:a)配置解析模块对所述数据库存储层进行初始化配置;b)接收来自上游应用的业务模块发出的对数据库操作的请求,所述应用接口模块对该请求进行解析,对该请求进行解析和配置;c)调用所述结构体模块查找其中与该请求相对应的结构体;d)利用所述抽象接口模块基于所查找的结构体将该请求构造出符合所述数据库操作的抽象接口规范的请求,并发送给所述数据库进行相应操作;e)将所述数据库返回的操作结果通过所述应用接口模块进行组装后,返回给所述上游应用中的发出该请求的业务模块。

Description

用于即时通讯系统中利用数据库存储层访问数据库的方法
技术领域
本发明涉及即时通讯领域中服务器数据存储模块的设计,特别是一种满足即时通讯系统利用数据库存储层的抽象统一数据存储接口的方法。
背景技术
即时通讯系统中,几乎所有功能模块都会有访问数据库的需求。但是出于安全性、维护性等多方面的考虑,不能让这些模块直接与数据库交互,一般会提供一个专门的模块用来访问数据库,这个模块称作存储层模块。功能模块在需要访问数据库时,先要使用系统自定义的协议向存储层发送请求,存储层收到请求后,访问数据库并将结果返回给这些模块。
目前的即时通讯系统中,对于每一种业务功能,一般会有多种对数据库的访问需求。例如该功能可能要求先查询数据库中的表A,再向数据库中的表B中插入一条记录等等。这样就需要存储层提供两个单独的接口来处理该业务功能的每种操作请求。由于接口都与各种业务类型和特征紧密相关,所以这些接口很难被不同的业务功能所复用。因此,在每次针对即时通讯系统开发新的功能时,都需要开发新的单独的存储层接口以满足新业务功能的访问需要。这样会导致存储层越来越庞大,代码越来越难维护,同时也增加了系统的不稳定因素。
因此,需要能针对存储层开发出一套抽象统一的接口,使得各种业务功能对数据库操作与业务本身无关,从而可以通过调用这些接口可以处理所有的业务请求,以降低维护成本并提高功能模块和整个即时通讯系统的稳定性和安全性。
发明内容
本发明的目的是提供一种用于即时通讯系统中利用数据库存储层访问数据库的方法,所述数据库存储层包含抽象接口模块、配置解析模块、结构体模块和应用接口模块,所述方法包括如下步骤:a)所述配置解析模块对所述数据库存储层进行初始化配置;b)接收来自上游应用的业务模块发出的对数据库操作的请求,所述应用接口模块对该请求进行解析,对该请求进行解析和配置;c)调用所述结构体模块查找其中与该请求相对应的结构体;d)利用所述抽象接口模块基于所查找的结构体将该请求构造出符合所述数据库操作的抽象接口规范的请求,并发送给所述数据库进行相应操作;e)将所述数据库返回的操作结果通过所述应用接口模块进行组装后,返回给所述上游应用中的发出该请求的业务模块。
优选地,所述步骤a)中的初始化配置包括解析和配置上游应用中的业务模块发出操作数据库的请求后应该交给所述抽象接口模块中的哪个接口去处理,响应的抽象接口应该如何处理该请求,以及处理完成后该如何将结果返回给上游应用。
优选地,所述步骤b)中根据所述请求中的命令码对所述请求进行解析和配置。
优选地,所述步骤b)中所述应用接口模块基于特定的通讯协议来接收来自上游应用的业务模块的请求。
优选地,所述抽象接口模块包括至少一种对数据库进行操作的抽象接口类型。
优选地,所述抽象接口类型包括对数据库进行增、删、改、查四种操作类型。
优选地,所述结构体模块包括至少一个结构体,所述结构体与所述每种抽象接口类型相对应。
优选地,所述步骤d)中使用sql语句或所述数据库提供的API的参数来构造的访问数据库的请求。
优选地,所述步骤c)中以查表的方式查找所述结构体模块中与该请求相对应的结构体。
优选地,所述配置解析模块以包含多个配置项的配置文件的形式实现。
根据本发明的针对存储层的抽象统一的接口方法,使得在即时通讯系统中的各种业务功能对数据库操作与业务本身无关,从而可以通过调用这些接口可以处理所有的业务请求。因此,存储层不必再开发额外的接口,从而降低了人力成本,同时模块代码量大幅减少,容易维护,也可以提高模块的稳定性,降低了维护成本并提高功能模块和整个即时通讯系统的稳定性和安全性。
附图说明
参考随附的附图,本发明更多的目的、功能和优点将通过本发明实施方式的如下描述得以阐明,其中:
图1示意性地示出了根据本发明的用于即时通讯系统中以抽象统一接口访问数据库的系统框图;
图2示出了根据本发明的利用统一抽象接口访问数据库的方法流程图。
具体实施方式
通过参考示范性实施例,本发明的目的和功能以及用于实现这些目的和功能的方法将得以阐明。然而,本发明并不受限于以下所公开的示范性实施例;可以通过不同形式来对其加以实现。说明书的实质仅仅是帮助相关领域技术人员综合理解本发明的具体细节。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
本发明提供了一种抽象即时通讯系统存储层服务接口的方法,使存储服务只对外提供几个原子接口,这些原子接口功能单一,只能与数据库进行一次简单交互。服务通过原子接口的组合调用完成上游应用的一次业务请求。上游应用以命令加参数的形式向服务发送请求。针对每条命令,服务都有相应的配置项来指明处理请求需要调用的原子接口(可以是多个)、如何解析命令的参数、接口要对数据库进行的操作,以及要返回给调用方的数据定义等。服务依照上述配置完成请求的处理及反馈。
图1示意性地示出了根据本发明的用于即时通讯系统中利用数据库存储层以抽象统一接口访问数据库的系统框图。用于实现根据本发明的以抽象统一接口访问数据库的系统100包括上游应用110、数据库存储层120以及数据库130。上游应用110包含至少一个业务模块,图1中仅示意性地示出了业务模块111a、业务模块111b和业务模块111c。业务模块与数据库存储层120进行通讯,发出请求访问数据库130,数据库130返回结果后再经数据库存储层120返回给相应的业务模块。
业务模块可以包括即时通信中的各种要求数据库操作的业务。以即时通讯中常用的添加好友关系为例,当用户发出添加好友的请求时,业务模块首先要向数据库存储层120发送查询数据库130的请求,在数据库130中查询所添加的人是否已经是用户的好友,如果数据库存储层120返回给业务模块两个人不是好友的查询结果,则业务模块向数据库存储层120发送插入记录的请求,数据库130应用户请求存储两个人的好友关系,此时完成了业务模块添加好友的操作。
数据库130可以包含至少一个数据库。图1中仅示意性地示出了第一数据库131、第二数据库132和第n数据库139。根据本发明的系统和方法可应用于具有不同操作接口规范的数据库。
数据库存储层120包含抽象接口模块121、配置解析模块122、结构体模块123和应用接口模块124。
抽象接口模块121定义了以何种抽象的原则决定模块对外提供的接口,以保证仅以有限数量的接口类型即可以满足所有类型的业务对数据库的访问请求。抽象接口模块121包括至少一种对数据库进行操作的抽象接口类型。在即时通讯系统中,对数据库的操作一般包括对数据库中记录的插入、删除、更新和查询。根据本发明抽象接口模块121因此将数据库存储层提供的接口抽象成增、删、改、查四个接口,即对数据库进行增、删、改、查四种操作类型,对应关系如下表1所示。在实际应用中,这四个接口可以基本覆盖所有的业务模块对数据库访问的请求。可以理解的是,还可以根据实际业务模块的更多需要增加相应的数据库操作类型以及其对应的抽象接口类型。
编号 数据库操作类型 抽象接口类型
1 插入记录
2 删除记录
3 更新记录
4 查询记录
表1数据库操作类型与数据库存储层提供的抽象接口的对应关系
配置解析模块122的作用是解析上游应用中的业务模块从发出操作数据库的请求直到数据库返回结果的过程。具体地,用于解析和配置上游应用中的业务模块发出操作数据库的请求后应该交给抽象接口模块中的哪个接口去处理,响应的抽象接口应该如何处理该请求,以及处理完成后该如何将结果返回给上游等等。根据本发明的一个优选实施例,配置解析模块122只需在系统100启动时进行一次性配置即可。
配置解析模块122可以以配置文件的形式实现,配置文件可以包含多个配置项,配置项的示例及其具体含义如下表2所示。
编号 配置项 具体操作含义
1 命令码 用于标识一个上游应用的请求
2 要连接的数据库
3 要操作的表
4 操作 对表进行的操作(增、删、改、查)
5 查询条件 如何构造数据库查询
6 查询条件的关系 各个查询条件之间的关系
7 新值 更新(改)操作或插入(增)操作时需要
8 返回内容 对于查询,配置结果中要返回的数据
9 返回操作结果 成功或失败的操作结果
表2配置解析模块中的配置文件中配置项及其含义
优选地,根据本发明的配置解析模块122还可以支持批量操作的配置,例如批量的删除和查询,对于查询操作也可以进行例如“sort”(排序)和“limit”(限制返回记录数上限)等配置。
结构体模块123是数据库存储层120为每种抽象接口定义一与其对应的结构体集合,每个结构体用来描述每种抽象接口如何处理请求,然后依次解析配置解析模块中配置文件中的请求的配置,根据请求类型创建相应的结构体并填写内容。
例如,处理查询请求的结构体的示例性配置如下所示:
在为每种抽象接口类型定义好与其对应的结构体后,可以将所有的结构体构成结构体模块123,并制作成索引的形式。对于来自上游应用中的业务模块的请求,可以用请求中的“命令码”配置项作为索引去结构体模块123中查找相应的结构体。这样当有请求到达时,可以根据“命令码”作为索引从结构体模块123中找到相应的结构体,调用对应的接口处理请求。结构体模块123方便了来自业务模块的请求解析,以查表的方式即可迅速找到相应的结构体以及对应的接口处理请求,而无需每次都重新解析。
根据查找到的结构体,抽象接口模块121再根据结构体的内容来将该请求构造为数据库的访问请求,进而访问数据库,并组装数据库的返回结果。对于不同的数据库构造出的请求也不一样。所构造的访问数据库请求可以使用sql语句,也可以使用数据库提供的API的参数来生成。根据本发明的一个优选实施例,构造数据库的访问请求和组装数据库的返回结果是在抽象接口模块121中仅使用如表1所示的四种抽象接口方式进行的。
应用接口模块124用于接口上游应用中的各个业务模块和数据库存储层之间的通讯。数据库存储层和上游应用之间通常需要定义一套特定的协议来支持双方之间的通讯。协议的形式可以不受限制。上游请求首先需要包含命令码,其次还要有其他数据参数。例如当要插入一条记录时数据参数需要包含要插入的各个列的值。
例如,当上游请求为查询请求数据结构时的命令码如下:
应用接口模块124在接收到请求后,根据命令码对该请求进行解析和配置。该请求在配置后经过读取结构体模块中相对应的规则,并由抽象接口模块121构造出符合抽象接口规范的请求后,发送给数据库进行相应操作。待数据库返回相应的操作结果后,应用接口模块124再根据与上游应用110之间的通讯协议将操作结果重新组装然后返回给发出请求的对应的业务模块。
图2示出了根据本发明的利用统一抽象接口访问数据库的方法流程图。如图2所示,首先,数据库存储层120进行初始化,数据库存储层120中的配置解析模块对数据库存储层120进行配置(205),用于解析和配置上游应用中的业务模块发出操作数据库的请求后应该交给抽象接口模块中的哪个接口去处理,响应的抽象接口应该如何处理该请求,以及处理完成后该如何将结果返回给上游等等。
当接到来自上游应用110的业务模块发出的对数据库操作的请求时(210),数据库存储层120中的应用接口模块124对该请求进行解析(215),即根据请求中的命令码对该请求进行解析和配置。该请求在配置后调用结构体模块123查找其中与该请求相对应的结构体(220),然后由抽象接口模块121基于所查找的结构体将该请求构造出符合数据库操作的抽象接口规范的请求(225)后,发送给数据库130进行相应操作(230)。数据库130应请求进行操作后,返回操作结果给数据库存储层120(235)。返回后的操作结果经过数据库存储层120中的应用接口模块124根据通讯协议进行组装(240),再返回给上游应用110中的业务模块相应的数据库操作结果(245)。
根据本发明的针对存储层的抽象统一的接口方法,使得在即时通讯系统中的各种业务功能对数据库操作与业务本身无关,从而可以通过调用这些接口可以处理所有的业务请求。因此,存储层不必再开发额外的接口,从而降低了人力成本,同时模块代码量大幅减少,容易维护,也可以提高模块的稳定性,降低了维护成本并提高功能模块和整个即时通讯系统的稳定性和安全性。
另外,本发明的优势还在于开发新的功能时,数据库存储层只需在配置解析模块中的配置文件中添加新的配置项即可,不必再为其编写新的处理函数。实现了无需编码,甚至不需要重启服务就可以完成新业务的添加,从而极大程度上提高了模块的稳定性和新业务的开发效率,并且降低了模块的维护成本和开发成本。
结合这里披露的本发明的说明和实践,本发明的其他实施例对于本领域技术人员都是易于想到和理解的。说明和实施例仅被认为是示例性的,本发明的真正范围和主旨均由权利要求所限定。

Claims (10)

1.一种用于即时通讯系统中利用数据库存储层访问数据库的方法,所述数据库存储层包含抽象接口模块、配置解析模块、结构体模块和应用接口模块,所述方法包括如下步骤:
a)所述配置解析模块对所述数据库存储层进行初始化配置;
b)接收来自上游应用的业务模块发出的对数据库操作的请求,所述应用接口模块对该请求进行解析和配置;
c)调用所述结构体模块查找其中与该请求相对应的结构体;
d)利用所述抽象接口模块基于所查找的结构体将该请求构造出符合所述数据库操作的抽象接口规范的请求,并发送给所述数据库进行相应操作;
e)将所述数据库返回的操作结果通过所述应用接口模块进行组装后,返回给所述上游应用中的发出该请求的业务模块。
2.如权利要求1所述的方法,其中所述步骤a)中的初始化配置包括解析和配置上游应用中的业务模块发出操作数据库的请求后应该交给所述抽象接口模块中的哪个接口去处理,响应的抽象接口应该如何处理该请求,以及处理完成后该如何将结果返回给上游应用。
3.如权利要求1所述的方法,其中所述步骤b)中根据所述请求中的命令码对所述请求进行解析和配置。
4.如权利要求1所述的方法,其中所述步骤b)中所述应用接口模块基于特定的通讯协议来接收来自上游应用的业务模块的请求。
5.如权利要求1所述的方法,其中所述抽象接口模块包括至少一种对数据库进行操作的抽象接口类型。
6.如权利要求5所述的方法,其中所述抽象接口类型包括对数据库进行增、删、改、查四种操作类型。
7.如权利要求5所述的方法,其中所述结构体模块包括至少一个结构体,每个所述结构体与每种抽象接口类型相对应。
8.如权利要求5所述的方法,构造的访问数据库请求使用所述步骤d)中所述数据库提供的API的参数来生成,或所述构造的访问数据库请求使用sql语句生成。
9.如权利要求1所述的方法,其中所述步骤c)中以查表的方式查找所述结构体模块中与该请求相对应的结构体。
10.如权利要求1所述的方法,其中所述配置解析模块以包含多个配置项的配置文件的形式实现。
CN201310383572.8A 2013-08-28 2013-08-28 用于即时通讯系统中利用数据库存储层访问数据库的方法 Active CN103425793B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310383572.8A CN103425793B (zh) 2013-08-28 2013-08-28 用于即时通讯系统中利用数据库存储层访问数据库的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310383572.8A CN103425793B (zh) 2013-08-28 2013-08-28 用于即时通讯系统中利用数据库存储层访问数据库的方法

Publications (2)

Publication Number Publication Date
CN103425793A CN103425793A (zh) 2013-12-04
CN103425793B true CN103425793B (zh) 2017-03-01

Family

ID=49650530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310383572.8A Active CN103425793B (zh) 2013-08-28 2013-08-28 用于即时通讯系统中利用数据库存储层访问数据库的方法

Country Status (1)

Country Link
CN (1) CN103425793B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109327499B (zh) * 2018-08-01 2022-01-28 平安科技(深圳)有限公司 业务接口的管理方法及装置、存储介质、终端
CN110489465A (zh) * 2018-09-28 2019-11-22 北京数聚鑫云信息技术有限公司 一种数据库访问方法和装置
CN109635558B (zh) * 2018-11-28 2021-05-28 天津字节跳动科技有限公司 访问控制方法、装置和系统
CN109670089A (zh) * 2018-12-29 2019-04-23 颖投信息科技(上海)有限公司 知识图谱系统及其图服务器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129086A (en) * 1988-11-29 1992-07-07 International Business Machines Corporation System and method for intercommunicating between applications and a database manager
EP0809198A2 (en) * 1996-05-22 1997-11-26 Wang Laboratories, Inc. Multiple database access server for application programs
US5752027A (en) * 1994-11-30 1998-05-12 Dun & Bradstreet Software Services, Inc. Apparatus and process for creating and accessing a database centric object
CN1351299A (zh) * 2000-10-28 2002-05-29 深圳市中兴通讯股份有限公司 一种访问数据库的方法及装置
CN101339559A (zh) * 2008-07-18 2009-01-07 北京航空航天大学 一种数据持久化实现方法
CN102314375A (zh) * 2011-03-18 2012-01-11 北京神州数码思特奇信息技术股份有限公司 一种异构数据库存储统一接口和数据库访问方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129086A (en) * 1988-11-29 1992-07-07 International Business Machines Corporation System and method for intercommunicating between applications and a database manager
US5752027A (en) * 1994-11-30 1998-05-12 Dun & Bradstreet Software Services, Inc. Apparatus and process for creating and accessing a database centric object
EP0809198A2 (en) * 1996-05-22 1997-11-26 Wang Laboratories, Inc. Multiple database access server for application programs
CN1351299A (zh) * 2000-10-28 2002-05-29 深圳市中兴通讯股份有限公司 一种访问数据库的方法及装置
CN101339559A (zh) * 2008-07-18 2009-01-07 北京航空航天大学 一种数据持久化实现方法
CN102314375A (zh) * 2011-03-18 2012-01-11 北京神州数码思特奇信息技术股份有限公司 一种异构数据库存储统一接口和数据库访问方法

Also Published As

Publication number Publication date
CN103425793A (zh) 2013-12-04

Similar Documents

Publication Publication Date Title
CN104573115B (zh) 支持多类型数据库操作的集成接口的实现方法及系统
CN102497454B (zh) 一种在应用服务平台系统中对应用进行灰度发布的方法
CN107679071B (zh) 一种面向关系数据库的通用数据服务定制化封装方法
CN103425793B (zh) 用于即时通讯系统中利用数据库存储层访问数据库的方法
CN110083650A (zh) 一种基于元数据自发现的数据查询接口自动生成方法及系统
CN103164270A (zh) java 系统应用程序编程接口调用方法及系统
CN105808776A (zh) 一种分布式数据库的数据管理系统及方法
CN107943453B (zh) 一种实现运维系统自定义计划任务的方法及系统
CN103870555A (zh) Spring data JPA实现动态查询的方法
WO2022257390A1 (zh) 数据处理方法、服务器及存储介质
CN113434910A (zh) 一种业务数据上链方法及装置
CN105868196A (zh) 一种服务器端工业数据报表生成方法
CN106202254A (zh) 一种查询方法及数据查询系统
CN104243565A (zh) 获取配置数据的方法和装置
CN105868170A (zh) 一种服务器端工业数据报表生成方法
CN114218266A (zh) 一种数据查询方法、装置、电子设备和存储介质
CN102103606A (zh) 一种在手机客户端上实现高级检索商品的技术
CN104463619A (zh) 基于ldap的互联网产品目录销售系统及控制方法
US8694559B2 (en) Using database content for multiple business data systems connected to one database
CN101840427A (zh) 数据处理的方法和装置
CN101458628A (zh) 一种程序版本管理方法
CN109117152B (zh) 服务生成系统及方法
CN111814020A (zh) 一种数据的获取方法和装置
CN106506661A (zh) 一种动态返回数据的方法、服务端及系统
CN107220327A (zh) 基于MongoDB的数据查询方法及系统、服务终端、存储器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant