数据存储是现在的一个热点话题,互联网时代各种存储框架层出不穷,眼花缭乱,比如传统的关系型数据库: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默认对所有字段都建了索引,所以比较适合复杂的检索或全文检索。
关于数据存储的知识,本篇文章就介绍到这里了,其实,小编还写了有关数据存储的其他知识的文章,对此感兴趣的小伙伴们,还不赶快去看一下吗。
版权声明:本文为Yun88网的原创文章,转载请附上原文出处链接及本声明。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
2022-11-22 11:06:37
2022-11-21 10:37:49
2020-04-17 21:46:20
2022-11-22 11:07:01
2022-11-24 10:14:39
2022-11-24 10:18:15
甄选10000+数字化产品 为您免费使用
申请试用
评论列表