CN103425793A - 用于即时通讯***中利用数据库存储层访问数据库的方法 - Google Patents
用于即时通讯***中利用数据库存储层访问数据库的方法 Download PDFInfo
- Publication number
- CN103425793A CN103425793A CN2013103835728A CN201310383572A CN103425793A CN 103425793 A CN103425793 A CN 103425793A CN 2013103835728 A CN2013103835728 A CN 2013103835728A CN 201310383572 A CN201310383572 A CN 201310383572A CN 103425793 A CN103425793 A CN 103425793A
- Authority
- CN
- China
- Prior art keywords
- database
- request
- module
- abstraction interface
- upstream
- 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
Links
Images
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包括至少一种对数据库进行操作的抽象接口类型。在即时通讯***中,对数据库的操作一般包括对数据库中记录的***、删除、更新和查询。根据本发明抽象接口模块124因此将数据库存储层提供的接口抽象成增、删、改、查四个接口,即对数据库进行增、删、改、查四种操作类型,对应关系如下表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)中使用sql语句或所述数据库提供的API的参数来构造的访问数据库的请求。
9.如权利要求1所述的方法,其中所述步骤c)中以查表的方式查找所述结构体模块中与该请求相对应的结构体。
10.如权利要求1所述的方法,其中所述配置解析模块以包含多个配置项的配置文件的形式实现。
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 true CN103425793A (zh) | 2013-12-04 |
CN103425793B 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109327499A (zh) * | 2018-08-01 | 2019-02-12 | 平安科技(深圳)有限公司 | 业务接口的管理方法及装置、存储介质、终端 |
CN109635558A (zh) * | 2018-11-28 | 2019-04-16 | 天津字节跳动科技有限公司 | 访问控制方法、装置和*** |
CN109670089A (zh) * | 2018-12-29 | 2019-04-23 | 颖投信息科技(上海)有限公司 | 知识图谱***及其图服务器 |
CN110489465A (zh) * | 2018-09-28 | 2019-11-22 | 北京数聚鑫云信息技术有限公司 | 一种数据库访问方法和装置 |
Citations (6)
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 | 北京神州数码思特奇信息技术股份有限公司 | 一种异构数据库存储统一接口和数据库访问方法 |
-
2013
- 2013-08-28 CN CN201310383572.8A patent/CN103425793B/zh active Active
Patent Citations (6)
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 | 北京神州数码思特奇信息技术股份有限公司 | 一种异构数据库存储统一接口和数据库访问方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109327499A (zh) * | 2018-08-01 | 2019-02-12 | 平安科技(深圳)有限公司 | 业务接口的管理方法及装置、存储介质、终端 |
CN109327499B (zh) * | 2018-08-01 | 2022-01-28 | 平安科技(深圳)有限公司 | 业务接口的管理方法及装置、存储介质、终端 |
CN110489465A (zh) * | 2018-09-28 | 2019-11-22 | 北京数聚鑫云信息技术有限公司 | 一种数据库访问方法和装置 |
CN109635558A (zh) * | 2018-11-28 | 2019-04-16 | 天津字节跳动科技有限公司 | 访问控制方法、装置和*** |
CN109670089A (zh) * | 2018-12-29 | 2019-04-23 | 颖投信息科技(上海)有限公司 | 知识图谱***及其图服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN103425793B (zh) | 2017-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104573115B (zh) | 支持多类型数据库操作的集成接口的实现方法及*** | |
CN104598840A (zh) | 基于Http协议的多数据源的数据处理方法及*** | |
US20210250218A1 (en) | Abstraction layer for streaming data sources | |
CN103425793A (zh) | 用于即时通讯***中利用数据库存储层访问数据库的方法 | |
CN110457059A (zh) | 一种基于redis的序列号生成方法及装置 | |
CN104750872A (zh) | 一种业务对象的查询方法及装置 | |
WO2016191995A1 (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
CN108319608A (zh) | 访问日志存储查询的方法、装置及*** | |
CN103336782A (zh) | 一种关系型分布式数据库*** | |
US20090132607A1 (en) | Techniques for log file processing | |
CN113077260A (zh) | 基于区块链的数据访问方法、装置及电子设备 | |
US8005844B2 (en) | On-line organization of data sets | |
CN111814020A (zh) | 一种数据的获取方法和装置 | |
CN109117152B (zh) | 服务生成***及方法 | |
CN102193979B (zh) | 图形数据库非联机事务中查询数据的控制方法 | |
CN112162731B (zh) | 数据扩展方法、装置、存储介质及电子装置 | |
CN101430706B (zh) | 对象关系映射中复杂对象的子对象验权方法、***及设备 | |
US20210141791A1 (en) | Method and system for generating a hybrid data model | |
CN114090530A (zh) | 分布式架构下的日志汇总查询方法及装置 | |
CN115017185A (zh) | 一种数据处理方法、装置及存储介质 | |
CN107220327A (zh) | 基于MongoDB的数据查询方法及***、服务终端、存储器 | |
CN101159775B (zh) | 硬件模块测试***及方法 | |
CN113449003B (zh) | 信息查询的方法、装置、电子设备及介质 | |
CN104239576A (zh) | 查找HBase表列值中所有行的方法和装置 | |
CN104104704A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |