Elasticsearch与Postgresql大数据检索性能对比

Elasticsearch与Postgresql数据检索性能对比与融合
一般来说,影响数据库最大的性能问题有两个,一个是对数据库的读写操作,一个是数据库中的数据太大导致操作慢,对于前者我们可以适当借助缓存来减少一部分读操作,而针对一些复杂的报表分析和搜索可以交给hadoop和elasticsearch,对于写并发大,读也并发大,我们可以考虑分库分表,主从读写分离或者两者结合等方式来提高并发性和时效性,例如PG大并发写,大数据查看可以用elasticsearch与PG数据同步来读,可以启到很好的效果。
ElasticSearch做为搜索服务器,在性能上确实优势突出,是当前流行的企业级搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。主要用于实时搜索和分析引擎,,支持对结构化数据和非结构数据处理检索。
例如,我们使用的数据库时Postgres数据库,主从配置,从库主要用于数据分析检索为主,如果使用postgres进行多表多维度全量方式检索分析用户行为等挖掘有价值的数据,这样性能上无法及时满足客户时时性要求,因此我们可以使用Elasticsearch数据库代替PG从库做为挖掘分析数据库,使用过程中发现两者表与数据的兼容性都还不错,而且展现数据的性能确实快,
如下图是同一张表数据在postgres数据库中对应的表,在Elasticsearch数据库中对应,说明数据是兼容的。

而在postgres数据库中针对visit_plan_qz 表3073920笔数据进行全量查询,耗时大于5分钟都无法正常展现出来,

如果使用Elasticsearch进程全量查询仅使用0.0005秒就可以展现出数据,当然Elasticsearch会自动对该表划分为5个分片来展现数据。


工作原理:
PG关系数据库 ? 数据库 ? 表 ? 行 ? 列(Columns)
Elasticsearch ? 索引(Index) ? 类型(type) ? 文档(Docments) ? 字段(Fields)
可以看出Elasticsearch性能上的优势在索引,它提供强大的索引能力,Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤
Elasticsearch的索引思路:将磁盘里的东西尽量搬进内存,减少磁盘随机读取次数(同时也利用磁盘顺序读特性),结合各种算法,用及其苛刻的态度使用内存。

原文地址:https://blog.51cto.com/372550/2409688

时间: 2024-08-02 09:30:39

Elasticsearch与Postgresql大数据检索性能对比的相关文章

各大语言性能对比PK数据

这里我用的python版本是Python 3.6.2(64位),php版本是PHP 7.0.12(64位),node版本是v6.11.0(64位),Go 1.8.3(64位),C# 基于.Net 4.0,lua 5.1.4 对比 python import time calNum = 100000000 def test(): sum = 0 for x in range(1, calNum + 1): sum += x return sum start = time.time() test()

HTTPS,SPDY,HTTP/2性能对比

作者:zhanhailiang 日期:2015-01-24 原文:A Simple Performance Comparison of HTTPS, SPDY and HTTP/2 首先,恭喜Firefox 35成为第一个默认支持HTTP/2协议的浏览器.不过由于HTTP/2协议并未完全确定,所以目前Firefox实际支持的是HTTP/2 Draft 14版本(当然最终的协议确认不会有大的改动).由于Google已经在服务器端同时支持HTTP/2 Draft 14版本和SPDY协议,所以我们可以

php+mysql预查询prepare 与普通查询的性能对比

prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php class timer { public $StartTime = 0; public $StopTime = 0; public $TimeSpent = 0; function start(){ $this->StartTime = microtime(); } function stop(){ $th

iOS中保证线程安全的几种方式与性能对比

来源:景铭巴巴 链接:http://www.jianshu.com/p/938d68ed832c 一.前言 前段时间看了几个开源项目,发现他们保持线程同步的方式各不相同,有@synchronized.NSLock.dispatch_semaphore.NSCondition.pthread_mutex.OSSpinLock.后来网上查了一下,发现他们的实现机制各不相同,性能也各不一样.不好意思,我们平常使用最多的@synchronized是性能最差的.下面我们先分别介绍每个加锁方式的使用,在使用

回复:《golang VS php 性能对比》

连接:http://www.oschina.net/question/29420_138135 看到有一篇博文介绍Golang与PHP性能对比,在此回复一下.这测试结果明显是误导人的. 1,PHP未开启OpCache,那么每次都要读磁盘文件.并且编译PHP为OpCode.性能自然会差,开启OpCache试试吧. 2.php+redis一定要扩展版本的redis客户端,原因是redis扩展是长连接的,可以避免短连接带来的网络开销. 3.php-fpm或者Apache,就算只开20个进程.redis

redis和ssdb读取性能对比

最近关注了一下ssdb,他的特点是基于文件存储系统所以它支撑量大的数据而不因为内存的限制受取约束.从官网的测试报告来看其性能也非常出色和redis相当,因此可以使用他代表redis来进行k-v数据业务的处理.想法总是美好的,不过现实中就可能非常骨感. 以于针对Redis和ssdb的几个读操进行一个简单的性能测试对比,这个测试不是直接在本机调用Redis和ssdb. 而是通过一个程序在别的服务器上调用.测试指令(get,hget,lregion)以下是测试结果截图 测试代码 private voi

java数据库连接池性能对比

这个测试的目的是验证当前常用数据库连接池的性能. testcase Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.preparedStatement("select 1"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { } rs.close(); stmt.close(); conn.close(); test c

[1]Nginx_lua的应用及性能对比

对于Web高性能服务器上的选择,这个是很多人头痛的问题.对于Apache.lighttpd.Nginx都用他们优点,在什么情况下我们如何去选择适合自己的Web高性能服务器,如何去搭建一个适合自己的架构环境,这个是一个很麻烦的事情.接下来,在ADC 2012(Alibaba Developer Conference 2012)大会上,51CTO记者有幸采访到了一淘数据平台与产品部技术专家--清无(花名),为我们解读Nginx_lua的一些优势及劣势,以及在高性能服务器上的选择. AD: 对于Web

Tomcat 7优化前及优化后的性能对比(转载)

一.运行环境 CPU: Intel(R) Pentium(R) [email protected]  : 内存:4G,装的是32位win7,只认出3G,没有花时间去整ramdisk之类的东西: 操作系统:win7 32位: JDK:1.7.0_55 Tomcat:7.0.53 大家不要笑,公司电脑,就给配这样的,慢的要死,悲剧! 下面所有测试都是基于1000个请求做的,且都是访问Tomcat默认的ROOT首页 二.未调优前 并发用户数从10-1000挨个测试,测试结果如下: 从上面的测试结果来看