首页> 中国专利> 用于即时通讯系统中利用数据库存储层访问数据库的方法

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

摘要

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

著录项

  • 公开/公告号CN103425793A

    专利类型发明专利

  • 公开/公告日2013-12-04

    原文格式PDF

  • 申请/专利权人 五八同城信息技术有限公司;

    申请/专利号CN201310383572.8

  • 发明设计人 陈东;孙玄;

    申请日2013-08-28

  • 分类号

  • 代理机构北京律恒立业知识产权代理事务所(特殊普通合伙);

  • 代理人顾珊

  • 地址 300457 天津市滨海新区第一大街79号泰达MSD-C区-C3座2801房间

  • 入库时间 2024-02-19 21:23:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-01

    授权

    授权

  • 2013-12-25

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

    实质审查的生效

  • 2013-12-04

    公开

    公开

说明书

技术领域

本发明涉及即时通讯领域中服务器数据存储模块的设计,特别是一 种满足即时通讯系统利用数据库存储层的抽象统一数据存储接口的方 法。

背景技术

即时通讯系统中,几乎所有功能模块都会有访问数据库的需求。但 是出于安全性、维护性等多方面的考虑,不能让这些模块直接与数据库 交互,一般会提供一个专门的模块用来访问数据库,这个模块称作存储 层模块。功能模块在需要访问数据库时,先要使用系统自定义的协议向 存储层发送请求,存储层收到请求后,访问数据库并将结果返回给这些 模块。

目前的即时通讯系统中,对于每一种业务功能,一般会有多种对数 据库的访问需求。例如该功能可能要求先查询数据库中的表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)。

根据本发明的针对存储层的抽象统一的接口方法,使得在即时通讯 系统中的各种业务功能对数据库操作与业务本身无关,从而可以通过调 用这些接口可以处理所有的业务请求。因此,存储层不必再开发额外的 接口,从而降低了人力成本,同时模块代码量大幅减少,容易维护,也 可以提高模块的稳定性,降低了维护成本并提高功能模块和整个即时通 讯系统的稳定性和安全性。

另外,本发明的优势还在于开发新的功能时,数据库存储层只需在 配置解析模块中的配置文件中添加新的配置项即可,不必再为其编写新 的处理函数。实现了无需编码,甚至不需要重启服务就可以完成新业务 的添加,从而极大程度上提高了模块的稳定性和新业务的开发效率,并 且降低了模块的维护成本和开发成本。

结合这里披露的本发明的说明和实践,本发明的其他实施例对于本 领域技术人员都是易于想到和理解的。说明和实施例仅被认为是示例性 的,本发明的真正范围和主旨均由权利要求所限定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号