iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL 初探
  • 765
分享到

PostgreSQL 初探

PostgreSQL初探 2019-11-15 16:11:54 765人浏览 绘本
摘要

2020 年 2月的总排名为第四名,关系型数据库中排名第四名。排名信息参考:DB-Engines 为了更好地应用的工作中,针对 postgresql 给我造成的疑惑整理了如下内容: (1) Postgresql 版本之间的

PostgreSQL 初探

2020 年 2月的总排名为第四名,关系型数据库中排名第四名。排名信息参考:DB-Engines

为了更好地应用的工作中,针对 postgresql 给我造成的疑惑整理了如下内容:

(1) Postgresql 版本之间的主要区别

(2) PostgreSQL 支持的数据类型

(3) PostgreSQL 存储引擎Heap介绍

(4) 围绕 JSON/jsONB 的全文检索功能以及 12.x 中的 JSON/JSONB Path

1, PostgreSQL 版本之间的主要区别

2020 年 2 月当我们访问 PostgreSQL 官网的时候,通过看到多个 Release 版本,应该怎么选择呢?

PostgreSQL 9.x 版本在 2020 年 2 月的版本是计划中的左右一个 release 版本,所以翻阅了 PostgreSQL 的相关文档后,整理了从 10.X,11.X,12.X 这三个版本的信息。如下图:

通过上面的版本我们发现,给开发人员带来的变化不大,这里列出了 4 项,开发人员经常关注的技术点:

(1)当前支持的数据类型

(2)存储引擎 Heap 具体的特性

(3)围绕 JSON/JSONB 的全文检索功能以及 12.x 中的 JSON/JSONB Path

所以下文将主要研究上面是 4 个技术点。

这里使用了一个 12.2 版本的 PostgreSQL 的 Docker 镜像:

docker pull postgre:12.2

如果对其他版本感兴趣可以访问Docker hub

启动 Postgre

docker run -e POSTGRES_PASSWord=123456 -p 5432:5432 --name potgre12 postgres:12.2

其中的 -e POSTGRES_PASSWORD=123456 是设置 superuser 用户的密码,superuser 的默认 username 是 postgres.

PS:如果不想通过密码访问也可以通过 POSTGRES_HOST_AUTH_METHOD=trust 来允许不需要密码访问。

安装 psql 客户端(如果你还是用其他客户端可以跳过该步骤)

brew install libpq

连接 postgreSQL

psql -h 127.0.0.1 -p 5432 -U postgres --passsword

2,PostgreSQL 支持数据类型

PostgreSQL 中支持多种数据类型。如下图

3,PostgreSQL 存储引擎 Heap 具体特性

PostgreSQL 的存储引擎 Heap 和 Mysql 的 InnoDB 都完全遵循ACID,使用的是行级

4,围绕 JSON/JSONB 的全文检索功能以及 12.x 中的 JSON/JSONB Path

JSON 和 JSONB 的区别在于:

(1) JSON 类型以 JSON 格式存储文本数据,在查询的时候需要先做内容解析,然后进行查询。所以写入快、查询慢。

(2)JSONB 类型以 JSON 格式的二进制形式存储数据,在插入的时候需要做文本解析,查询的时候并不需要做解析,因此写入慢,查询快。

而对 JSON/JSONB 涉及到内容包括,下面的内容对对一条数据的一个简单例子:建表、新建数据、查询、模糊查询、数据更新。

(1)建表

create table boy (
    id int primary key not null, 
    name char(30) not null, 
    infORMation jsonb
);

(2)新建数据

insert into boy (id, name, information) values (1,"Page", "{"age":18}");
insert into boy (id, name, information) values (2,"Aaron", "{"age":18}");
insert into boy (id, name, information) values (3,"Join", "{"age":18, "address":"beijing donGChengqu"}");

(3)查询

# 从 9.4 版本只是的通过 操作符 来查询 age 等于 18 的 student

select * from boy where (information->>"age")::int=18;


# 从 9.4 版本只是的通过 操作符 来查询 address 中以 beijing 开头的 students

select * from boy where (information->>"address")::text like "beijing%";


# 12.x版本支持的 JSON/JSONB Path 方式查询 age 等于 18 的 student

select jsonb_path_query(information, "$.age ? (@==18)") from boy;


# 12.x版本支持的 JSON/JSONB Path 方式查询 address 中以 beijing 开头的 students

select jsonb_path_query(information, "$.address ? (@ starts with "beijing")") from boy;

通过上面的代码不难发现,PostgreSQL 12 中提供的 JSON function 非常好用。更多查询语句可以参考: 官网 json functions

(4)模糊查询(全文检索)

经过尝试默认条件下 PostgreSQL 提供的分词器对中文分词并不好。所以下面将演示英文的全文检索

新建表

create table technical (
   id int primary key not null,
   name tsvector
);

其中 tsvector 的数据类型是是分词器类型。可以执行 select "hello page"::tsvector;来查看分词结果。

插入数据


insert into technical (id, name) values (1, "Test Driven Development"), (2, "Test Driven Design"), (3, "Behave Driven Development");

当搜索关键词 Test和Driven 时应该是显示 2 条结果;

select * from technical where name@@"Test & Driven";

总结

通过上面的几个特性的分析,不难发现 PostgreSQL 提供了强大的功能和函数,上手之前还是需要对其中的函数有个大致的了解。

参考

(1) PostgreSQL 中文网

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL 初探

