浅谈搜索引擎和传统数据库(ES,solr)
作为小白一枚,一直不理解既然已经有数据库存储的数据了,为什么还要有搜索引擎这些东西,而且这些搜索引擎和数据库之间是怎样的联系或者协同工作的。最近研究了很多,慢慢的好像理解了其中意思了,所以在此分享,也有可能是我理解错了,欢迎各位大神指正。
ES(ElasticSearch)是一款分布式全文检索框架,底层基于基于Lucene实现。
Elasticsearch是提供持久存储、统计等多项功能的现代搜索引擎。
首先,ES更多是面向搜索的,而database是面向数据存储的,查询其次。
其次,SQL数据库和ES存储,需要根据数据的组成、数据库选择对应的同步插件,使得两存储之间实时同步。
举个例子,ES搜索引擎。
ES与传统数据的区别主要有:
1.结构名称不同
一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(表),类型中包含了很多文档(行),每个文档使用 JSON 格式存储数据,包含了很多字段(列)。
关系型数据库 |
数据库 |
表 |
行 |
列 |
ElasticSearch |
索引 |
类型 |
文档 |
字段 |
2.ES分布式搜索,传统数据库遍历式搜索
ES支持分片和复制,从而方便水平分割和扩展,复制保证了es的高可用与高吞吐。
在ES中,当你创建一个索引(数据库)的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的索引(数据库),索引可以被放置到集群中的任何节点上。分片优点:
(1).允许你水平分割/扩展你的内容容量
(2).允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量
(3).分片的分布,它的文档怎样聚合回搜索请求,完全由Elasticsearch管理
3.ES采用倒排索引,传统数据库采用B+树索引
假设一个文档(用id标识)是有许多的单词(用value标识)组成的,每个单词可能同一个文档中重复出现很多次,也可能出现在不同的文档中。
正排索引:从文档角度看其中的单词,表示每个文档都含有哪些单词,以及每个单词出现了多少次(词频)及其出现位置(相对于文档首部的偏移量)。
倒排索引:从单词角度看文档,标识每个单词分别在那些文档中出现(文档ID),以及在各自的文档中每个单词分别出现了多少次(词频)及其出现位置(相对于该文档首部的偏移量)。
简单理解,
正排索引:id ---> value
倒排索引:value ---> id
ES中为所有字段默认都建了倒排索引。
4.ES没有用户验证和权限控制
5.ES没有事务的概念,不支持回滚,误删不能恢复
6.ES免费,完全开源;传统数据库部分免费
因为小弟目前的开发只用到了ES,就大体说了下基本概念,不然我怕好多小伙伴和我似的,最开始跟没头的苍蝇一样,不知道怎么入手。文章也没有深入去讲,只是给各位小伙伴一些抽象的理解,来大体了解搜索引擎到底是个什么东东,也或许小弟理解有错误,还望各位大佬多多指正,你们的指正和补充建议,都是小弟我前进的方向和动力。
后续会慢慢完善ES篇。至于solr,目前还没有接触,只是以前有JAVA组同事使用来着。以后有时间再深入了解吧。
浅谈搜索引擎和传统数据库(ES,solr)相关推荐
- 浅谈目前主流NoSql数据库
浅谈目前主流NoSql数据库,编程学习资料点击免费领取 前言 无意翻资料发现目前好多noSql数据库,但是工作中貌似并没有接触到,很好奇他们的区别,所以就有了这篇文章.(整合了网上许多大佬的文章,如有 ...
- .net mysql和php mysql数据库连接_浅谈PHP连接MySQL数据库的三种方式
本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql.mysqli.pdo),结合实例形式分析了PHP基于mysql.mysqli.pdo三种方式连接MySQL数据库的相关操作技巧与 ...
- 浅谈搜索引擎——SEO
浅谈搜索引擎--SEO 浅谈SEO 如何快速提高网站的权值及浏览量 有效方式,专业检测网站的流量 SEO 与SEM的区别 SEO(Search Eneginee Optimization) 搜索引擎优 ...
- 浅谈DM达梦数据库体系结构概念
浅谈DM达梦数据库体系结构概念 DM逻辑结构 DM和Oracle一样也分数据库和实例,两者的概念也基本一致. 但是不同点在于:达梦是单进程.多线程,而oracle是多进程的. DM这种对称服务器构架在 ...
- 浅谈搜索引擎工作原理
做为网页开发者,仅仅会编写代码完成业务功能是远远不够的,你做的网站最后需要搜索引擎这个公共入口来呈现给用户.所以搜索引擎优化是及其重要的,而要了解如何优化自己的网站从而适应搜索引擎,我们需要先了解搜索 ...
- 浅谈搜索引擎技术原理与架构
转载自:https://www.cnblogs.com/faruxue/p/4932009.html 搜索引擎是我们非常熟悉的互联网产品,上网都离不开搜索,毫无疑问,在pc端,是多数流量的入口.大家都 ...
- 浅谈搜索引擎百度分词技术
scottlinn为了让大家更好的理解如何去选择关键字词,特意做了一些分词测试试验,归纳了一些关于搜索引擎百度分词的经验向大家分享.希望可以帮助站长们更深层的理解搜索引擎分词技术,做好自己的网站,获得 ...
- 浅谈公安部声纹数据库的建设与应用
一.什么是声纹识别? 声纹识别,也叫做说话人识别,是一项根据语音波形中反映说话人生理和行为特征的语音参数,来识别语音说话者身份的技术.由于每个人的发声器官(舌.牙齿.喉头.肺.鼻腔)在尺寸和形态方面不 ...
- 浅谈搜索引擎排序2020-09-04
我们站长圈经常聊的话题就是如何把关键词排名提升到前三,往往都是众说纷纭,难以得出标准答案.也有很多圈外的朋友很好奇什么是百度搜索排序,又该如何提升搜索排序? 至于什么是搜索排序我就不做解释了,在这里和 ...
最新文章
- 一块GPU如何模拟猴子大脑?
- 离开硅谷11年后总结出的4条经验教训
- 厦大AI研究院今日揭牌成立:数学系校友陈纯院士领衔
- Flutter retrofit:only “package“ and “asset“ schemes supported
- 利用SOS分析调试托管代码--(1)
- 权重初始化方式对神经网络迭代次数的影响
- [Array]Pascal's Triangle II
- 深度学习入门之PyTorch学习笔记:卷积神经网络
- python基础——Linux系统下的文件目录结构
- C++ 学习之旅(2)——链接器Linker
- 对于我今后人生受益匪浅的几句话
- SQL - server 数据库基础知识
- javascript实现的一个信息提示的小功能/
- 城市轨道交通运营票务管理论文_城市轨道交通运营企业的票务组织管理
- java类和对象的基础(笔记)
- java day03【 流程控制语句】
- php中多重继承,PHP如何使用接口实现多重继承?(代码示例)
- C语言冒泡排序算法详解
- 曼昆微观经济学--十大原理
- 期货日内交易小经验-开仓篇
热门文章
- 神策数据张铎:一文读懂神策私有化部署的架构演进
- 宽带中国战网平台CS中一般问题解答
- web切图怎么做_web前端人员自行切图教程
- java 行政区划获取代码 省/市/县/乡镇/街道/村委会 层级 DivisionAdvUtil 爬虫获取完整的行政区划 代码完整 可运行
- 欧拉扬帆 潇湘启航 | 湖南欧拉操作系统生态大会圆满召开
- 一个Python猜字小游戏
- 0202年刷脸时代,你还在担心“假脸”骗局?
- 小米手环6NFc支持Android,小米手环6nfc版使用教程_小米手环6nfc版使用方法
- Lacrimosa全集纳米盘下载(22CD1DVD)[APE]
- C/C++校园导航图的实现