发明内容
有鉴于此,本发明提供一种处理数据的方法和装置,具有处理效率高、扩展性好的优点。
为实现上述目的,根据本发明的一个方面,提供了一种处理数据的方法。
本发明的处理数据的方法包括:根据多个集群中的多个业务数据库建立MariaDB报表库,其中所述多个业务数据库具有相同的表结构;建立所述MariaDB报表库和报表应用之间的数据源;根据接收到的查询所述多个集群中的单个集群的第一结构化查询语言语句,确定查询所述多个集群中的所有集群的总结构化查询语言语句;根据所述总结构化查询语言语句通过所述数据源进行查询,得到目标数据。
可选地,所述根据接收到的查询所述多个集群中的单个集群的第一结构化查询语言语句,确定查询所述多个集群中的所有集群的总结构化查询语言语句的步骤包括:获取所有集群的名称;对接收到的所述第一结构化查询语言语句进行集群名称通配,得到查询所述多个集群中其他集群的第二结构化查询语言语句;拼接所述第一结构化查询语言语句和所有的所述第二结构化查询语言语句,得到所述总结构化查询语言语句。
可选地,所述获取所有集群的名称的步骤包括:获取记录集群与业务数据库之间映射关系的映射文件;从所述映射文件中提取所述所有集群的名称。
可选地,通过***工具从所述映射文件中找到所述所有集群的名称。
根据本发明的另一方面,提供了一种处理数据的装置。
本发明的处理数据的装置包括:第一建立模块,用于根据所述多个集群中的多个业务数据库建立MariaDB报表库,其中所述多个业务数据库具有相同的表结构;第二建立模块,用于建立所述MariaDB报表库和报表应用之间的数据源;确定模块,用于根据接收到的查询所述多个集群中的单个集群的第一结构化查询语言语句,确定查询所述多个集群中的所有集群的总结构化查询语言语句;查询模块,用于根据所述总结构化查询语言语句通过所述数据源进行查询,得到目标数据。
可选地,所述确定模块还用于:获取所有集群的名称;对接收到的所述第一结构化查询语言语句进行集群名称通配,得到针对查询所述多个集群中其他集群的第二结构化查询语言语句;拼接所述第一结构化查询语言语句和所有的所述第二结构化查询语言语句,得到所述总结构化查询语言语句。
可选地,所述确定模块还用于:获取记录集群与业务数据库之间映射关系的映射文件;从所述映射文件中提取所述所有集群的名称。
可选地,所述确定模块还用于:通过***工具从所述映射文件中找到所述所有集群的名称。
根据本发明的技术方案,通过建立MariaDB报表库,建立的是仅一个数据源,效率高;条件查询时先过滤后来进行汇总;集群扩展时,仅需修改映射文件,无需修改代码。
具体实施方式
以下结合附图对本发明的示范性实施方式做出说明,其中包括本发明实施方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施方式做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施方式的处理数据的方法的基本步骤的示意图。如图1所示,该实施方式的处理数据的方法主要包括如下的步骤A至步骤D。
步骤A:根据多个集群中的多个业务数据库建立MariaDB报表库,其中多个业务数据库具有相同的表结构,例如所有的业务数据库均采用传统的Mysql。
步骤B:建立MariaDB报表库和报表应用之间的数据源。
MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。利用MariaDB的多源复制技术,通过编写复制的脚本程序可以直接把各个业务数据库的数据复制到一台MariaDB数据库服务器上。该复制过程是实时同步复制,当业务数据库添加表或者添加数据时MariaDB报表库都会自动同步更新,以使数据保持一致。
步骤C:根据接收到的查询多个集群中的单个集群的第一结构化查询语言语句,确定查询多个集群中的所有集群的总结构化查询语言语句。
步骤D:根据总结构化查询语言语句通过数据源进行查询,得到目标数据。
在本发明实施方式的处理数据的方法中,步骤C可以具体包括如下的步骤C1至步骤C3。
步骤C1:获取所有集群的名称。具体地,可以首先获取记录集群与业务数据库之间映射关系的映射文件;然后从映射文件中提取所有集群的名称。其中,可以通过Mybatis***工具从映射文件中找到所有集群的名称。需要说明的是,本发明实施方式的处理数据的方法也可以通过其他方式获取集群名称的集合。
步骤C2:对接收到的第一结构化查询语言语句进行集群名称通配,得到查询多个集群中其他集群的第二结构化查询语言语句。
步骤C3:拼接第一结构化查询语言语句和所有的第二结构化查询语言语句,得到总结构化查询语言语句。
为使本领域技术人员更好地理解步骤C的过程,现列举一个具体实施例如下:假设有db1、db2和db3这三个业务数据库,假设用户编写了针对其中一个集群db1的第一结构化查询语言语句“select*from db1.user”。首先获得所有集群的名称的集合{db1,db2,db3};然后对“select*from db1.user”这一sql语句进行集群名称通配,写出“select*fromdb2.user”和“select*from db3.user”;最后将这些sql语句拼接起来,得到针对所有集群的sql语句“select*from db1.user union select*from db2.user union select*fromdb3.user”。
由上可知,本发明实施例的处理数据的方法中通过采用MariaDB业务库实现了数据汇总,使得查询各个集群的数据可以通过一个数据源连接来完成,提高了数据处理效率;按条件查询时先过滤后汇总,也提高了处理数据效率,尤其适用于数据量大的情景;以及,当集群有增减时,MariaDB业务库会自动更新,无需手动修改代码,扩展性良好。
图2是根据本发明实施方式的处理数据的装置的主要模块的示意图。如图2所示,该实施方式的处理数据的装置20主要包括第一建立模块21、第二建立模块22、确定模块23以及查询模块24。
第一建立模块21用于根据多个集群中的多个业务数据库建立MariaDB报表库,其中多个业务数据库具有相同的表结构。第二建立模块22用于建立MariaDB报表库和报表应用之间的数据源。确定模块23用于根据接收到的查询多个集群中的单个集群的第一结构化查询语言语句,确定查询多个集群中的所有集群的总结构化查询语言语句。查询模块24用于根据总结构化查询语言语句通过数据源进行查询,得到目标数据。
可选地,确定模块23还用于:获取所有集群的名称;对接收到的第一结构化查询语言语句进行集群名称通配,得到针对查询多个集群中其他集群的第二结构化查询语言语句;拼接第一结构化查询语言语句和所有的第二结构化查询语言语句,得到总结构化查询语言语句。
可选地,确定模块23还用于:获取记录集群与业务数据库之间映射关系的映射文件;从映射文件中提取所有集群的名称。
可选地,确定模块23还用于:通过***工具从映射文件中找到所有集群的名称。
由上可知,本发明实施例的处理数据的装置中通过采用MariaDB业务库实现了数据汇总,使得查询各个集群的数据可以通过一个数据源连接来完成,提高了数据处理效率;按条件查询时先过滤后汇总,也提高了处理数据效率,尤其适用于数据量大的情景;以及,当集群有增减时,MariaDB业务库会自动更新,无需手动修改代码,扩展性良好。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。