00:00
好,同学们啊,那么这一节呢,我们先去了解一下这个英TB的使用场景,以及它对应的生态。呃,那么in Fla DB呢,它其实是一种时序数据库啊,那么这种数据库的使用场景呢,它通常呢,都是在这种监控场景啊,比如说我们的这个互联网的运维啊,监控这个服务器的工作情况啊,更多的呢,就是我们的IOT物联网领域。呃,那么这种场景呢,和我们平时用的这个,呃,我们说事物型的数据库,比如说my circlelel,呃,Oracle CQ server这些数据库呢,它有一个很大的不同。呃,那么我们说啊,平时我们用的这个my circle。啊,它最大的特点呢,就是说啊,他等待着这个业务去触发你的这个数据的读写啊,比如说我现在呢,是一个提款的操作啊,我们这里做一个取款应用啊,那么什么时候会对这个买发生读写呢,自然呢是有用户进行取款啊,我我来取款了。啊,那么这个时候呢,啊,我们这个APP呢,会去,哎收到这个消息,然后完了之后呢,去调用一下这个MYSQL的读写啊怎么着呢,就是去完成这个逻辑,呃,所以说呢,这个MY色Q的繁忙程度呢,其实取决于我们业务上的繁忙程度,也就是说在这个时间段呢,有多少用户来取款啊,决定了我们这个啊MYSQL呢是否繁忙。
01:19
那么我们Fla TB呢,啊,这些时序数据库呢,做监控的这些场景呢,就不一样了,那么假如说啊,我在我在这个画一个框啊这里呢,是一个in Fla TB。呃,那么我们的印发DB呢,外面对接的肯定是一些啊,物联网的话就是一些传感器。哎,那么传感器。烷燃气啊,比如说我这里呢,有一个监控一氧化碳的啊,监控各种有害气体的啊,什么乙烷啊啊甲烷。哎,什么什么丙烷二氧化碳。
02:01
啊,这种传感器啊,那么这些传感器呢,它其实啊,它其实是每隔一段时间,比如说每隔五秒钟啊,就会像我的这个,呃,数据库呢,去插入一条数据。啊,也就是说呢,它其实不取不取决于我的业务,呃,它就是取决于我的设备,然后每隔一段时间啊,定时的向我的这个数据库里面呢,去写入数据啊,所以说我这个英Fla DB呢,呃,这个时序数据库呢,它是否繁忙,其实取决于两点。啊,一个呢,就是我的设备数。啊,如果呢,我有1000个设备,那么啊,每五秒钟呢,我就会发生1000次写入操作啊另外呢,就是啊我们的一个写入频率。啊,通常来说呢,实际数据库,你比如说我要去监控一个设备啊,我可能大多数情况下啊,我肯定不是半小时再去监控一次啊,大多数时候,大多数时候呢,都是我每秒钟啊去看一下这个东西能不能用,或者是每秒钟的去看一下这个,呃,我们这个主机上的内存的情况。
03:01
哎,所以说呢,这一天下来啊,这个呃,数据的积累量呢,其实是非常惊人的。另外呢,就是查询场景的话呢,这个啊,我们的MYSQL和这个1DB呢也不同。啊,那么对于实时数据库的查询场景呢,一般是这样啊,就是我这边有传感器呢啊,定时的向这个数据库里面写数据啊,外面呢,还会有一个APP啊,会有一个应用,它呢定时啊也是每隔比如说每隔五分钟。哎,查询过去一段一段时间的数据。然后把这个数据取出来干什么呢?去算一下最大值。啊,如果超过啊,比如说这个呃,一氧化浓度呢,超过0.0024,哎就报警,呃,那么这个呢,就是我们一个呃in DB的查询场景,它呢也是定定时间啊,每隔一段时间就查询一次啊对我们的买最后来说呢,一般来说都有,都很少会写这种需求。
04:03
而且呢,如果右边这个场景啊,我们这个时续数据库的场景啊,把这个in Fla TB换成my circleql,那么你会发现呢,整个这个性能呢会很差,呃,说到这里呢,其实我们说数据库里面啊,它的核心就是数据结构。啊,那么不同的数据结构呢,有他擅长的不同的场景。呃,通常呢,我们左边的这个关系型数据库,MySQL Oracle,还有这个SQL server1类的呢,啊,它通常呢,都是各种变种的必加数。呃,右边这个实际数据库啊,呃,除了这个英发DB以外,还有很多种啊,比如说最近国产起来的一些这个啊,Maric DB和TDNG,那么它下面呢,基本上都是一种lsm的变种,那么这个呢,叫做呃日志。结构化合并数。啊,不过我们这次的课程呢,并不涉及到这个,呃,MYSQL的一个底层原理啊,包括这个DB,它的存储引擎的原理啊,这些内容呢,并不在我们的课程的介绍范围之内啊,这里呢,给大家点一下,就是你可以朝这个方向呢,呃,仔细去研究一下它的底层。
05:11
呃,那么本节课程呢,其实还是围绕着英Fla TB的使用来进行一个展开。呃,好,那么除此之外,我们现在就知道啊,其实这个不同的数据库呢,它底层的数据结构,哎,导致他面对不同的场景呢,有不同的性能,不同的特性。好,那我把这个屏清一下,我们继续往下走啊,大概是已经讲到这个位置了啊,可以看到其实网上有很多关于英法B的这个测评文章啊,比如说这个单点每秒数十万的骑手能力,呃,那么这些文章呢,大家呢,就是你去看看就行了啊,不用太较真,呃,很多时候啊,我们这个性能的测试呢,其实还是需要到自己公司的这个服务器上的啊,去进行一个具体的测试的。好,接下来呢,我们来说一下数据价值。啊,就是时序数据库啊,它这个时序数据的场景你可以发现,比如说我现在要监控这个,呃,一氧化碳的一个浓度。
06:06
呃,那么对于我们这个应用场景来说呢,它其实啊,这一条数据我们说是啊,你沿着这个时间啊,每隔五秒钟啊插入一条。呃,那么对于我们来说啊,永远是最近五分钟或十分钟之内的数据最有价值。呃,那么你对这个数据进行查询呢,也是这个逻辑啊,你可能呢,只会查询,呃,最近那么一小段的数据啊,再往前的这些数据呢,其实就是冷数据,所谓冷数据呢,就是我们不再会用到的啊,比如说你完全就没有必要知道去年的一氧化碳浓度是多少啊,去年某一天啊,去年的10月5号这个一氧化碳浓度是多少啊,你知道你需要知道的永远是最近几分钟的这个情况。呃,所以说呢,这些实际数据库呢,它通常会做一个这样的处理。啊,就是最近我要用到的这个数据呢,放在内存里面。啊,放在内存啊,或者是放在一个SSD里面等着你查,然后左边这些数据呢,哎,属于冷数据。
07:05
啊,换个颜色啊冷数据,那么这些冷数据呢,其实就是很少被查到,甚至是完全不用,呃,那么这个时候呢,一般来说啊,有些数据库呢,它会对这个冷数据呢,啊,冷数据做一些不同的处理,比如说有压缩的啊,把它压缩起来啊,不占空间啊,另外呢,还有删除的啊,这些旧数据呢,直接给它删掉,不要了。啊,那么这样的一个好处显而易见啊,它其实就是呃,帮我们节省磁盘的空间。呃,那么这个冷热数据分离,其实是我们大多数实际数据库呢,都带的一个特性,好呃,接下来再往下走呢,就是时间不可倒流,数据只写不改,呃,大多数时候我们的这个实际数据库呢,它不允许你修改历史数据,比如说啊,我现在这个有一个,呃,06:15的。哎,那么这个数据呢,它可能是啊,记录的这个液化浓度呢,是0.0012。
08:04
好,那么现在时间呢,来到了06:16,呃,通常来说呢,实际数据库啊,不会给你一个API去修改,我们06:15的这个,呃,具体的数据的就是这个数据一旦写进来。哎,你就没法再改了啊,那么这个处理呢,其实有两个考虑啊,一来呢,是可以参考我们的这个任务管理器。呃,我们这个就是一个典型的实际数据,你完全没有必要对之前的一个情况呢,去做一个修改的操作,再另外呢,就是呃,如果要实现这个更新功能的话呢,我们就需要对它补充一个索引啊,那么这个时候呢,就会影响我们实际数据库的一个总体的性能。呃,所以说其实英发DB啊,不仅是一发DB,很多实际数据库啊,它为了考虑到性能问题。啊,他舍弃了一些我们说这个,呃,普通的数据库里面的一些比较重要的特性,比如说大多数的实际数据库呢,啊,不支持事物。
09:06
呃,然后呢,你不能删除某条数据,不仅不能删除,更新也不行。呃,那么做的最重要的权衡呢,就这两点,呃,那么还有其他的一些特性呢,实际数据库也不支持这个呢,等着大家去学习的时候呢,进一步发现啊。啊,接下来呢,我们就直接进入到一发TB里面来。呃,首先呢,给大家讲一下我们的这个,呃,Inx DB的版本选型问题啊,那么现在in flax DB的版本呢,呃,是有这么两个主流版本,一个是inlux DB1.8啊,另外呢,一个就是2.4啊,是指我们现在这个录课的时间呢,最新的版本。呃,那么不管是1.8还是2.4呢,现在在生产上呢,都有人使用。呃,此处呢,我们先以这个in class DB1.8呢开头去介绍一下,好吧,这个平清一下。
10:00
呃,那么我们知道啊,之前给大家说了一个时序数据库的场景,就是我们呢,呃,首先有要定期的插入数据。啊,然后呢,还要再去做一个定期的查询啊,最后呢,还要完成报警。啊,那么这一套呢,你可以发现它是一个非常样板化的一个开发流程啊,所以说第一步总是把数据先导进来啊,第二步呢,去编写查询语句,然后定时调度,第三步呢,就是啊,写规则if else if大于多少了,哎,直接去干什么事啊,那么最后呢,有时候还有这个可视化的需求。哎,把这个我们的这个实际数据库呢,像这个我们的任务管理器一样,哎,做成图给它展示出来。好,呃,那么既然这个开发流程呢,非常的样板化,所以说in Fla TB呢,干脆就搞了个生态,使用四个插件来完成,哎,这一套的一个流程,我们可以看到,当时呢,这个英发TB搞的这个生态呢,就叫tag技术站。
11:03
这个TI呢,分别是四个框架的手写字母啊,一个T是telegraph,这个呢,我们上个月谷前段时间录了一期视频课啊,那么它呢,其实就是定时的去收集数据,把这个数据呢写到我们的Fla DB里面来啊,这个框架呢做的不错,现在呢,很多的实际数据库啊,它都支持以telegraph呢作为数据源。好,呃,然后呢,这个数据你收集起来之后放哪里去存呢?那么就是我们的in TB来负责一个数据的存储,还有查询功能。在接下来呢,有一个叫做cor graph的一个呃,插件啊,这个组件呢,其实是起到一个用户界面,那么它呢啊,提供一个UI。啊,提供一个外部界面啊,那么通过这个UI呢,我们可以对这个数据库啊telegraph呢进行一些操作啊,最重要的是呢,它提供一个图表展示的功能。图表展示。
12:02
好,那么最后这个capitor呢,它其实是用来负责一个呃报警任务呃定时任务呃进行一个定时查询啊,或者是直接报警的一个插件啊,那么这四个呢,TI1组合起来,就把我们刚才说的这个时序数据的啊,样板化的一个开发流程啊给走完了。呃,那么这个其实是我们in DB1.8的一个生态,呃,那么到了这个in Fla db2点几的版本呢,要注意这两个就没有了啊,这两个就没有了啊,取而代之的呢,是把这个凯定时任务,报警任务以及这个外部UI推销展示的功能呢,全部集合到了我们的in s DB里面来。哎,所以说现在呢,你只要一安装一发TB,它里面呢,你就可以直接在这个数据库里面,诶,去完成这个报警任务,定时任务,以及这个图表展示的功能了。而且就这个易用性来说啊,易用性来说,二点几的版本呢,它明显这个易用性呢,要高于一点几,好,那么这个呢,就是我们一个生态上的差别,现在呢,把屏清一下去放下走。
13:10
呃,现在呢,就是关于选型上需要考虑的几个点了啊,那么这里呢,首先要考虑一下性能问题,呃,首先呢,二点几和一点几呢啊,这两个方面来说,底层引擎的原理相差不大,所以说呢,这个性能上呢并没有明显的差异,另外呢,就是一点叉和二点叉来说呢啊,这个权限管理的一些概念上不太一样,包括还有这个数据库啊,这些概念也不大一样啊,这个等到大家去深入学习了之后呢,就更加了解了。呃,还有呢,就是说我们说这个tag生态到这个一点几的时候呢,啊,要配备啊,这几个组件一起联合使用,那么到我们二点几的时候呢,就只剩这个telegraph和in DB,它的基础集成度呢更高,而且这个管理页面呢更好用。还有呢,就是在1PLUS DB一点叉的时候呢,呃,使用的是一一种叫做这个英plusql的查询语言啊,那么到了二点几的版本之后呢,呃,我们使用了一个叫做做flux的查询语言。
14:08
啊,那么当时推出这个plus产语言的时候呢,是在最早的时候,是在in Fla DB。1.7这个版本,呃,到后面的这个最后一个in Fla TB的一点几的版本呢,是in Fla tb1.8来,那么在一点几的版本里面呢,啊,这两个版本是支持flux语言的啊,不过flux语言呢,现在是一周一更新,所以说这两个版本支持的flux语言呢,比较老啊,那么谁还在持续更新呢,就是in Fla db2点几。啊,它这个版本呢,还在持续的跟进这个flux语言的更新,支持更多flu言的新特性。呃,那么最后呢,还有一个很重要的问题,就是它的开源性上,呃,那么一发TB呢,现在你要是用的话,只能用用到它的这个单节电板啊,你只能把它安装在一台机器上啊,那么过去呢,这个英拉TB呢,是支持集群版的啊,那么从0.1这个版本之后呢,它就闭源了集群功能代码。
15:09
最后呢,就是导致你去,呃,现在去安装1STB的话呢,只能去安装在一台机器上啊,不能这个多台机器共同提供服务啊,这个时候就是他把集群呢做成了一个企业版,所以说呢,你如果想要使用啊他的群功能的话呢,就需要购买他的企业版啊,不过呢,我们国内有一些很厉害的程序员啊,他呢去写了这个in Fla DB的集群版。呃,所以说呢,大家可以看到我这里面呢,贴了三个项目啊,其中一个是in fast DB cluster这个呢是对应的infa DB1.8的版本。呃,使用它呢,你可以去实现高可用,包括这个横向拓展的一些功能,呃另外呢,还有一个就是in发proxy,这个呢,其实是一个代理啊,这个他俩的架构不一样,这个cluster和proxy架构不一样。呃,那么proxy呢,其实没有高可用一说啊,你你需要自己想办法去搭建一个高可用。
16:02
他呢,其实有一个代理节点。然后呢,根据一个规则把你这个数据呢,哎,我们可以看到,比如说我这里有一台in in Fla DB节点一。啊,它就是第一一号节点啊,同样的呢,这里有二号节点。呃,我们的这个代理呢,他其实就是,呃,就根据这个规则啊,你这一条数据呢啊,我让你写到这个一上来,然后别的数据呢,我让写到二上来啊这样的话呢,它其实可以提高一个写入能力和数据存呃和数据存储的能力啊,但是可用性呢,它并不如这个class高。呃,所以说大家如果搭集群的话呢,我推荐的是这个英发DB class的开源项目。啊,那么这个呢,其实不在我们的课程计划范围之内,大家呢,学完1STB可以自己去了解一下。好,最后说一下,就是我们这个课程呢,在选型上呢,是选择in DB2.4作为一个教学使用,那么如果大家在这个公司的生产上呢,要选择一点几的版本呢,啊,这个也不用担心,因为这个网上有很多翻译的不错的in Fla TB一点几版本的文档啊,大家呢可以去参考对照使用。
17:13
啊,另外呢,还是强烈建议大家呢,去关注一下这三个项目,呃,那么这三个项目呢,其实都是中国人啊,我们就是国人呢,在进行一个维护啊,大家呢,进去之后呢,可以去加这个社区的微信群,然后了解更多这个in Fla TB的使用的一个方法。好,那么接下来呢,就正式开始我们英TB的课程。
我来说两句