文档章节

五个选择LunarBase的理由(二)

费大虫
 费大虫
发布于 2017/06/14 15:56
字数 1443
阅读 33
收藏 0

四.LunarMax,更快的查询

LunarMax是一个非常彪悍的实时计算引擎,由于使用了自己的虚拟内存系统,使得缓存大量对象的时候,基本不会触发jvm的GC。而jvm的堆内内存受限,太大了必然导致垃圾回收停顿时间过长,这一点很多用java平台的数据库都是深受拖累。而企业级的应用,多数都是基于java平台。

 

著名的netty在从3.0版升级到4.0版的时候,就完全重写了缓存这块,换做Direct Buffer,使用堆外内存,自己创建和回收,其用意是一样的。

 

 

可以这样说,LunarMax是驱动整个数据库的关键引擎,主要的列存储,列索引,全文索引,内存管理,都由这个模块提供。

 

垃圾收集不仅仅是内存的垃圾,也包括搜索引擎产生的磁盘垃圾。因为目前的科技而言,存储主要使用的是块设备,碎片是无法避免的。有些解决方案通过定期的整理磁盘块来减少碎片,提高检索效率。但是在整理期间,搜索性能是很受影响的。LunarMax是通过一种主动搜集的技术,均摊了清除碎片的开销,这一点对于生产环境是非常贴心的功能。

 

 

五.Benchmark

 

通常数据库的查询有两种方式,一种是自带的索引,主键索引和第二索引,区别在于主键索引不能有重复的key。另一种是采用第三方的查询软件,例如Lucene(Solr的核心)。两种索引的技术各有侧重,数据库自带的一般是B+树,列值直接存储在树中,而Lucene采用的是big table的倒排索引,适用于一键多值(非常多的值)的查询,例如查询包含关键字“Michael”的文档,那么可能在库中有几十万篇的文档都包含这个关键字,这种场景,就是big table的用武之地了。

 

有人做过测试,说Lucene的性能要远高于Mysql,我们这里认为这只是任务类型不同而已。LunarBase对于不同类型的数据列,采用了不同的索引技术。对于需要全文查询的列,同样是倒排索引,加上了主动碎片搜集功能,不会有长时间的停顿整理磁盘的过程。

 

这里根据两个测试《Solr与MySQL查询性能对比

》[3]和LunarBase official benchmark[4],重新跑了测试:

 

 

测试数据量:10407608 条记录,查询:

SELECT * FROM `tf_hotspotdata_copy_test` WHERE collectTime BETWEEN '2014-12-06 00:00:00' AND '2014-12-10 21:31:55';

 

我们在一台普通的X86服务器上重新做了测试,生成了随机的数据集,时间列上面的记录按均匀分布,查询完成取出数据的时间,和结果数据集的大小直接相关,不是独立的。结果数据越多,需要的时间越多,因为对于是B+树的索引,范围越大,显然随机IO的次数越多,也就越慢,而对于big table的倒排索引,也是一样,拿到文档(记录)的id之后,也要从磁盘中读出响应的文档,也是非常多的随机IO。这次落入查询范围的记录大约是1500条左右,我们做了10万次范围查询,取其平均值:

数据库和索引类型

耗时(秒)

Mysql+索引

2.67

Solr(Lucene)

0.067

LunarBase

0.058

 

 

LunarBase的缓存开的很小,只用了1M内存,耗时和Solr差不多,查询索引的时间都是很快的。

 

而LunarBase可以把缓存调的很大,也可以指定固态硬盘空间来作为虚拟内存,不和操作系统争抢,这一点就非常有优势。你有100G固态空间,指定给LunarBase就行,足够缓存下你的热点数据了。缓存的越多,当然速度就越快。我们这里没有做测试,但在我们的生产系统里面,用了64G内存,100G的固态空间,这样简单的范围查询都是不到1毫秒完成的。

 

 

六. 总结

 

其实类似的应用场景非常多,是主流的,例如微信朋友圈各种转发,网店各种热门商品等等,本文分析了这类应用的LunarBase的解决方案和Benchmark。只需要设置几个参数,LunarBase就能达成这样目标,使得实际的生产环境非常简化,用户不再需要配置一大堆的软件。服务器内存能允许多用就多用,费用紧张,也可以用SSD做扩展内存,还不跟其他程序争抢主机的内存资源,不用担心拖垮系统。这是比较好的“尽量使用内存”的方式。

 

目前LunarBase已经通过连接Presto支持了标准sql的查询,应用可以无缝迁移到LunarBase。插入更新数据还未支持sql,只能使用LunarBase提供的接口。如前所述,这个时候的LunarBase更侧重于一个搜索引擎的角色,提供了查询的接口,大吞吐量的提供数据源。

 

六. 参考文献

 

[1] LunarBase白皮书:

https://github.com/LunarBaseEngin/Application/blob/master/LunarBase%20--%20A%20database%20engin%20for%20managing%20very%20large%20amounts%20of%20data%20--%20EN%20--V0.8.pdf

 

[2] LunarBase release:

https://github.com/LunarBaseEngin/Application/releases

 

[3] Solr与MySQL查询性能对比

http://www.cnblogs.com/luxiaoxun/p/4696477.html

 

[4] LunarBase official benchmark:

https://github.com/LunarBaseEngin/LunarBase/wiki/BenchMark

 

[5] LunarBase 五分钟入门:

https://github.com/LunarBaseEngin/LunarBase/blob/master/README.md

 

本文转载自:https://mp.weixin.qq.com/s/UtzSnLpT8Dx0tJmkPtm4Xg

费大虫

费大虫

粉丝 0
博文 2
码字总数 0
作品 1
朝阳
私信 提问
数据库引擎--LunarBase

LunarBase是专门为海量数据的存储和大吞吐量的查询设计的.用C语言和java开发而成,采用了数据库引擎和搜索引擎的融合设计,这无疑能够大大的简化生产环境,因为不需要为了不同的数据类型专门...

费大虫
2017/06/14
434
0
2018-11-09-今日得到-《电车难题》

今天分享的主题来自得到的每天听本书系列之《电车难题》 关于作者 托马斯·卡斯卡特,毕业于哈佛大学哲学专业,此后进入芝加哥大学研究神学。他的履历丰富,职业多变,从大学教授到临终关怀,...

韬声依旧在路上
2018/11/10
0
0
丢弃 MySQL 的 5 个理由

MySQL仍然是最流行的开源数据库,但因为更好选择的出现在过去几年中它的粉丝不断流失。让我们来看一下换掉Mysql的五个动机。 早在2008年,MySQL还在迅速普及的时候,SUN用十亿美元收购了MyS...

oschina
2013/07/11
2.3K
2
表单可视化定义工具

【业务需求】 一、功能需求 1、控件拖放,多列布局拖放,常用控件,多行文本控件,主子表控件等 2、支持组件库扩展接口 3、支持表单预览、保存、多版本管理 4、表单格式以jason格式存储,可使...

Celesea
2017/07/21
28
2
Python--基础练习

1. 在Linux电脑上安装python,ipython,pycharm专业版本软件; 2. 在Windows电脑上安装python3版本,并配置环境变量,确保Dos环境下运行脚本; 3. Linux下有多少种运行python的不同方法,并分析...

無緣
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
13
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部