一种在驱动中直连分片实现分布式数据库数据导入的高性能方法技术

技术编号:15329608 阅读:128 留言:0更新日期:2017-05-16 13:14
本发明专利技术公开了一种驱动中直连分片实现分布式数据库数据导入的高性能方法。其方法阐述了一个算法实现,包括在数据库驱动中集成分片算法,绕开主控节点直接连接各分片节点;对各分片待执行SQL建立阻塞队列,对SQL重新规划批次,按批次提交到分片节点,写入数据;提供性能优先与数据安全优先两种分片同步方式。本发明专利技术阐述的方法通过绕开传统的主控节点,直连分片节点,将现有的单步执行SQL转换成并行在各分片中按批次执行SQL,整个过程减少了中间处理、传输环节,大大减轻了网络负载,提高了网络利用率,充分地挖掘利用了各分布式节点的物理资源,从而在分布式数据库数据导入的场景中显著提升了导入性能。

A high performance method for directly distributing data in drive to realize data import of distributed database

The invention discloses a high-performance method for realizing direct distribution of data in a distributed database by direct slicing in a driver. The method describes the implementation of an algorithm, including integrated slice algorithm in database driven, direct connection of each slice node bypassing the master node; for each slice to execute SQL to establish a blocking queue, re planning the batch of SQL, according to the batch submitted to the split node, write data; provide performance priority and data security priority two piecewise synchronous mode. The method by bypassing the master node of the traditional direct slice node, the existing single step SQL into parallel in each slice in batches according to the implementation of SQL, the whole process reduces the processing and transmission of intermediate links, reduce network load, improve the network utilization rate, fully exploit the the physical resources of each distributed node, resulting in the introduction of distributed database data in the scene can significantly improve the performance of import.

【技术实现步骤摘要】
一种在驱动中直连分片实现分布式数据库数据导入的高性能方法
本专利技术涉及数据库

技术介绍
数据库在备份、恢复、迁移等维护操作中,导入数据是一个常见的操作。分布式数据库一般应用于海量数据的场景,导入数据耗时往往很长。导入数据的性能,在生产环境中就尤为重要。导入数据的使用场景与正常使用的场景有所不同,它是一次性的,如失败可重做的,数据库一般处于低负载状态,各分片状态是良好而无显著差异的,各分片的SQL执行是相互独立的。利用这种场景的一些特征进行优化,是有可能获得一些针对性的性能提升。
技术实现思路
本专利技术阐述了一个算法实现,可以在数据导入的场景中显著提升导入性能。算法有如下特征:1、在数据库驱动中连接分布式数据库的主控节点,获取数据库的分片配置,冗余副本,分片规则等信息;2、在数据库驱动中集成分片算法,绕开主控节点直接连接各分片节点;3、对各分片待执行SQL建立阻塞队列。对SQL重新规划批次,按批提交到分片节点,写入数据;4、各分片同步方式提供两种选择:一:性能优先,以最先完成SQL执行的分片速度控制整体事务进度;二:数据安全优先,以所有分片完成SQL执行为准控制整体事务进度。本专利技术带来的性能提升主要来自两方面:一,绕开了主控节点,将导入数据的应用系统直连数据库分片节点,减少了一个中间传递步骤,去除了一个网络延迟环节,还减少了50%的网络流量,对性能提升效果是显著的;二,按批次提交SQL。算法在驱动中将SQL缓存到各分片的待执行阻塞队列中,在分片执行完成后立即组织下一批次SQL执行,在性能优先的模式下无需等待其他分片的完成,这可以将每个分片的性能潜力最大化的压榨出来。附图说明图1为本专利技术工作流程图。图2为本专利技术的工作流程示意图。具体实施方式本专利技术的具体实施是通过改造原有数据库的JDBC驱动实现。具体改动由如下步骤:1、继承原JDBCConnection对象,在构造函数中实现:a)调用父构造函数完成既有的创建操作;b)在父构造函数完成后,驱动与分布式数据库的主控节点已建立连接,使用恰当的管理SQL命令读取数据库的分片配置,冗余副本,分片规则等信息;c)逐一建立与各分片节点的数据库连接;d)为每个分片节点的数据库连接创建一个有界阻塞队列,其元素为Runnable类型;e)为每个有界阻塞队列创建一个工作线程;f)启动每个工作线程。工作线程从队列中取Runnable类型的对象:如有,检测对象是否是停止运行命令的实例:如是,退出线程运行,否则,运行这个Runnable对象;如队列为空,则线程阻塞,等待唤醒。2、在此Connection对象的执行SQL方法中实现:a)确定待执行SQL是否是可处理的类型。本专利技术确定的方法对SQL的最低要求是各分片SQL执行应相互独立,不能有跨节点计算。数据导入场景使用Insertinto类型的SQL是满足的。这是本专利技术的算法所主要针对的场景,但事实上应用场景不限于此,只要能保证无需跨节点计算,即便是多表join或子查询类型的复杂SQL也能支持。这需要根据分片上的数据库表信息结合SQL语法分析确定;b)对不能执行的SQL,将SQL发送到数据库主控节点执行,方法结束返回;c)对可以执行的SQL,创建一个分片节点连接到Runnable对象的映射;d)使用集成的分片算法,遍历每条SQL。对每条SQL:创建一个Runnable对象,此对象携带了SQL和SQL执行的分片连接;3、在全局事务管理器的同步方法中实现:a)根据工作模式(性能优先或数据安全优先),确定线程同步的计数值。性能优先模式取值为1,数据安全优先取值为分片数。此计数值是原子整数对象;b)遍历c)中所述映射的每个条目:按分片节点连接确定分片对应的SQL队列,将Runnable对象推到队列中;此前因队列空而阻塞的工作线程将即时被唤醒执行;c)工作线程在SQL执行完成后,将a)中所述的计数值减一,并通知监听此计数值的同步方法线程再次读取计数值,工作线程自身再次进入读空队列而阻塞状态;d)同步方法线程在读到计数值为零后,退出同步过程,此次SQL执行过程完成。本文档来自技高网...
一种在驱动中直连分片实现分布式数据库数据导入的高性能方法

【技术保护点】
一种在驱动中直连分片实现分布式数据库数据导入的高性能方法,其特征在于:1)它是一个处理分布式数据库分片节点SQL运行的特定算法。2)算法要求SQL命令可在各分片节点上独立执行,而无需跨节点运算。3)算法实现采用在数据库驱动中集成分片算法的方式,绕开分布式数据库的主控节点,直接与分片节点建立连接执行SQL。4)算法提供性能优先和数据安全优先两种工作模式。前者可以获得比常规驱动明显高出的SQL执行性能。

【技术特征摘要】
1.一种在驱动中直连分片实现分布式数据库数据导入的高性能方法,其特征在于:1)它是一个处理分布式数据库分片节点SQL运行的特定算法。2)算法要求SQL命令可在各分片节点上独立执行,而无需跨节点运算。3)算法实现采用在数据库驱动中集成分片算法的方式,绕开分布式数据库的主控节点,直接与分片节点建立连接执行SQL。4)算法提供性能优先和数据安全优先两种工作模式。前者可以获得比常规驱动明显高出的SQL执行性能。2.如权利1所述的在驱动中直连分片实现分布式数据库数据导入的高性能方法所指的处理分片节点SQL运行的特定算法,其特征在于:算法应在数据库驱动中实现,其接口界面是JDBC,面向应用系统,工作在应用系统和数据库分片节点之间;SQL执行不依赖主控节点,但需要从主控节点读取相关分片配置、副本冗余信息等数据。...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:江苏引跑网络科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1