本文链接: https://www.lsjlt.com/news/4577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis初探
       大概在2010年的时候,有一次和一个同事聊天,那个时候知道了Redis,对于技术的追随至今,还没有下载一个Redis版本玩玩,   只有1万多行代码,以性能惊人...
    99+
    2024-04-02
  • selenium 初探
    1 # -*- coding:utf-8 -*- 2 3 from selenium import webdriver 4 driver = webdriver.Firefox() # 打开firefox浏览器 5 driver.g...
    99+
    2023-01-30
    selenium
  • AS3初探
    开发工具:FLEX BUILDER3 PRO   语言:AS 3.0   操作系统:Windows XP SP2   1.       在flex3 里新建一个AS工程取名为lo...
    99+
    2023-01-31
  • Python 初探
     按照计划,今年要学习一门面向对象的语言,学习的范围锁定几门,PHP/PERL/PYTHON/RUBY,由于上半年学了bash,感觉python比较适合自己。从今天开始不定期的出一些笔记出来 #! /usr/bin/python   ID...
    99+
    2023-01-31
    Python
  • 1、python-初探
    语言包括编译型语言和解释型语言编译型:全部翻译,再执行;c、c++解释型:边执行边翻译;python、php、java、c#、perl、ruby、javascript 一、系统位数32位系统内存的最大寻址空间位2**32,4GB64位系统...
    99+
    2023-01-31
    python
  • ORM初探(一)
    Object Relational Mapping(ORM): 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描...
    99+
    2023-01-31
    ORM
  • python unittest初探
    待测试的类:class Request:    url = ""    method = ""    paras = {}    def __init__(self,url):        self.url = url        se...
    99+
    2023-01-31
    python unittest
  • Python Metaclass 初探
    先以一个大牛的一段关于Python Metapgramming的著名的话来做开头: Metaclasses are deeper magic than 99% of users should ever worry about. If yo...
    99+
    2023-01-31
    Python Metaclass
  • Javascript之JSBridge初探
    目录JSBridge 的起源JSBridge 的双向通信原理JS 调用 NativeNative 调用 JSJSBridge 的使用总结JSBridge 的起源 近些年,移动端普及化...
    99+
    2024-04-02
  • RN 技术探索:Hermes Engine 初探
    桔妹导读:自从 Google 的 Flutter 发布之后,Facebook 对 React-Native 的迭代开始快了起来,优化 React-Native 的性能表现,避免被 Flutter 比下去。最近一个比较大的动作是开源了一个 J...
    99+
    2023-06-03
  • Golang初探:探索之路开始
    【Golang简介:一切从这里开始】 Golang,也被称为Go语言,是一种由Google开发的开源编程语言。自2007年开始设计,2009年正式发布,Golang以其出色的性能、简洁...
    99+
    2024-02-24
    golang 简介 开始 go语言 网络编程 在线课程 垃圾回收器 golang开发 标准库
  • python之初探编程
        接触python语言完全是个偶然。那时候还在一所培训学校里学习网络和系统,和朋友一起去图书馆淘书,转遍了整个楼层,只是找到了一两本感兴趣的计算机方面的书,朋友选的很快,开始催我回去了,真是纠结,拿着借阅卡一次可以借5本,图书馆也挺远...
    99+
    2023-01-31
    python
  • 初探 Windows 7 M3 Buil
    通过 VPC 体验 Windows 7 M3By Windows 7 M3 Build 6801        前面我就从当前系统以升级方式来安装 Windows 7 M3 Build 6801.0.080913-2030(以下简称:Win...
    99+
    2023-01-31
    Windows Buil
  • 初探Java之旅:探寻Java的奥秘
    ✨个人主页:全栈程序猿的CSDN博客 💨系列专栏:Java从入门到精通 ✌座右铭:编码如诗,Bug似流星,持续追求优雅的代码,解决问题如同星辰般自如 在计算机编程的世界中,有一门被誉为“千变万化”的编程语言——Jav...
    99+
    2023-12-23
    java
  • 初探OCFS2-配置服务
    初探OCFS2-配置服务2016/11/28目的:研究如何使用 iscsi 存储。 一、认识 据zstack的童鞋们介绍:OCFS2是主流对接 SAN 云存储的方式...
    99+
    2024-04-02
  • Postgresql和mysql的区别探究
    PostgreSQL和MySQL是两个流行的关系型数据库管理系统(RDBMS),具有各自的特点和优点。虽然两种数据库都可以处理大量数据,但在不同情况下,会有一些区别。下面将着重介绍PostgreSQL和MySQL的区别,并附带案例说明。  ...
    99+
    2023-09-01
    数据库 postgresql mysql
  • 初探oVirt-体验sdk-python
    日期:2015/10/20 - 2015/12/8 time 16:09主机:n86目的:初探oVirt-体验sdk-python操作内容: 一、说明 使用sdk-python 通过pip安装 ovirt-engine-sdk-python...
    99+
    2023-01-31
    oVirt sdk python
  • java 反射机制初探
    最近再看书时,书中使用了java的动态代理机制,随即在网上搜了些文章看了一下,既然有动态代理那就有静态代理,所谓静态代理,就是在你些的代理类中需要使用到具体的被代理类。而所谓动态代理,则不需要在代理类中使用到被代理类,根本不知道起要代理那个...
    99+
    2023-06-03
  • python 初探状态机transiti
    偶然接触一个python的关于状态机的库,简单demo如下:# coding=utf-8 ############################################################## # 目标:"so...
    99+
    2023-01-31
    状态机 python transiti
  • vue 单元测试初探
    目录前言 为什么要引进单元测试? 单元测试概述 测试开发的模式 1. 测试驱动开发(TDD - Test Driven Development) 2. 行为驱动开发(BDD - Be...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作