还不快来了解一下数据存储方式吗?-Yun88网(转载)

楼主:搜学校_cc小编 时间:2020-09-28 11:47:46 点击:1010 回复:1
脱水 打赏 看楼主 设置

字体:

边距:

背景:

还原:

  数据存储是现在的一个热点话题,互联网时代各种存储框架层出不穷,眼花缭乱,比如传统的关系型数据库:Oracle、MySQL。新兴的NoSQL:HBase、Cassandra、Redis。全文检索框架:ES、Solr等。

  如何为自己的业务选取合适的存储方案,相信大家都思考过这个问题。本文简单聊聊小编自己对于Mysql、HBase、ES的理解。希望能和大家一起探讨进步,有不对的地方也欢迎系小伙伴们指出。

  数据存储方式

  如果我们想要知道有哪些文档含有you这个关键字,首先可以创建一个倒排索引,格式如下。

  我们把前面的部分叫做dictionary(字典),里面的每个单词叫做term,后面的文档列表叫做psoting-list,list中记录了所有含有该term的文档id。两个组合起来就是一个完成的倒排索引(Inverted Index),能够看出,假如需要查找含有“you”的文档时,根据dictionary然后找到对应的posting-list即可。

  而全文检索中,创建Inverted Index是最关键也是最耗时的过程,而且真正的Inverted Index结构也远比图中展示的复杂。不仅需要对文档进行分词,ES里中文可以自定义分词器,还要计算TF-IDF。方便评分排序,当查找you时,评分决定哪个doc显示在前面,也就是所谓的搜索排名。压缩操作,每接收一个document,ES就会将其信息更新在倒排索引中。

  从这里我们就可以看出ES和MySQL、HBase的存储还是有很大的区别,而且ES不仅包含倒排索引。默认同时还会把文档doc存储起来,所以当我们使用ES时,也能拿到完整的文档信息。所以某种程度上,感觉就像在使用数据库一样。但是也可以配置不存储文档信息,这时只能根据查询条件得到文档id,并不能拿到完整的文档内容。

  MySQL行存储的方式比较适合OLTP业务,列存储的方式比较适合OLAP业务,而HBase采用了列族的方式平衡了OLTP和OLAP。支持水平扩展,如果数据量比较大、对性能要求没有那么高、并且对事务没有要求的话。HBase也是个不错的考虑。ES默认对所有字段都建了索引,所以比较适合复杂的检索或全文检索。

  关于数据存储的知识,本篇文章就介绍到这里了,其实,小编还写了有关数据存储的其他知识的文章,对此感兴趣的小伙伴们,还不赶快去看一下吗。

  本文转自https://www.yun88.com/

打赏

0 点赞

主帖获得的天涯分:0
举报 | 楼主 | 埋红包
楼主发言:1次 发图:0张 | 添加到话题 |
发表回复

请遵守天涯社区公约言论规则,不得违反国家法律法规