十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

Linkedin发布分布式数据库SenseiDB

上一篇 / 下一篇  2012-04-02 12:11:57 / 个人分类:其它

文章来源
  • 文章来源:【转载】

U ^F/ut Z.SL~0  知名社交网站Linkedin在今年的一月份发布了分布式半结构化(semi-structured)数据库SenseiDB 1.0.0,并提交到开源社区。Sensei是日语“老师”的发音,不知道Linkedin这样命名的含义在哪,不过作为SNS的领军人物之一,Linkedin的技术能力在业内也是数一数二的。所以废话不多说,在这里分享一下SenseiDB作者Linkedin搜索架构师John Wang(王鉴)对于SenseiDB的介绍。

hh-y R tL A8o0

+I~!^D/X0Z'z0e5p+F0  SenseiDB是一个分布式数据系统,设计用来支持Linkedin网站的一系列搜索功能,包括Signal的实时分面搜索、news feed等。我们可以把SenseiDB看作是一个数据库或者是一个搜索引擎,可以查询和导航由非结构化和结构化数据构成的文档。

t.hneRA/\5{DS0

2Ww.~&gf9e$V:u0  SenseiDB的一些功能特色包括:

X({Yqo~6YJB-T0

"S(V&C0QK tNS0  保证高性能查询的同时能够支持大量的insert/updates操作

\3p@pVF;n0

,A^3l7ARQ \0  通过BQL查询语言和REST/JSON api来支持复杂查询

p(F-y dl2`h+t^-z051Testing软件测试网XbUIP+kx;r!z

  通过不同的Gateways ,如JDBC、JMS和Kafka来串流更新

aN H1m G3S0

9J9J)?;K{0m0  从Hadoop中引导指令,比如用Map-Reduce来批量构建索引并推送到SenseiDB集群

&~2T-q1]G;|,RP051Testing软件测试网!Ux b+ld:J;]@

  能够添加自定义插件以及复杂的逻辑,如社交图表等

i$M:t2FgM0

g;g&yx!Dd UKn ~i0  架构

e?~o~;v&M[0

51Testing软件测试网Y+Zn&W5K$iI

)Yn3~V?]}051Testing软件测试网9n2m [;?5A#F#irT)Kb:_

  插入51Testing软件测试网"gq o_Owm

51Testing软件测试网R zVd|$~ K(Hek

  与其他一些数据库不同,SenseiDB获取数据的方法是通过所谓的gateway。在Linkedin网站中,SenseiDB是通过Kafka和Databus等获取数据流的。SenseiDB依靠外部数据流保障原子性和隔离性,在某种程度上,提交日志是在外部进行。这种设计能够让我们对更新率进行优化,同时最终能够通过复制来提供一致性,而不需要quorum。

t!W }z0O*XUk&t0

e8dB\4S-qV0  查询

(Lk _)s*U*|u2f0

:p%v0o `*i`([/W0  SenseiDB的执行引擎针对大型数据集进行了性能优化,并支持一个非常丰富的查询功能集:51Testing软件测试网\2s2r/\gyQP/q

51Testing软件测试网L1d%S t C k

  · get/getAll,比如一个Key-value检索51Testing软件测试网 Eo%e0{%d

Js]]JU0  · 全文搜索

k-Y i mI&n4P@051Testing软件测试网{X#j)P6B h

  · 类似于SQL的结构化的selects51Testing软件测试网7r&W&}PS

51Testing软件测试网 zdog Z0u^

  · 聚合,如facet counting和group-by

B8Q4D*\ f3uk0

:Z%dN!T_!J4`1q;rX]0  除一个REST/JSON API之外,SenseiDB还支持一个类似于SQL的查询语言——BQL(Browse Query Language)。下面就是BQL查询的使用:

h2?O!_C p0

y ZgmEo0

SELECT _uid,_score,color 51Testing软件测试网cuhPyK9MC(EH
FROM members51Testing软件测试网 \6~;JZW&]m
WHERE color="red" AND 51Testing软件测试网z2x)uZ` }"OLy
      category IN ("van","exotic") AND 
z8Y2ymi3t9p#e5XM0      MATCH(contents) 
;u3c0iM ^3@Xmc0      AGAINST("cool leather seats")51Testing软件测试网\k(`.`$Lg'm"Gy
GROUP BY color TOP 351Testing软件测试网1bD5sb|l$D
BROWSE BY color,category51Testing软件测试网x@"m9Qy2U(B
ORDER BY RELEVANCE
;XJ/s d,m,]"vV@0LIMIT 0,10

L#k'c#w9H'Fu:D051Testing软件测试网F&m\p-V*T(~

  SenseiDB与关系型数据库的对比51Testing软件测试网_+v$iS#P"AN g&c U

RUB6]C0E1V#h0  关系型51Testing软件测试网HbZrn`.P

%sM/NQ;cE$i0  · 纵向扩展

)d:C'R nD051Testing软件测试网-?#nO s,e,M+vr;e

  · 高度的ACID51Testing软件测试网if2Z"s%N-Ln

Ym;a#t.Iv2t7aXb0  · 支持关系型

au+x g!wn0q!Q051Testing软件测试网J x7fQ ^Q2[6Jj

  · 全文整合造成性能损耗51Testing软件测试网 i;q E&I;eU

~Ha |ic0  · 大数据集有较高的查询延迟51Testing软件测试网&dkH e:N#U Y#yB

;?+\ Oa$Z4e+U5Kg0  · 需要对所有sort possibilities构建索引

Z$JP$Gv0?/hf%@\0

j5U/X3Ro6{0  SenseiDB

,g%u`2]%C9m)b051Testing软件测试网4r\@'B4DQ7L

  · 水平扩展

4[(A#~-|ZO.jn0

x-M!j!q O.m6l(]a0  · 高持久性 低一致性51Testing软件测试网sm~u'ekYM.[ s

R-h;nN/U,j ~0  · 数据流形式,原子性和隔离性是由数据产生方控制51Testing软件测试网iY A6B k@~+ap

xn/r(cBR&K0  · 深度的全文整合51Testing软件测试网2o(wY3v"sn+ne

51Testing软件测试网YCx|2nK lic$_#B1g

  · 任意大数据集保障低查询延迟

&dc X)HfPk A;Y0

}G8B}4_M w!iZ0  · 动态排序,针对所有可排序字段及其组合都已构建索引

&S(H;o8h5h.C{/W051Testing软件测试网K+b)p FC&X{L

      原文地址:http://engineering.linkedin.com/open-source/introducing-senseidb-10-open-source-distributed-realtime-semi-structured-database

B:y!r%J@"T`a0

TAG: SenseiDB

 

评分:0

我来说两句

Open Toolbar