文章来源:美创科技

数据库防火墙和一般的传统数据库安全设备不同,它部署在应用服务器和数据库服务器之间。业务系统巨大的流量将穿越数据库防火墙,数据库防火墙任何的风吹草动都会影响业务系统的正常运行。数据库防火墙投放市场之前,不管数据库防火墙功能的多寡,都必须解决两个基本问题:性能和可靠性。

性 能

性能主要考虑两方面的影响:延迟和并发。

01 延迟

延迟:业务操作从指令发出到结果返回之间消耗的时间。

一般来说,绝大部分客户的OLTP(线上交易处理)业务要求秒级响应,这个秒级响应包含了所有的业务处理,包括:客户端的处理(比如浏览器)延迟,业务网络延迟,应用服务器处理延迟,数据库网络延迟,数据库处理延迟等。对于数据库防火墙来说,应用服务器处理延迟和数据库处理延迟之间增加了一个数据库防火墙处理延迟。

我们来看看一般OLTP系统的常规情况,数据库网络延迟一般1ms之内,数据库处理延迟大部分在0.1ms-10ms之间,少部分会在10ms-100ms之间,极少出现几百ms以上的延迟。

为了简化说明,我们把数据库网络延迟标定为1ms,每次数据库响应处理延迟时间标定为2ms,每笔业务平均由20条SQL语句构成,则每次延迟时间为3ms,每笔业务的响应时间为60ms,每秒钟可以处理16.8笔业务。如果数据库防火墙的处理延迟时间为1ms,则每次处理延迟增加为4ms,总处理时间增加为80ms,每秒钟可以处理12.5笔业务。

下面我们从三种不同的业务场景来分析:独占数据库连接(无数据库连接池)、数据库连接池和短连接业务。大部分C/S应用都独占数据库连接,大部分B/S应用都采用数据库连接池,短连接的应用非常少见,只出现在极少数据库处理的应用中。

独占数据库连接

独占数据库连接应用中,数据库防火墙的接入在每次处理中增加1ms,整体响应中增加了20ms,也就是从1000ms增加到了1020ms,这个延迟增量一般情况下不会对于业务体验造成任何影响。

数据库连接池

不同于独占数据库连接,数据库连接池为不同业务操作的共享单元。假设数据库连接池数量为200个,冗余20%,可用数量为160个。显然,引进数据库防火墙之后,业务处理能力从16.8 * 160 = 2688/s下降为12.5*160=2000/s,吞吐量下降25.6%。当你需要比较2000笔/s更高吞吐量的时候,数据库防火墙的接入將带来业务线的影响。在这种情况下,你需要把数据库连接池数量至少增加26%,也就是252个,这个时候数据库连接池的处理能力將恢复到2688笔/s,整体业务感知的影响也仅仅从1000ms增加到了1020ms,基本可以被忽略。

短连接业务

在短连接业务中,数据库连接消耗的时间將纳入业务响应时间。以Oracle数据库为例子,一个数据库连接的建立消耗时间在120ms-200ms,数据库防火墙增加的每次1ms延迟和合计20ms延迟基本不会产生业务层面的影响。

数据库响应处理的影响

在上面的讨论中都假设了数据库不会受到影响,但是事实上数据库防火墙的加入会到数据库处理产生影响,其影响等同于网络速度下降。一般而言,延迟造成的影响主要在于增加了数据被锁定的时间,从而会从根本上影响数据库并发性。

我们以简单的update为例子:

   update customer set balance=500 where cust_id=10080;commit;

可以看到cust_id=10080这一行的锁定周期从3ms增加到了4ms,锁定周期增加了33.3%,这个增加的锁定时间会在一定时间影响数据库的并发性。

02 并发性

对于一个企业级数据库,几千甚至几万个数据库连接是很常见的,数据库防火墙需要在处理高并发量的同时保持延迟时间的稳定。在现实场景中,随着业务并发程度的上升,响应时间下跌甚至于非线性下跌都是很常见的事情。我们在这里不讨论如何实现高并发,只是说明并发性会严重影响响应延迟。

03 性能延迟的可接受性

从上面计算可以看到,绝大部分的业务应用在数据库防火墙增加1ms延迟时间不会对业务造成太大影响。对于高度并发性或者响应时间极为苛刻的业务应用,1ms延迟具有比较大的风险,需要更低延迟的数据库防火墙支持,300us-500us的延迟是一个相对合理的数值。当然如果你的网络环境甚至已经在多接入一个网络交换机(延迟时间一般在100-300us)都会对业务造成明显影响的时候,显然增加数据库防火墙接入是不合适的。

可 靠 性

性能是一个复杂的问题,可靠性对于数据库防火墙来说就是一个极为简单的命题。由于数据库防火墙部署在应用服务器和数据库服务器之间,数据库防火墙的任何故障显然会导致业务操作失败,在数据库防火墙无法工作的时候导致所有业务中断。

相信任何用户在安全和业务保障之间都会优先选择业务保障而暂时放弃安全。基于这个考虑,一个很朴素的需求就是:在数据库防火墙出现任何故障,包括软件故障,硬件故障等,依然需要保障业务运行不要被中断和影响。

01 bypass

