Sensei:分布式, 实时, 半结构化数据库

在未出现开源搜索引擎以前, Doug Cutting整了个Lucene, 随后Yonik Seeley写了一个Solr, 在2010年 Shay Banon发布了ElasticSearch, 大概在两年前, 我们迎来了Sensei, 最近他们发布了1.0版本, 下面通过[url=https://twitter.com/#!/sematext]@sematext[/url]对LinkedIn的搜索架构师John Wang的一个采访. 来大致了解一下Sensei.
[align=center][img]http://engineering.linkedin.com/sites/default/files/Sensei-architect.png[/img][/align]

[color=red]Sensei是什么?[/color]
开源, 灵活, 实时, 分布式数据库, 原生支持搜索, 能操作非结构化文本和结构化数据. 它主要用户处理海量复杂半结构化查询和经常变化的数据结构. 它广泛用于支持LinkedIn.com的搜索功能.

[color=red]为什么没有用solr?[/color]
1.数据更新量大
2.分布式. 目前solr的分布式在master上还存在单点问题(SPOF), 而Solr Cloud还没出来
3.复杂的facet支持.

[color=red]Sensei的独到之处有哪些?[/color]
支持海量更新
支持半结构化查询

[color=red]Sensei最大的缺点以及计划何时解决?[/color]
1. Sensei的文档必须有一个long类型的唯一标示符. 这个主要是处于性能的考虑. 目前没考虑解决.
2. 数字类型不支持负数, 该功能即将实现.
3. 静态schema. 稍后支持动态schema.

[color=red]接下来即将实现的关键功能有哪些?[/color]
1.相关的工具
2.内建对时间和地理信息类型字段支持
3.parent node类型文档支持
4.支持属性类型facet(名字对)
5.在线均衡重置
6.在线索引重建
7.参数化二级存储
8.动态schema
9.支持聚合函数, 比如AVG, MIN, MAX

[color=red]Norbert在Sensei中的作用?[/color]
一个集群管理器, 负责Broker和Sensei node之间的RPC调用. Broker是内置在Sensei节点的Servlet. Norbert用于Sensei Node之间的消息传输. 同时它内置了Zookeeper来进行集群管理. 下一步将对其进行抽象, 允许以plugin的方式集成其他集群功能.

[color=red]对BQL介绍一下?[/color]
BQL – Browse Query Language. 作为SQL变种支持Sensei查询. 它将成为Sensei的标准查询.

[color=red]Sensei相关的性能测试数据?[/color]
测试数据参见:[url]http://Senseidb.com/performance.html[/url]
相关测试代码参见:[url]https://github.com/kwei/search-perf[/url]

[color=red]Sensei是否有单点问题(SPOF)?[/color]
没有.

[color=red]什么情况下会导致数据丢失?[/color]
除非所有副本节点都丢失数据
Sensei要求添加的所有数据都是有序而且带版本的, 从而实现数据回放恢复.

[color=red]如果集群中的一个节点挂了会怎样?[/color]
有ZooKeeper呢.

[color=red]如果达到集群容量上限会如何处理? 自动扩展还是手工重置负载均衡?[/color]
取决于数据的Sharding方式.
新加入的节点需要在Sensei.properties配置文件中指定处理哪些分片的数据, 比如:
Sensei.node.partitions=1,3,8

如果sharding策略不需要迁移数据, 比如根据时间和连续UID sharding, 那么扩展集群将非常方便
如果sharding策略需要迁移数据. 比如采用取模的方式sharding, 这时集群就需要重置负载均衡. 下一步将实现在线重置负载均衡. 而现在需要对所有数据重建索引.

[color=red]作为最终一致性的Sensei, 如何保证多次查询结果一致?[/color]
通过一个路由参数, Sensei采用一致性hash路由参数, 保证每次查询都定位到同一个节点.

[color=red]如何升级? 是否需要停机整个集群? 是否向后兼容?[/color]
部分升级. 不需要停机整个集群. 向后兼容.

[color=red]Sensei是否需要shema?[/color]
需要, 下一步支持动态shema.

[color=red]其他搜索功能的支持情况?[/color]
通过相关工具支持Function query
计划支持SpatialSearch和Parent-Child数据
不计划支持Join.

[color=red]如何访问Sensei?[/color]
提供两个接口: REST/JSON和BQL
提供Java和Python客户端.

[color=red]Sensei的运维工具做的怎样?[/color]
自带有一个web应用来管理集群.
提供了JMX支持,
还支持修改配置来调整输出, 比如日志输出.

原文地址:[url]http://blog.sematext.com/2012/01/26/Sensei-distributed-realtime-semi-structured-database/[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值