3月14日,由中国开源软件联盟PostgreSQL分会主办的“PostgreSQL线上沙龙第二期”落幕。本次活动采用线上直播形式,邀请到了中兴通讯高级开发工程师闫宗帅,国信司南部门GIS主管刘航,资深架构师、分享达人Austin等资深PGer,与广大网友开门论道,分别探讨了PostgreSQL基于非易失性内存优化探索、PostgreSQL在地理信息矢量切片中的实践、数据库选型等话题。
一、PG基于非易失性内存优化探索
非易失性内存(NVM)具有可字节寻址、持久性、速度快、容量大等特点。来自中兴通讯的闫宗帅为大家讲述了如何使用NVM,PG基于NVM架构探索和测试,以及Oracle 20C基于NVM的优化实践。
闫宗帅答疑互动摘录
1. wal日志写到NVM设备之后,性能能够提升多少个百分比?
7、8倍左右。如果进一步改造,充分利用到字节寻址功能,数据和日志向NVM刷时只刷改动的字节数,而不是以页为单位刷,从而减小写放大现象,性能还会进一步提升。
2. 砍掉wal日志会不会有风险?
1)不会有风险。
2)现在的PG架构是面向磁盘的,磁盘的顺序写性能远比随机写高。所以将数据页的随机写转换成WAL日志顺序写以满足数据库性能。同时每次事务提交时,确保WAL日志先刷盘,脏页由后台checkpoint进程和BgWriter进程将脏页异步刷盘。宕机重启后通过WAL日志恢复这样的事务:已提交但脏页未刷盘,从而达到事务的原子性。
3)NVM是一种新硬件,有非易失性的特性,并且速度特别快(顺序和随机的性能都差不多),可字节寻址。根据其特性,可考虑去掉WAL模块,每次事务提交时,直接将数据页刷盘;但需要考虑宕机重启时,将未提交但部分数据页刷下去的事务回滚。
4)感兴趣的同学可以阅读2016年VLDB上的论文《WriteBehind Logging》,http://www.vldb.org/pvldb/vol10/p337-arulraj.pdf,详细理解如何去掉redo日志的一种解决方案。
3. 在您的测试过程中有没有考虑过磁盘格式的不同对数据库性能的影响?以前工作中我们曾经测试过不同的磁盘格式对性能影响差别挺大的。
目前PMEM-aware 文件系统由ext4-dax、xfs-dax等。所以测试时采用了ext4和ext4的dax模式,将磁盘格式化为ext4,分别针对原生PG和通过pmdk改造后的PG进行测试。感兴趣的话,可以测试不同磁盘格式ext4、xfs等对比性能。
二、PG+PostGIS在矢量切片中的应用
矢量切片指的是对矢量数据按金字塔形式进行切割,每一块中包含对应范围的矢量数据。将矢量切片在前端进行渲染后,可以很好的解决传统栅格瓦片样式动态修改、属性查询等问题,同时对于大数据量在前端渲染的效率也得到了大大的提升。本期沙龙,来自国信司南的刘航老师为大家分享了基于PG+PostGIS的矢量切片技术,主要包括矢量切片简介,PostGIS安装注意事项,PostGIS矢量切片实践等内容。
刘航答疑互动摘录
1. 矢量数据在pg端存储为哪种数据格式?
在PG数据库中安装PostGIS扩展后,字段类型可以支持geometry。坐标数据字段为geometry类型,geometry中存储的格式为WKB。
2. 和其他GIS平台集成怎样,有对应api么?
PostGIS生产出来的切片为标准的MVT格式,只要GIS平台支持MVt格式的矢量切片就可以对接PG的矢量切片。PostGIS提供对应的制作矢量切片的函数,具体的服务可以由自己封装,例如Node.js、Java、Go等。
3. 大数据量的情况下进行实时矢量切片渲染的性能怎么样?有哪些优化方式
大数据量下在小级别由于包含数据非常大,所以要考虑对线面化简,对点抽稀,在大数据量下大级别情况,对表建好对应的索引,性能还是可以的,对于前端显示还是很流畅的。同时可以考虑PG数据库的分布式集群等方案。
4. 这展示的图,是用什么展示出来的啊?
前端采用的是MapboxGLJS库,底图为天地图栅格瓦片,上面的数据为矢量切片。
5. 多点连接出来不就是面了么?那要实现运动或者行车轨迹怎么做?
PG可以存储点、线、面三种数据类型,多点可以为多个点,或者一条线,或者封闭后才可以是面,具体的运动要根据业务设计进行实时返回数据,并在前端实时显示等。
三、老鸟带你选择数据库
Austin 从事数据库架构和管理方面的工作,平时热心于技术分享,在微信公众号、QQ群、各类技术论坛都能看到他的身影。Austin 认为数据库选型需要多角度考量,不能只从技术角度,因为技术本身是有其适用的场景的,脱离了场景来讨论一个技术问题本身就是伪命题。任何一个存在的技术都有其对应的需求,否则不会存在。本期沙龙,他从成本、架构、实际解决问题、从业者四个角度全方位论述。成本角度,包括人力成本、维护成本、易用性成本、学习成本。架构角度,则存在集中化和分布式的不同需求。实际解决问题角度,有的企业需求是高并发,有的企业需求是复杂逻辑、复杂事务的处理。从业者角度,Austin 建议大家多接触、学习不同种类的数据库,掌握的数据库种类越多,思路就越开阔,处理问题的角度和思路都会不一样。
Austin答疑互动摘录
1. 请问基于国产化跨平台为背景,MySQL与PostgreSQL应该怎么选呢?是不是PostgreSQL更有优势?
不要只从技术来比较,更多的情况要从业务角度来考虑。互联网企业中业务比较成熟的还是MySQL。对传统企业来说,PG是非常合适的。
2. 云化时代未来DBA会不会越来越少?越来越需要源码级别DBA?
云时代DBA一定要懂业务,如果不懂业务就被淘汰了。我们现在的DBA大部分都是运维DBA,不太懂业务。如果你光懂运维的工作,那就只能协助开发做一些倒库倒表、备份等数据库基本操作。源码DBA我认为需求量不是很大,而懂业务的DBA需求量是比较大的,因为你要根据业务的场景来告诉用户数据库怎么使用。云时代到来后,运维DBA会越来越少,但是懂业务的DBA需求量还是很大的。
PostgreSQL线上沙龙由中国PostgreSQL分会主办,旨在为广大PostgreSQL从业人员、爱好者提供一个向PostgreSQL技术专家学习、交流互动的平台,话题不限。如果您愿意向大家分享您对PostgreSQL的独特见解,可与我们联系(15863186550,微信同手机号)。如果您想聆听、学习嘉宾们的技术分享,请持续关注本公众号,PostgreSQL线上沙龙第三期即将来袭。
最后,再次感谢中兴通讯、国信司南的鼎立支持,感谢各界朋友的关注与参与。下面为大家奉上本次沙龙的主题演讲内容和录屏视频。
PPT和视频获取方式:识别下方二维码,进入公众号,回复“沙龙第二期”,即可获得下载链接。