分布式检索系统 ElasticSearch 和 SenseiDB 比较

2019-03-27 01:21|来源: 网路

从网上找了一些关于这两个系统的介绍和比较的文章

1) senseidb VS. Solr VS. elasticsearch (***Incomplete***)

现阿里巴巴平台技术部高级技术专家王福强写的SenseiDB,Solr和ElasticSearch三者的比较

SenseiDB

 

特点

 * 主要解决高速索引更新的问题; 底层是zoie的“2-swapping-in-memory-index + 1-on-disk-index”索引结构支持

 * 需要定义schema;

 * 通过Gateway可以接入多种数据源;

 * 通过BQL或者REST API,甚至各种语言bindings进行数据查询;

 * 支持通过hadoop MR job批量更新数据索引;

优点

 * 高速索引更新 - 多数据源接入 - 灵活的访问接口 - 与hadoop生态的集成 - 优秀的分布式扩展能力

缺点

 * static schema

 * application side versioning maitaining

为何没有直接用Solr?

   摘录在John Wang的访谈片段:

   Sensei leverages Lucene.

   We weren’t able to leverage Solr because of the following requirements:

   * High update requirement, 10’s of thousands updates per second in to the system

   * Real distributed solution, current Solr’s distributed story has a SPOF at the master, and Solr Cloud is not yet completed.

   * Complex faceting support. Not just your standard terms based faceting. We needed to facet on social graph, dynamic time ranges and many other interesting faceting scenarios. Faceting behavior also needs to be highly customizable, which is not available via Solr.

ElasticSearch

 

特点

 * Schema-Free | Schemaless

 * feed index engine with JSON formatted documents

 * Query by Lucene based query string or JSON based query DSL over HTTP or Native Java;

 * shards and replicas, LB and routings

 * cloud integration

 * multiple search types

 * multiple data sources integration with River

 * many more…

优点

 * 许多灵活, 优秀的特性(见features列表) - 作者拥有多年在搜索领域的涉猎经验 - senseidb的pros它也基本都有

缺点

 * 文档不足 - 后端没有大的商业机构支持

2) ElasticSearch, Sphinx, Lucene, Solr, Xapian. Which fits for which usage?

ElasticSearch 作者 kimchy 在 stackoverflow 上对 ElasticSearch 的描述

kimchy 同时也是 Compass 的作者

ElasticSearch 拥有先进的分布式模型,原生支持JSON,通过JSON DSL进行交互,具有丰富的特性

3) Solr vs. ElasticSearch

还是 Stackoverflow 对 ElasticSearch 的评论

优点

 * ElasticSearch is distributed. No separate project required. Replicas are near real-time too, which is called "Push replication".

 * ElasticSearch fully supports the near real-time search of Apache Lucene.

 * Handling multitenancy is not a special configuration, where with Solr a more advanced setup is necessary.

 * ElasticSearch introduces the concept of the Gateway, which makes full backups easier.

缺点

 * Only one main developer [this isn't true anymore according to the current elasticsearch GitHub organization, besides having a pretty active committer base in the first place]

 * No autowarming feature

4) Realtime Search: Solr vs Elasticsearch

应用实时检索的情况下,Solr 和 ElasticSearch 的性能比较

* 实际应用中,ElasticSearch 在检索性能上比 Solr 有50倍的提升

5) SenseiDB Performance Benchmark

SenseiDB 与 MySQL 的性能对比

总结

 * 两者都具有良好的分布式扩展能力,都支持实时检索。

 * ElasticSearch 由 Compass 的作者 kimchy 开发,目标提供云计算平台的检索系统,具有许多灵活优秀的特性。主要缺点是缺乏大公司支持,开发时间短尚不成熟。

 * SenseiDB 由 LinkedIn 开源,目标支持高速索引更新,多数据源接入,灵活的访问接口。缺点是需要定义静态Schema,开发时间也不长。


转自:http://my.oschina.net/shking/blog/133350

相关问答

更多
  • 分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个 ...
  • 分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个 ...
  • 分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个 ...
  • 一、DFS为何物? DFS 即微软分布式文件系统的简称,系统管理员可以利用它来有效的整合网络资源,并把这些资源以单一的层次结构呈现给网络用户。管理员利用它可以把资源发布成一 个树形结构,这样大大简化了为用户进行资源配置和对资源管理的工作量。我们可以在不同的机器上调整和移动文件,这不会影响到用户的访问。 二、为什么要使用DES? 1、DFS使用了现有网络中的Share权限,管理员不必进行新的配置 2、通过一个DFS树形结构用户就可以访问多个网络资源,而不用再把远程驱动器映射到本地共享资源中。 3、DFS可以配 ...
  • 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无复本、数据存于哪个站点以及事务在哪个站点上执行等。 故名思义,分布式 ...
  • 如果我理解得很好,您似乎需要计算所有类别的聚合,然后过滤它以一次只显示一个类别。 这可以使用post_filter实现(参见文档 )。 它是在计算聚合之后应用的过滤器。 在你的情况下,而不是像这样查询: { "query": { "bool": { "must": [ {"term": {"color": "red"} }, {"term": {"category": "casual"}} .... ] } }, ...
  • 你有什么问题? 1:单独运行ES还是作为应用程序的一部分? 单独运行Elasticsearch会更好。 每次启动应用程序时都不会启动ES。 启动ES可能需要一些时间(启动,同步;如果有大量数据需要更长时间)。 2:ES是MongoDB的一个很好的替代品吗? 取决于你的要求。 Elasticsearch用于搜索。 不要用作(主)数据库。 Elasticsearch不是事务性的! (有更多的理由你不会这样做) What's your question? 1: Run ES standalone or as pa ...
  • 我曾经在一个健康社交网络上工作,我们需要某种搜索和连接搜索功能,我们首先使用neo4j,我们可以得到的密码查询语言给我们留下了深刻印象,并表达了任何请求,但是当你抛出数十亿个节点时为了付出代价,我们开始考虑另一个图形数据库,这次我们进行了大量的研究,测试和OrientDB显然是胜利者,OrientDB具有很高的可扩展性,但问题是你必须自己编写代码,“搜索”算法“如果你想做一些高级的东西(这两个节点之间的共同点是什么),否则你就像SQL一样的查询语言(我不知道/记得他是否有名字)但是你可以做一些有趣的东西有了 ...
  • 第一次下载ElasticSearch 在您的项目/ Express框架目录中,使用npm install elasticsearch --save elasticsearch npm install elasticsearch --save下载ElasticSearch Express驱动程序 运行ElasticSearch Instance,默认情况下,它在端口9200上运行 要使用该模块,只需创建一个客户端实例 var elasticsearch = require('elasticsearch'); ...
  • 目前ElasticSearch没有提供group_by等价物 ,这是我尝试手动完成的。 虽然ES社区正在努力直接解决这个问题(可能是一个插件),但这是一个适合我需求的基本尝试。 假设。 我正在寻找相关内容 我假设前300个文档是相关的,所以我考虑将我的研究限制在这个选择中,无论其中很多或部分来自同一些作者。 为了我的需要,我并没有“真正”需要完整的分页,这足以通过ajax更新“显示更多”按钮。 缺点 结果不准确 因为我们每次需要300个文档,我们不知道会有多少独特的文档出现(可能是来自同一作者的300个文档 ...