版权所归:https://www.youtube.com/watch?v=6K0Sds9Y2N0
数据库的分类:
归纳总结:
1)Relational 数据库在意的是用foreign key去维持表的integrity. 犹如医院的病患系统,一张诊断表,必须要医生的ID(必要的维持integrity的foreign key)、病人的ID(另一个foreign key)以及当前诊断ID(目前表的primary key)。参考之前写过的一篇关于START的文章。
2)Key-value store在意的是能resilent地应对unpredictable的workload,以及不需要像relation那样规定每一个entry必须有一定有specific number的属性。像一个卖书网站,存储书的属性可以使用key-value store。在视频中的例子,提到了在aws上可以通过manage data steam的batch size为1,让每次修改的数据都能及时更新到search database (这里用elastic search)去update index。从而使得search也能及时更新。
3)Document 最大的特点是其数据是以JSON形式的key-value文档来表示。JSON和yaml都有一个好处就是能模仿数组来创造集合。集合是文档灵活性的重要体验之一。另外一个文档的灵活性体现在可以随时插入新的数据和删除现有数据。如果你的数据需要这种灵活性,那么文档型数据库就是你的选择。例如:user的profile。有时候你需要插入新的属性: 例如25% promotion applied?Honor属性则需要一个数组来维护。
4)In-memory则主要应对real-time的analysis的情况。in-memory相当于把传统数据库的硬盘读写那部分去掉,只把cache留下来。你也可以通过手动设置某个内容的expire时间,过了这个时间,这个数据就不复存在。一个传统的应用例子是用reddis的sort_set来做书本畅销榜的实时排名。一切水到渠成。
5)Graph数据库跟relational数据库其实有点像。但是graph的节点可以视为noun,connection则是描述他们的关系。graph数据库不需要像relation数据库那样强调foreign key来保护数据的integrity。在如“群体网络”这样的应用下,有天然的优势。
6)Search数据库。Search数据库,人如其名,是为了search。所以其有对数据index的功能。Elastic search是aws用的search 技术。主要是对关键词搜索时通过index快速查找出相关文章并rank (如pagerank算法)。
7)Time series数据库:着重在我们不单需要数据在某个时间点的值,还需要分析数据在某个时间段的变化范围、变化趋势和量化其趋势。
8)Ledger数据库:两个特征。Immute,不能修改。同时,加密验证。通过维护一个journal(日志),日志的每一项都是通过hash生成签名以便于验证。然后通过这个journal,生成history表格来查看修改记录以及current表格来显示最新的数据。(DMV的vehicle report就是一个很好的应用例子)。