YT7W2iQ6^0 知名社交网站Linkedin在今年的一月份发布了分布式半结构化(semi-structured)数据库SenseiDB 1.0.0,并提交到开源社区。Sensei是日语“老师”的发音,不知道Linkedin这样命名的含义在哪,不过作为SNS的领军人物之一,Linkedin的技术能力在业内也是数一数二的。所以废话不多说,在这里分享一下SenseiDB作者Linkedin搜索架构师John Wang(王鉴)对于SenseiDB的介绍。
r]fUJ$~M0o
`9wbi%u)k1}0 SenseiDB是一个分布式数据系统,设计用来支持Linkedin网站的一系列搜索功能,包括Signal的实时分面搜索、news feed等。我们可以把SenseiDB看作是一个数据库或者是一个搜索引擎,可以查询和导航由非结构化和结构化数据构成的文档。
]]yI L9SP d-^0] g5w3`a1P0 SenseiDB的一些功能特色包括:51Testing软件测试网5D9PY`!wH4Qzy
2Q_aau)D1N0 保证高性能查询的同时能够支持大量的insert/updates操作
2Zq h `H&?051Testing软件测试网Bu,@ qC2w:~p L6E 通过BQL查询语言和REST/JSON api来支持复杂查询51Testing软件测试网+y4_VO_Ov
7d
xmu({Hm0 通过不同的Gateways ,如JDBC、JMS和Kafka来串流更新51Testing软件测试网8EF*?M DnV&r^8s
51Testing软件测试网`RutKe*P5A 从Hadoop中引导指令,比如用Map-Reduce来批量构建索引并推送到SenseiDB集群
6E}T;L m,KnO%Q051Testing软件测试网M;^{]k 能够添加自定义插件以及复杂的逻辑,如社交图表等
4E6zm~x051Testing软件测试网9LF*ak dG;c3| 架构51Testing软件测试网
VUr'CX i%_
51Testing软件测试网&f\gb%f
51Testing软件测试网FRhL)\'kNw"Q8a
51Testing软件测试网` ?Aia3{%E| 插入51Testing软件测试网Zka,G)wCf
51Testing软件测试网*l$SdThBQ8l 与其他一些数据库不同,SenseiDB获取数据的方法是通过所谓的gateway。在Linkedin网站中,SenseiDB是通过Kafka和Databus等获取数据流的。SenseiDB依靠外部数据流保障原子性和隔离性,在某种程度上,提交日志是在外部进行。这种设计能够让我们对更新率进行优化,同时最终能够通过复制来提供一致性,而不需要quorum。
2p)R,c2s'R051Testing软件测试网f
jIg)I8O4v? 查询51Testing软件测试网CrK!x:EuE
`(\
3Lc1xX
h)q`0 SenseiDB的执行引擎针对大型数据集进行了性能优化,并支持一个非常丰富的查询功能集:
I.lNcs~n.P051Testing软件测试网w:u v-o{ · get/getAll,比如一个Key-value检索
P"_e
KY3j\0g:f051Testing软件测试网:dn8TghJk%v2y$m · 全文搜索51Testing软件测试网iM
|2n }
51Testing软件测试网~$H e+GNJv · 类似于SQL的结构化的selects51Testing软件测试网Q U;`'f$HU+EI
#O^'j6E,SM]0 · 聚合,如facet counting和group-by51Testing软件测试网c-sz{Q
51Testing软件测试网vGRHF,WP8q&iv 除一个REST/JSON API之外,SenseiDB还支持一个类似于SQL的查询语言——BQL(Browse Query Language)。下面就是BQL查询的使用:51Testing软件测试网 rJ#]$d1Io R"x"?
51Testing软件测试网5c&TBZZ!Z
rP&MSELECT _uid,_score,color 51Testing软件测试网^cv
M/hB FROM members51Testing软件测试网f6GzNrI WHERE color="red" AND 51Testing软件测试网c{@]6c"Z9e category IN ("van","exotic") AND 51Testing软件测试网_hR&@*QT MATCH(contents) H4]!C2EGim0k\0 AGAINST("cool leather seats")51Testing软件测试网xjO"v(d'LH GROUP BY color TOP 3 1r&U'xzK'kHX0BROWSE BY color,category 2v.e`,N1P0ORDER BY RELEVANCE51Testing软件测试网5oI5`$O!Y9c{ LIMIT 0,10 |
F w-og6}PC b3Ot051Testing软件测试网#l4Q`
TKa-\j SenseiDB与关系型数据库的对比51Testing软件测试网ou)eJeS
9uAqt
V9A9[!`)]0 关系型51Testing软件测试网&sG*a6s8}'S
IL.B2e/J0 · 纵向扩展
Q
HVGT1H(i:]0OZm
[ w5B9b1h4D0 · 高度的ACID51Testing软件测试网#Jj.aA&a,z
51Testing软件测试网4iP-b-D RTV · 支持关系型
gh!Mz7L+k
swa0o5V|m-b']$~%z:f0 · 全文整合造成性能损耗
$I`X X)s#~t:d01y,{.^:oJm7^0 · 大数据集有较高的查询延迟
W"l1I{@x-G08oW{$F*]:G~0 · 需要对所有sort possibilities构建索引51Testing软件测试网
b2D4Xs(F+m&n
_LS\;}1j5z:G0 SenseiDB
"ERdR1\0*w#k$l;h1N0 · 水平扩展
i"uL_ji0:hm~&nb3t
P
ew0 · 高持久性 低一致性51Testing软件测试网$y,_5ZdfTK$QP
.h]gJ6cX_l0 · 数据流形式,原子性和隔离性是由数据产生方控制
*b6W:|VrP1Lv051Testing软件测试网2cp;A'kj by&i · 深度的全文整合51Testing软件测试网s*Co7lV Lm;[M
5R&Rc/A*p1JY0 · 任意大数据集保障低查询延迟
$\VCM(W9N0I7u0G"X(K+_q;@#snt Be0 · 动态排序,针对所有可排序字段及其组合都已构建索引51Testing软件测试网7{)\Y)N-oI'V
v4a%y+Y3Y8`0 原文地址:http://engineering.linkedin.com/open-source/introducing-senseidb-10-open-source-distributed-realtime-semi-structured-database