暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

为什么选择Postgres?

艾米丽·莫特 2019-09-30
2535

在社区网站上可以看到PostgreSQL的口号:“ PostgreSQL:世界上最先进的开源关系数据库”。这对(开发人员)意味着什么?看起来这是一个很受欢迎的问题。

在我最近的文章《 PostgreSQL的艺术:成绩单》中,我将阅读为什么我认为在应用程序堆栈中使用Postgres很有趣的原因。我的会议演讲涉及主要领域,我认为很多人都认为这是错误的:

 · Postgres是RDBMS

 · RDBMS不是存储解决方案

 · 不要使用Postgres解决存储问题!


因此,这是我的会议演讲的主要内容。

今天,我想回到有关为什么选择Postgres的主要思想。 虽然。Postgres和其他RDBMS正在解决的主要问题是并发性。您希望您的应用程序能够同时为多个用户提供服务。如今,这也需要全部在线进行,维护或报告系统中日常交易活动的下班时间都没有。


记录,仪表板和分析系统


相反,我们倾向于访问我们的系统,记录和分析系统,而不是看到有关昨天活动的固定快照,而是希望了解最近发生的事情。如果您考虑一下您的在线银行对帐单,我仍会记得直到下午4点才进行活动的地方。不久之前,这对于大多数人的需求是一个很好的答案。


如今,有了在线和非接触式付款方式,我们希望能够实时查看银行活动,通常在付款几秒钟后就会收到一条短信。特别是在某种形式上,这种付款方式很不寻常:您正在另一个国家旅行,或者您花费的钱比银行习惯的要多。

在大多数在线活动中,我们希望能够访问在我们的系统中创建的数据。我们希望能够在输入和创建数据时提供仪表板和分析功能。而且,我们希望用户不必考虑所有问题,而只需动用指尖即可。您如何建立一个知道如何实施的生产系统?


这就是为什么您使用Postgres。作为RDBMS,它知道如何处理并发和非常多样化的工作负载。实际上,您可以使用Postgres来实现您的交易记录系统,同时提供客户和活动仪表板以及某些类型的分析。


为什么要使用SQL?


当然,要能够在同一技术的基础上实现所有这些活动,它需要通用并且可能有点复杂。您需要一种表达非常简单的交易以及非常复杂的分析的方法。这正是SQL设计的目的!


您可能还记得学习BEGIN和COMMIT陈述。这 ROLLBACK句话也是。这是SQL的事务控制语言部分,它使您作为开发人员能够在应用程序中实现并发。这就是ACID 的A和I:原子和隔离。


使用SQL,您可以轻松实现CRUD需求。CRUD代表创建,读取,更新和删除。通常,您将使用ORM来实现这些功能,因为您几乎没有意识到在SQL中实现这些部分的附加值。


尽管如此,SQL还是很好地包含了CRUD用例。另外,SQL在批处理操作方面非常擅长,因此您可能需要记住,可以在INSERT,UPDATE和DELETE语句中实现JOIN,并让单个语句一次处理任意数量的行(或元组)。


应用程序的CRUD部分通常涵盖活动的“记录系统”方面,有时还涉及其他管理用例,例如创建用户,组和其他数据组织。


SQL也擅长分析,不仅限于CRUD。可以在单个SQL语句中写任何仪表板条目。当您知道如何使用GROUPING SETS,WINDOW FUNCTIONS,高级聚合,子查询和Common Table Expressions时,可以在SQL中实现的功能几乎是无穷的。当然,对什么是关系以及什么是SQL连接的深刻理解是成功使用SQL的关键。


扩展


已知有些活动很难在SQL中实现。有时就是那样。但是,通过Postgres,我们还可以访问许多扩展,这些扩展将启用从数据库直接处理数据的新方法。


如果您对分布式系统感兴趣,那么您可能已经读过,决定是否应该将计算发送到数据已经存在的位置,或者将数据发送到计算节点很重要。


当您使用Postgres时,这是同一件事。您可以选择检索数据,然后在应用程序节点中对其进行处理,或者可以选择在数据库中的位置处处理数据。有时,能够减少跨网络的数据集是解决问题的最有效方法,因此知道如何在SQL中做到这一点变得非常有趣。


这就是为什么我们拥有诸如PostGIS之类的扩展功能的原因,您可以在其中实现地理空间连接并精确获取所需的数据,即使您的问题需要对地图上的数据位置保持聪明。


许可


Postgres作为开源软件发布。Postgres背后没有任何实体:尽管有些公司围绕为Postgres捐款创建了一条完整的业务线,但任何个人都可以为该项目捐款。所有这些都是在公开的公共邮件列表中完成的。


项目基础结构也以开源的方式提供,您可以将补丁发送到Postgres网站。修正打字错误,或者进行更严肃的工作。


甚至邮件列表系统和会议组织软件都是开源的,并由Postgres社区进行管理!所有这些都在公开赛中,而且都欢迎新的贡献!


那么,为什么选择Postgres?


要以正确的并发方式实现您的应用程序,并在架构(CRUD,记录系统,OLTP;以及OLAP,Analytics,仪表板)方面具有多种功能,并在计算方面具有强大的功能。


这样您就可以根据具体情况选择在哪里实现处理,而不必重新构建应用程序。只需编写更多的SQL,现在处理就在数据所在的地方进行。有时候,这正是您所需要的。


总而言之,我想说的是,如果您不确定要使用哪个交易系统,请使用Postgres。选择Postgres永远不会错。当然,当将应用程序扩展到不可能的数量时,或者遇到异常的速度(每秒事务)时,很特定的系统可能会更好地为应用程序的一部分提供服务。然后,您会发现通常很容易将应用程序的这一部分移至专用系统,然后将其插入到其余的应用程序中(仍然使用Postgres的应用程序)。


为什么选择Postgres?因为那是最好的。确实是 “世界上最先进的开源关系数据库”。它确实可以帮助您解决挑战,并使应用程序正常运行。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论