22岁的Postgres可能是最先进的数据库

栏目: 数据库 · 发布时间: 5年前

内容简介:作为一个技术人员,我参与的许多辩论可归结为一个问题:我们应该选择新的东西还是经过验证的东西?尽管讨论这个问题充满热情,但有一些技术的答案很简单:为什么不两者兼而有之?Postgres就是这样一种技术。它最初于1996年发布(自1982年以来有效开发),现在已有22年历史 - 但在许多方面,它是最现代化的数据库管理系统。它不仅具有简单令人难以置信的功能集,而且还超越了纯数据库,并演变为完全可编程的集成数据环境,并配有自己的编程语言PL / pgSQL。在这篇文章里,我想阐明使它成为我们Arcentry公司的

作为一个技术人员,我参与的许多辩论可归结为一个问题:我们应该选择新的东西还是经过验证的东西?尽管讨论这个问题充满热情,但有一些技术的答案很简单:为什么不两者兼而有之?

Postgres就是这样一种技术。它最初于1996年发布(自1982年以来有效开发),现在已有22年历史 - 但在许多方面,它是最现代化的数据库管理系统。它不仅具有简单令人难以置信的功能集,而且还超越了纯数据库,并演变为完全可编程的集成数据环境,并配有自己的编程语言PL / pgSQL。

在这篇文章里,我想阐明使它成为我们Arcentry公司的后端数据库选择的五个非凡功能:

发布/订阅消息

Postgres可以用作可群集的消息代理。当然,它没有像RabbitMQ或Kafka这样的专用解决方案提供的功能集,但它将基于事件的消息传递集成到更广泛的数据上下文中使其极具价值。例如,Arcentry的内部部署版本使用了这种模式。我们使用Postgres-Messaging作为横向可扩展部署的主干。

每当用户对任何图表进行更改时,Arcentry都会向服务器发出请求,该请求会将更新合并到Postgres中存储的二进制JSON文档中。一旦确认写入,触发器就会发出一个事件,即所有其他连接的服务器都已订阅,然后将更新转发给其活动用户。

这为我们提供了一种简单的方法来提供具有强一致性的水平可伸缩实时更新 - 所有这些都来自单个外部依赖。

触发器

触发器是在操作数据之前或之后运行的函数。它们是将验证,转换和派生逻辑直接构建到数据库中的绝佳方式。

触发器还提供了一种扩展现有数据库功能的简单方法。例如,提供对Arcentry帐户表进行更改的不可变审计日志。

我们只是将一个触发器编程到Postgres中,而不仅仅是在帐户表中的行被更改时运行,包括写入当前行的副本也会触发,将时间戳和启动更改的userId保存到单独的审计表。

外国数据包装

有时,将用户现有的数据库集成到Arcentry中是很好的 - 无论是查询用户帐户还是将文档数据存储在已建立的结构中。当然 - 有很多方法可以达到这个目的,但是Postgres的 外部数据包装器 特别方便。

这些是将Postgres连接到任意数量的其他数据源的端点,例如MongoDB,Redis,MySQL甚至CSV或JSON文件。就查询语句而言,这些源只是常规的Postgres表,可以加入,搜索,引用并成为数据库的有机组成部分 - 使Postgres成为强大的集成 工具 和数据湖设置的潜在访问点。

JSONB

许多数据库存储JSON或其二进制表现模型:JSONB - 我发现这不会引起太多的兴奋。但Postgres的操作功能使JSON成为基于表的关系数据库中的一等公民。无论是输出查询结果是嵌套的JSON结构还是动态解析JSON,Postgres都可以很好地处理它。

附加组件

然而,有时PL / pgSQL和触发器都不足以实现所需的功能。对于许多其他数据库,这只是它的限制之处 - 但Postgres令人印象深刻的可扩展性。编写Postgres插件并不是一件容易的事(相信我,我试过),但幸运的是,许多有才华的工程师为我完成了工作并构建了将Postgres变成完全不同的产品的扩展。

PostGIS 为例,它将Postgres服务器变成一个完全成熟的地理信息系统(GIS)空间数据库。

或者将Postgres变成时间序列存储/流处理器的 PipelineDB 怎么样?

有任意数量的Postgres扩展,工具和GUI,可在 此处 找到概述

爷爷也很时髦


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Unity游戏设计与实现

Unity游戏设计与实现

[日]加藤政树 / 罗水东 / 人民邮电出版社 / 2015-2 / 79.00元

本书出自日本知名游戏公司万代南梦宫的资深开发人员之手,面向初级游戏开发人员,通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。本书的重点并不在于讲解Unity的各种功能细节,而在于核心玩法的设计和实现思路。每个实例都从一个idea 开始,不断丰富,自然而然地推出各种概念,引导读者思考必要的数据结构和编程方法。掌握了这些思路,即便换成另外一种引擎,也可以轻松地开发出同类型的游戏。 ......一起来看看 《Unity游戏设计与实现》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具