PostgreSQL和ElasticSearch学习笔记
PG库
PostgreSQL官⽅介绍称是最先进的开源关系型数据库,⽀持所有主流的平台,⽬前已经更新到了最新版本的12.0,在MySQL被Oracle收购后,PostgreSQL开源社区越来越活跃了,同时还有分布式集的开源⽅案GreenPlum,⽬前也⾮常受欢迎。
pg数据库和mysql的区别是什么
MySQL与PostgreSQL都能运⾏在多个操作系统上,如Linux、Unix、Mac OS X与Windows。他们都是开源、免费的,因此测试他们时的唯⼀代价就是你的时间与硬件。他们都很灵活且具有可伸缩性,可⽤在⼩型系统和⼤型分布式系统 上。MySQL在⼀个领域上要⽐PostgreSQL更进⼀步,那就是它的触⾓延伸到了嵌⼊式领域,这是通过libmysqld实现的。 PostgreSQL不⽀持嵌⼊式应⽤,依然坚守在传统的客户端/服务器架构上。
MySQL通常被认为是针对⽹站与应⽤的快速数据库后端,能够进⾏快速的读取和⼤量的查询操作,不过在复杂特性与数据完整性检查⽅⾯不太尽如⼈意。
PostgreSQL是针对事务型企业应⽤的严肃、功能完善的数据库,⽀持强ACID特性和很多数据完整性检
查。他们⼆者都在某些任务上具有很快的速 度,MySQL不同存储引擎的⾏为有较⼤差别。MyISAM引擎是最快的,因为它只执⾏很少的数据完整性检查,适合于后端读操作较多的站点,不过对于包含 敏感数据的读/写数据库来说就是个灾难了,因为MyISAM表最终可能会损坏。MySQL提供了修复MySQL表的⼯具,不过对于敏感数据来说,⽀持 ACID特性的InnoDB则是个更好的选择。
与之相反,PostgreSQL则是个只有单⼀存储引擎的完全集成的数据库。你可以通过调整f⽂件的参数来改进性能,也可以调整查询与事务。PostgreSQL⽂档对于性能调优提供了⾮常详尽的介绍。
MySQL与PostgreSQL都是⾼可配置的,并且可以针对不同的任务进⾏相应的优化。他们都⽀持通过扩展来添加额外的功能。
⼀. 后台登录
\1. ⾸先切换⾄master⽤户
# su master
\2. 登录PG库,数据库名称为nsc
$ psql -U nsc
\3. 展⽰当前数据库下所有schema信息
nsc=> \dn
\4. 常见命令
\password      设置密码
\q          退出
\h          查看SQL命令的解释,⽐如\h select
\?          查看psql命令列表
\l          列出所有数据库
\c [database_name]  连接其他数据库
\d          列出当前数据库的所有表格
\d [table_name]  列出某⼀张表格的结构
\x          对数据做展开操作
\du        列出所有⽤户
table命令和sql⼀样
ElasticSearch
下载地址
jdk必须是1.8及以上的版本
概述
ElasticSearch,简称es,es是⼀个开源的⾼拓展的分布式全⽂检索引擎,它可以近乎实施的存储、检索数据;本⾝扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使⽤java开发并使⽤Lucene 作为其核⼼来实现所有索引和搜索的功能,但是它的⽬的是通过简单的RESTful API来隐藏Lucene的复杂性,从⽽让全⽂搜索变得简单。
lucene 信息检索⼯具包 不包含搜索引擎系统
Elasticsearch和lucene 是基于lucene做了⼀些封装和增强
是什么 The Elastic Stack, 包括Elasticsearch 、 Kibana、 Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进⾏搜索、分析和可视化。
谁在使⽤
,类似百度百科,全⽂检索,⾼亮,搜索推荐
国外新闻⽹站,类似搜狐新闻,⽤户⾏为⽇志(点击,浏览,收藏,评论)+社交⽹络数据,数据分析。。。
Stack Overflow国外的程序异常讨论论坛
GitHub(开源代码管理),搜索上千亿⾏代码
电商⽹站,检索商品
⽇志数据分析,logstash采集⽇志,ES进⾏复杂的数据分析,ELK技术(elasticsearch+logstash+kibana)
商品价格监控⽹站
商业智能系统
mysql下载后为什么不是一个安装包
站内搜索
ES和solr的差别
ElasticSearch简介
ElasticSearch是⼀个实施分布式搜索和分析引擎。它让你以前所未有的速度处理⼤数据成为可能。它⽤于全⽂搜索、结构化搜索、分析以及将这三者混合使⽤:
使⽤es提供全⽂搜索并⾼亮关键字,以及输⼊实施搜索和搜索纠错等搜索建议功能;英国公报使⽤es结合⽤户⽇志和社交⽹络数据提供给他们的编辑以实施的反馈
es是⼀个基于Apache Lucene(TM)的开源搜索引擎。⽆论在开源还是专有领域,Lucene可以被认为是迄今为⽌最先进、性能最好、功能最全的搜索引擎库。想要使⽤它,必须使⽤java来作为开发语⾔并将其直接继承到你的应⽤中。
solr简介
Solr是Apache下的⼀个顶级开源项⽬,采⽤java开发,是基于Lucene的全⽂搜索服务器。Solr提供了⽐Lucene更为丰富的查询语⾔,同时实现了可配置、可扩展、并对索引、搜索性能进⾏了优化。它可以独⽴运⾏,是⼀个独⽴的企业及搜索应⽤服务器,它对外提供类似于web-service的API接⼝。⽤户可以通过http请求,像搜索引擎服务器提交⼀定格式的⽂件,⽣成索引;也可以通过提出查请求,并得到返回结果。
两者⽐较
当单纯的对已有数据进⾏搜索时,Solr更快
当实时建⽴索引是,Solr会产⽣io阻塞,查询性能较差,ElasticSearch具有明显的优势
随着数据量的增加,Solr的搜索效率会变得更低,⽽Elasticsearch却没有明显的变化
总结
1. es基本是开箱即⽤,⾮常简单。⽽solr会有点复杂。
2. Solr利⽤Zookeeper进⾏分布式管理,⽽elasticsearch⾃⾝带有分布式协调管理功能
3. solr⽀持更多格式的数据,⽐如json xml csv。⽽es只⽀持json⽂件格式
4. solr官⽅提供的功能更多,⽽elasticsearch更注重核⼼功能,⾼级功能由第三⽅插件提供
5. solr查询快,但更新索引时慢,⽤于电商等查询多的应⽤
6. es建⽴索引宽,即实时性查询快,⽤于facebook新浪等搜索
7. solr较成熟,有⼀个更⼤,更成熟的⽤户、开发和贡献者社区,⽽elasticsearch相对开发维护者较少,更新太快,学习使⽤成本较⾼ElasticSearch安装
注:安装ElasticSearch之前必须保证JDK1.8+安装完毕,并正确的配置好JDK环境变量,否则启动ElasticSearch失败。
官⽅⽂档
Elasticsearch 7.8.0下载页⾯
Windows 版的 Elasticsearch 压缩包,解压即安装完毕,解压后的 Elasticsearch 的⽬录结构如下 :
⽬录含义
bin可执⾏脚本⽬录
config配置⽬录
jdk内置jdk⽬录
lib logs类库 ⽇志⽬录
modules模块⽬录
plugins插件⽬录
⽬录含义
解压后,进⼊ bin ⽂件⽬录,点击 elasticsearch.bat ⽂件启动 ES 服务 。
注意: 9300 端⼝为 Elasticsearch 集间组件的通信端⼝, 9200 端⼝为浏览器访问的 http协议 RESTful 端⼝。
{
"name" : "DESKTOP-R91PIL1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "HeSR3Kd_T5ucRm3oEsO1cA",
"version" : {
"number" : "7.13.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "4d960a0733be83dd2543ca018aa4ddc42e956800",
"build_date" : "2021-06-10T21:01:55.251515791Z",
"build_snapshot" : false,
"lucene_version" : "8.8.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
可视化界⾯
cerebro postman head ⾕歌浏览器插件等
ES核⼼概念
ElasticSearch是⾯向⽂档型的数据库,⼀条数据在这⾥就是⼀个⽂档。⽐如:
{
"name" :    "John",
"sex" :      "Male",
"age" :      25,
"birthDate": "1990/05/01",
"about" :    "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
在MySql中这样的数据存储容易想到建⽴⼀张User表,其中有⼀些字段,⽽在es中就是⼀个⽂档,⽂档会属于⼀个User类型,各种各样的类型存储于⼀个索引中。下表是关系型数据库和es的疏于对照表:
关系型数据库(⽐如Mysql)⾮关系型数据库(Elasticsearch)
数据库Database索引Index
表Table类型Type
数据⾏Row⽂档Document
数据列Column字段Field
约束 Schema映射Mapping
集,节点,索引,类型,⽂档,分⽚,映射是什么?
es中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下⼜包含多个⽂
档(⾏),每个⽂档⼜包含多个字段(列)。
物理设计:
es在后台把每个索引划分成多个分⽚,每个分⽚可以在集中的不同服务器中转移。
逻辑设计:
⼀个索引类型,包含多个⽂档,当我们索引⼀篇⽂档时,可以通过这样的顺序到他: 索引-》类型-》⽂档id(该id实际是个字符串),通过这个组合我们就能索引到某个具体的⽂档。
⽂档
es是⾯向⽂档的,意味着索引和搜索数据的最⼩单位是⽂档,es中,⽂档有⼏个重要的属性:
⾃我包含,⼀篇⽂档同时包含字段和对应的值,也就是同时包含key:value
可以是层次性的,⼀个⽂档中包含⾃⽂档,复杂的逻辑实体就是这么来的
灵活的结构,⽂档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使⽤,在es中,对于字段是⾮常灵活的。有时候,我们可以忽略字段,或者动态的添加⼀个新的字段
尽管我们可以随意的添加或忽略某个字段,但是,每个字段的类型⾮常重要。因为es会保存字段和类型之间的映射以及其他的设置。这种映射具体到每个映射的每种类型,这也是为什么在es中,类型有时候也称为映射类型。
类型
类型是⽂档的逻辑容器,就像关系型数据库⼀样,表格是⾏的容器。类型中对于字段的定义称为映射,⽐如name映射为string类型.我们说⽂档是⽆模式的,他们不需要拥有映射中所定义的所有字段,当新增加⼀个字段时,es会⾃动的将新字段加⼊映射,但是这个字段不确定他是什么类型,所以最安全的⽅式是提前定义好所需要的映射。
索引
就是数据库
索引是映射类型的容器,es的索引是⼀个⾮常⼤的集合。索引寻出了映射类型的字段和其他设置。然后他们被存储到了各个分⽚上。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。