当防火墙软件或者硬件故障的时候,可以自适应降级成网络通路设备,保证业务运行不会受到防火墙软件或者硬件故障的影响。

02可靠性保持

数据库网络往往具有很高的冗余措施,数据库防火墙的接入要求不会改变原有网络的冗余结构,保持原有网络的可靠性。

数据库防火墙商业化需要两个基本前提:可以接受的性能和可靠性保障,在这两个基本前提解决之前,任何数据库防火墙产品都只能是实验室产品而无法投放市场。

从性能的角度看,绝大部分情况下1ms以下的延迟都可以接受,对于高并发的复杂业务或者响应苛刻业务会需要更高的延迟性能,要求在500us以下。

数据库防火墙:数据库防火墙商业化的前提条件相关推荐

  1. ArcGIS模型构建器前提条件的应用(附省界县点练习数据)

    这次的模型依旧很简单,主要是介绍前提条件在模型构建器中的应用 新建模型我就不讲了,之前都说过 可参考:ArcGIS模型构建器操作案例--提取相关属性信息 首先先简单介绍一下这次模型的功能,就是我们要用 ...

  2. 前提条件在模型构建器中的应用

    这次的模型依旧很简单,主要是介绍前提条件在模型构建器中的应用 新建模型我就不讲了,之前都说过 可参考:ArcGIS模型构建器操作案例--提取相关属性信息 首先先简单介绍一下这次模型的功能,就是我们要用 ...

  3. 金仓数据库 KingbaseES SQL 语言参考手册 (7. 条件表达式)

    7. 条件表达式 条件表达式 指定一个或多个表达式和逻辑(布尔)运算符的组合,并返回TRUE.FALSE的值或UNKNOWN. 本章包含以下部分: SQL条件简介 比较条件 浮点条件 逻辑条件 模式匹 ...

  4. 企业如何选购防火墙?防火墙保护企业安全

    在IT安全领域,防火墙扮演着一个关键的角色,通常被部署在企业网络和外部互联网中间,来保护企业网中的计算机.应用程序和其它资源免遭外部攻击.对于企业网络安全来说,防火墙起着关键性的作用,只有它,才可以抵 ...

  5. DB-概念-数据库:数据库/Database

    ylbtech-DB-概念-数据库:数据库/Database 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜--存储电子文件的 ...

  6. 华为防火墙技术-防火墙基础

    防火墙概述 为什么需要防火墙? 路由器和交换机构建起互联互通的网络,但是也会带来安全隐患.例如在网络边界,企业有如下安全诉求: 1.外部网络隔离 2.内部网络安全管控 3.内容安全过滤 4.入侵防御 ...

  7. Dataguard配置前提条件

    Data Guard配置前提条件 配置Data Guard必须保证以下前提条件: 1.Data Guard是Oracle企业版的组件.Oracle标准版里没有这个控件.所以Data Guard配置所使 ...

  8. mysql通过局域网访问数据库_MySQL数据库之局域网内访问同一个mysql数据库

    本文主要向大家介绍了MySQL数据库之局域网内访问同一个mysql数据库 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 局域网内访问同一个mysql数据库. 一.运行cmd,输 ...

  9. mysql数据库 auto_increment_mysql数据库 auto_increment

    MySQL内核月报 2014.09-MySQL· 捉虫动态·auto_increment 背景: Innodb引擎使用B_tree结构保存表数据,这样就需要一个唯一键表示每一行记录(比如二级索引记录引 ...

  10. oracle数据表丢失数据库,Oracle数据库数据丢失恢复的几种方法总结

    根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo ...

最新文章

  1. java 代码块的作用_Java核心(三):代码块的作用
  2. python操作数据库 封装类
  3. 意犹未尽 —— GPM 的状态流转(十)
  4. 多重继承之虚继承(主要是为了解决产生的数据冗余问题)
  5. php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...
  6. PHP中return的用法
  7. Linux下JDK、Tomcat的安装及配置
  8. AUTOCAD建模足球实体
  9. 防火墙透明模式下虚拟系统配置实例
  10. 完成端口(IOCP)详解[1/2](转载)
  11. django开发_七牛云图片管理
  12. 用计算机上初中英语课的方法,如何上好初中英语读写课
  13. Microsoft store下载速度缓慢
  14. Intellij IDEA 2019 最新优化配置
  15. 无人驾驶入门——2D检测 基于图片的检测算法(四)
  16. 利用composer安装依赖
  17. 基于springboot的校园食堂订餐系统
  18. 黑客攻陷'360安全论坛' 偷窃网游和QQ帐号
  19. 十年HRD总结3个逆向思维的招聘方法
  20. 【Javascript】二十个工具函数

热门文章

  1. 手机号码变成空号导致亚马逊账号登陆两步验证失败的恢复网址及方法
  2. Python四舍五入问题详解
  3. Android waitting for debugger
  4. 今日分享——《青春》(李大钊)
  5. 采用软改的方式激活Windows 7
  6. eNews 第二十六期/2007.07
  7. 【天池竞赛系列】菜鸟-需求预测与分仓规划初赛冠军解决方案
  8. PCL学习笔记一入门(更新中)
  9. MacOS下解决宿主机和docker容器之间网络互通
  10. 基于80C51单片机——中断小结