2023年6月25日发(作者:)
PG(postgresql)数据库PG(postgresql)数据库PG是⼀个强⼤的开源对象关系型数据库系统。使⽤和扩展了sql语句,结合许多安全存储和扩展最复杂数据⼯作负载的功能,PG可靠性,数据完整性,强⼤的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如⼀地提供⾼性能和创新的解决⽅案。除了免费和开源之外,Postgre SQL还具有⾼度的可扩展性。例如,你可以定义⾃⼰的数据类型,构建⾃定义SQL函数(此sql函数在另⼀篇帖⼦讨论:点此跳转),甚⾄可以编写来⾃不同编程语⾔的代码,⽽不需要重新编译数据库。
基本操作命令:Insert语句:INSERT INTO TABLE_NAME (column1,column2) VALUES (value1,value2)SELECT语句:SELECT * FROM TABLE_NAMEUPDATE语句:UPDATE TABLE_NAME SET column1=value1,column2=value2 where [条件]DELETE语句:DELETE FROM TABLE_NAME WHERE [条件];条件查询有:AND 条件 OR 条件 AND & OR 条件 NOT 条件LIKE 条件 IN 条件 NOT IN 条件 BETWEEN 条件
数据类型1.基本类型:Integer, Numeric, String, Boolean2.结构类型:Date/Time, Array, Range, UUID3.⽂档类型:JSON/JSONB, XML, Key-value(Hstore)4.⼏何类型:Point, Line, Circle, Polygon5.⾃定义类型:Composite, Custom Types数据的完整性1.唯⼀性,不为空2.主键3.外键4.排除约束5.显式锁定,咨询锁定 并发性,性能1.索引2.⾼级索引3.复杂的查询计划期/优化器4.交互5.多版本并发控制(MVCC)6.读取查询的并⾏化和构建B树索引7.表分区标准中定义的所有事物隔离级别,包括Serializable9.即时表达式汇编(JIT)
可靠性,灾难恢复1.预写⽇志(WAL)2.复制:异步,同步,逻辑3.时间点恢复(pitr),主动备⽤4.表空间
安全性1.⾝份验证:GSSAPI, SSPI, LDAP, SCRAM-SHA-256, 证书等2.强⼤的访问控制系统3.列和⾏级安全性
可扩展性1.存储的功能和程序2.程序语⾔:PL/PGSQL, Perl, Python (more)3.外部数据包装器:使⽤标准SQL接⼝连接到其他数据库或流4.许多提供附加功能的扩展,包括PostGIS
国际化,⽂本搜索1.⽀持国际字符集,例如通过ICU校对2.全⽂检索对⽐eSQL的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能⼒有了长⾜的进步,然⽽很多Mysql⽤户都遇到过Server级的数据库丢失的场景---Mysql系统库是MyISAM的,相较⽽⾔,PG数据库在这⽅⾯要好⼀些。
2.任何系统都有他的性能极限,在⾼并发读写,负载逼近极限下,PG的性能指标仍然可以维持双曲线甚⾄对数曲线,到顶峰之后不再下降,⽽MySQL明细出现⼀个波峰后下滑。
多年在GIS领域处于优势地位,因为它有丰富的⼏何类型,实际上不⽌⼏何类型,PG中有⼤量的字典、数组、bitmap等数据类型,相⽐之下MaySQL就差很多,insagram就是因为PG的空间数据库扩展POSTGIS远远强于MySQL的my spatial⽽采⽤PGSQL的。
的“⽆锁定”特性⾮常突出,甚⾄包括vacuum这样的整理数据空间的操作,这个和PGSSQL的MVCC实现有关系。
的可以使⽤函数和条件索引,这使得PG数据库的调优⾮常灵活,mysql就没有这个功能,条件索引在web应⽤中很重要。
有极其强悍的SQL编程能⼒,有丰富的统计函数和统计语法⽀持,⽐如分析函数(Oracle的叫法,PG⾥⾯叫Window函数),还可以⽤多种语⾔来写存储过程,对于R的⽀持也很好。这⼀点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+PGsql。
的有很多中集群架构可以选择,plproxy可以⽀持语句级的镜像或者分⽚,slony可以进⾏字段级的同步设置,standby可以构建WAL⽂件级或者流式的读写分离集群,同步频率和集群策略调整⽅便,操作⾮常简单。
8.⼀般关系型数据库的字符串有限定长度8k左右,⽆限长Text类型的功能受限,只能作为外部⼤数据访问。⽽PG的TEXT类型可以直接⽅法,SQL语法内置正则表达式,可以索引,还可以全⽂检索,或使⽤xml xpath。⽤PG的话,⽂档数据库就可以省略了
9.对于web应⽤来说,复制的特性很重要,Mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate, 是基于stream的复制,做到同步很困难,这种⽅式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时pgsql还提供stream复制。
对于numa架构的⽀持要⽐mysql强⼀些,⽐mysql对于读的性能要好些,pgsql提交可以完全异步,⽽mysql的内存表不够实⽤(表锁原因)
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687691722a32100.html
评论列表(0条)