pg数据库nosql,pg数据库全称
为什么我在postgresql的json数据中查询,速度会比mysql慢很多
David Bolton是一名独立开发者,他使用PostgreSQL和MySQL都已有超过十年的时间。近日,他撰文阐述了选择PostgreSQL而不是MySQL的理由。他认为,MySQL之所以仍然如此流行是因为每个Linux Web托管软件包中都包含它。但随着Oracle将其收购,MySQL的开源程度大不如前。而PostgreSQL不仅发展更快,还加入了JSON支持,成为少数几个支持NoSQL的关系型数据库之一。
成都创新互联专注于泰顺企业网站建设,成都响应式网站建设公司,购物商城网站建设。泰顺网站建设公司,为泰顺等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
MySQL/MariaDB的当前版本是5.7.6(MariaDB为MySQL创建者Monty Widenius创建的一个MySQL分支),PostgreSQL的版本是9.4.1。Bolton从以下几个方面对比了两者的最新版本:
ANSI标准兼容性:与先前的版本相比,MySQL已经有了长足的进步,但MySQL背后的哲学是,如果客户喜欢,他们就会支持非标准扩展,而PostgreSQL从开始就将标准构建到平台里。不过,二者殊途同归,差别不大;
ACID遵从性:PostgreSQL有一个存储引擎,而MySQL有9个,但只有MyIsam和InnoDB与大部分用户有关,其中,后者为默认存储引擎。InnoDB和PostgreSQL都完全遵循ACID,差别不大;
无锁表修改:MyIsam使用表级锁来提升速度,这会导致写互斥。但PostgreSQL和InnoDB均使用行级锁,差别不大;
子查询:长期以来,这一直是MySQL的一个弱点,虽然5.6.5作了重大改进,但PostgreSQL对表连接支持得更好,尤其是MySQL不支持全外连接,因此,这方面PostgreSQL胜过MySQL;
JSON支持和NoSQL:PostgreSQL最近增加了JSON支持,与传统的关系型数据库相比,它提供了更大的数据存储灵活性,因此,这方面PostgreSQL胜过MySQL。
此外,Bolton指出,选择PostgreSQL还有如下理由:
更好的许可:PostgreSQL采用类似MIT的许可协议,允许开发人员做任何事情,包括在开源或闭源产品中商用,而MySQL的客户端遵循GPL许可协议,所以开发人员必须向Oracle付费或者将自己的应用程序开源;
更好的数据一致性: PostgreSQL会在数据插入和更新之前进行严格的验证,确保数据合法才会进行相应的操作,但在MySQL中,开发人员需要将服务器设定为严格SQL模式才能达到同样的目的,否则可能会产生不规范数据;
服务器扩展:MySQL提供了插件程序API,支持C/C++或任何兼容C的语言,而且从5.7.3版本开始支持全文搜索,PostgreSQL有一个类似的系统但支持的语言更多,包括C/C++、Java、.Net、Perl、 Python、Ruby、Tcl、ODBC等,它甚至可以在单独的进程中运行用户提供的代码;除了所有关系型数据库都包含的有关数据库、表和列的一般信息外,PostgreSQL系统目录中还可以包含关于数据类型、函数和存取方法的信息,开发人员可以通过修改这些信息实现扩展。
Python学哪个数据库
主流的关系型数据库:
1. MySQL:目前使用最广泛的开源、多平台的关系型数据库,支持事务、符合ACID、支持多数SQL规范。
2. SQL Server:支持事务、符合ACID、支持多数SQL规范,属于商业软件,需要注意版权和licence授权费用。
3. Oracle:支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,功能最强大、最复杂、市场占比最高的商业数据库。
4. Postgresql:开源、多平台、关系型数据库,功能最强大的开源数据库,需要Python环境,基于postgresql的time
scaleDB,是目前比较火的时序数据库之一。
非关系型数据库:
非关系型数据库也被称为nosql,作为关系型数据库的一个补充,能在特定场景和特点问题下发挥高效率和高性能。
常见的非关系型数据库类型有键值存储数据库和面向文档数据库。
键值存储数据库类似hash,通过key做添加、删除、查询、性能高,优势在于简单、易部署、高并发,主要产品有:
Redis:开源、Linux平台、key-value键值型nosql数据库,简单稳定,非常主流的、全数据in-momory,定位于快的键值型nosql数据库。
Memcaced:一个开源的、高性能的、具有分布式内存对象的缓存系统,通过它可以减轻数据库负载,加速动态的web应用。
面向文档数据库以文档的形式存储,每个文档是一系列数据项的集合,每个数据项有名称与对应的值,主要产品有:
MongoDB:开源、多平台、文档型nosql数据库,最像关系型数据库,定位于灵活的nosql数据库。适用于网站后台数据库、小文件系统、日志分析系统。
为什么PostgreSQL比MongoDB还快
PostgreSQL9.4带来了全新的NoSQL特性,并且根据EnterpriseDB的测试,其加载,插入和查询的性能都已经几倍于MongoDB了。
虽然我是PG的铁杆粉丝,但是关系数据库背负了ACID的重型装甲,在性能上居然能打败轻装上阵的NoSQL数据库总觉得有点离谱。
所以我在自己的环境里验证了一下EnterpriseDB的测试结果,并且小探一下PG取胜的原因。
1. EnterpriseDB的测试结果
以下是EnterpriseDB的测试结果(数据量为5000万)
(还可以参考这篇译文: )
2. 我的验证结果
测试观点
为了使测试结果更加单纯,我准备单纯比拼CPU消耗(尽量排除IO和网络的干扰),设定以下测试条件。
1)所有数据都要放进内存
2)C/S都跑在同一台单机上
所以,只在单机上进行10万条小数据量的测试。
注)EnterpriseDB的测试环境是32G内存的Amazon Web Services M3.2XLARGE实例,总数据量超过内存了。
测试环境
测试环境为个人PC上的VMware虚拟机
PC
CPU:Intel Core i5-3470 3.2G(4核)
MEM:6GB
SSD:OCZ-VERTEX4 128GB(VMware虚拟机所在磁盘,非系统盘)
OS:Win7
VMware虚拟机
CPU:4核
MEM:1GB
OS:CentOS 6.5
PG:PostgreSQL 9.4.0(shared_buffers = 428MB,其他是默认值)
MG:MongoDB 3.0.2
测试步骤
测试步骤非常简单,可以参考:
但是,在测试前,有些东西要改。
1)把数据量减小到10万
pg_nosql_benchmark-master/pg_nosql_benchmark:
declare -a json_rows=(10000000)
==
declare -a json_rows=(100000)
2)修改mongo的一处脚本(注)
pg_nosql_benchmark-master/lib/mongo_func_lib.sh:
collectionsize="$(echo ${output}|awk -F"," '{print $5}'|cut -d":" -f2)"
==
collectionsize="$(echo ${output}|awk -F"," '{print $6}'|cut -d":" -f2)"
注)pg_nosql_benchmark原来是基于MongoDB 2.6设计的,MongoDB 3.0的db.json_tables.stats()输出可能变了,所以这边要修改一下。
PostgreSQL开源免费企业级数据库用着比较爽的地方有哪些?
1),PostgreSQL是通用型数据库。
PG有着丰富的数据类型(数值、字符、时间、布尔、货币、枚举、网络地址、JSONB等等)和索引类型( B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN等 )。可以存储和计算大多数场景的业务数据,如 ERP、交易系统、财务系统涉及资金、客户等信息,数据不能丢失且业务逻辑复杂,选择 PostgreSQL 作为数据底层存储,一是可以帮助您在数据一致性前提下提供高可用性,二是可以用简单的编程实现复杂的业务逻辑 。适合各种OLTP和部分OLAP场景。
2),PostgreSQL数据库包含许多第三方插件。
如PostGIS等可以直接在数据库里进行地理位置相关的gis类存储和运算(LBS地理位置相关业务等O2O场景),其他的插件如Pg_stat_statements、uuid-ossp、pg_trgm、btree-gist插件、 pgcrypto加密等插件 。
3),中小型企业快速搭建 数据仓库和数据分析平台(TB级别)
PostgreSQL 提供丰富的数据类型和强大的计算能力,能够帮助您更简单搭建数据库仓库或大数据分析平台,为企业运营加分。
4),冷热分离
针对流水类的大表,PG可以使用分区表,线上保留热数据, 历史 数据存放在分区表里或者OSS等冷数据平台,冷热分离。
5),公有云支持度高如阿里云、腾讯云、华为云等公有云都有对应的RDS-PG产品,开箱即用,并提供技术支持。
OLTP:事务处理是PostgreSQL的本行
OLAP:ANSI SQL兼容,窗口函数,CTE,CUBE等高级分析功能,任意语言写UDF,citus分布式插件
流处理:PipelineDB扩展,Notify-Listen,物化视图,规则系统,灵活的存储过程与函数编写
时序数据:timescaledb时序数据库插件,分区表,BRIN索引
空间数据:PostGIS扩展(杀手锏),内建的几何类型支持,GiST索引。
搜索索引:全文搜索索引足以应对简单场景;丰富的索引类型,支持函数索引,条件索引
NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL数据库的外部数据包装器
数据仓库:能平滑迁移至同属Pg生态的GreenPlum,DeepGreen,HAWK等,使用FDW进行ETL
当前名称:pg数据库nosql,pg数据库全称
转载来于:http://scyanting.com/article/dsggopg.html