如何使用 Postgres 折叠您的堆栈 实现一切#postgresql认证

news2024/12/24 7:52:43

技术蔓延如何蔓延

假设您正在开发一款新产品或新功能。一开始,您的团队会列出需要解决的技术问题。有些解决方案您将自行开发(您的秘诀),而其他解决方案您将使用现有技术(可能至少包括一个数据库)来解决。

#PG培训#PG考试#postgresql培训#postgresql考试
除非您从事数据库构建业务,否则自行开发数据库通常是不明智的;它很复杂、风险很大,而且需要非常专业的技能。因此,您最终可能会采用各种现有数据库:Postgres 用于事务数据,Elastic 用于全文搜索,Influx 用于时间序列,Pinecone 用于矢量操作,ClickHouse 用于分析。突然之间,您的技术堆栈变得庞大。

在这里插入图片描述

为什么堆栈蔓延是一个问题

添加的每个新数据库都会带来一系列挑战:需要学习不同的语言、需要理解一致性模型,以及无法忽略的操作细节。这不仅增加了复杂性,还带来了我所说的“虚线”复杂性,即数据在每对系统之间流动时产生的额外开销。数据库越多,虚线越多,推断整个系统的状态就越困难。

你拥有更多的数据库,因此,你遇到的问题也更多。

在这里插入图片描述

崩溃的理由

那么还有什么替代方案呢?在我看来,这会让你的堆栈崩溃。如果你用一个数据库解决更多问题,那么你就可以移除多个复杂的软件以及它们之间的虚线复杂性。在头脑中保持数据流的心理模型以及推理不同时间的数据一致性要容易得多。你可以节省出原本花在操作这些新数据库上的时间,并且可以将这些时间用于构建功能。
在这里插入图片描述

PostgreSQL 在堆栈折叠方面表现出色,因为它既通用又专用。它不仅是一个出色的关系数据库,还通过其扩展框架支持广泛的额外用例。PostgreSQL 可以轻松处理 全文搜索 、 时间序列数据、 AI 向量 和分析等工作负载。

PostgreSQL 不仅功能多样,而且强大而成熟。人们已经在生产环境中使用 PostgreSQL 超过 20 年,随着采用速度的加快,PostgreSQL 的发展没有任何放缓的迹象。边缘情况众所周知,部署模式、恢复策略和高可用性定义明确,并且有许多公司和拥护者可以为您提供帮助。

正因为如此,我鼓励您使用 PostgreSQL 解决尽可能多的问题,压缩您的堆栈,降低复杂性,并让您有时间专注于构建。

对位:最适合这项工作的工具?

有一个众所周知的论点,即您应该选择“最适合工作的工具”,但这个论点有时会被颠倒过来,即“如果您只有一把锤子,那么所有东西看起来都像钉子”。我认为“PostgreSQL 适用于一切”的原则并不与这些原则相矛盾,只要您确保着眼于大局即可。

您如何定义“最适合该工作的数据库”?它是速度最快的吗?最容易使用的吗?最容错的吗?还是可以最无缝地集成到您现有的基础架构中并且您知道如何使用的数据库(也许是已经存在的数据库)?最佳选择通常介于这些标准之间。

在这里插入图片描述

您应该选择数据库 X 来获得其速度,数据库 Y 来获得其效率,还是数据库 Z 来获得其云优化?如果老牌的 PostgreSQL 能够满足您现在的需求(具有久经考验的有效性),并且可以进一步扩展(可能达到您当前需求的 10 倍),那么我认为您应该从已知数量开始。只有当 PostgreSQL 缺乏关键功能时才考虑添加其他数据库,权衡其好处与管理多个系统的额外复杂性。或者,换一种说法, 选择无聊的技术 (对不起 Postgres,我保证我仍然认为你很令人兴奋)。

让我们考虑两种可能的情况:

  • PostgreSQL 适用于一切 :多年后,您的工作量超出了原有系统的能力。PostgreSQL
    在某些方面表现不佳,但这是一个“好问题”——成功的标志,也是改进架构的提示。
  • 过度设计,包含多个数据库
    :您已准备好处理庞大的规模,但系统却很脆弱、充满极端情况且难以维护。这不仅具有挑战性,而且会威胁到您的运营稳定性。

考虑到这些情况,我认为以 PostgreSQL 为中心的系统在理论上的未来挑战,要比目前过早选择多数据库架构的复杂性更可取。

最后的话

“PostgreSQL 适用于一切”并不意味着永远不使用其他数据库。老实说,它甚至不是说将 PostgreSQL 用于一切。它是反对过早过度设计解决方案的格言,也是倡导简单性的好处的格言。请记住,世界上有很多公司和应用程序,在 Timescale 等公司的帮助下,PostgreSQL 将扩展以满足他们的大多数需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LDO芯片手册,实例应用分析

在进行电路设计时LDO是经常用到的,尤其在为芯片,晶振等敏感电路进行供电时应用更多,下面选取一款比较常用的LDO芯片,一起进行更深入的学习。 SGM2036特点简介 SGM2036,圣邦微一款比较常用的LDO芯片手册 可以先大致看…

面试题-CAS(compare and swap)

1.CAS机制 悲观锁:始终假定会发生并发冲突,因此会屏蔽一切可能违反数据完整性的操作。 乐观锁:假设不会发生并发冲突,因此只在提交操作时检查是否违反数据完整性。 执行CAS操作时,比较内存位置的值(主内存的值)与预期…

fiddle查看请求耗时 设置超时背景

windows 下,打开 fiddler 时直接用 快捷键:CTRL R 打开 或 从路径:Rules -> Customize Rules… 打开 // 显示每行请求的服务端耗时时间 public static BindUIColumn("TimeTaken/ms", 120)function TimeTaken(oS: Session):Stri…

信号与系统实验-实验五 离散时间系统的时域分析

一、实验目的 1、理解离散信号的定义与时域特征,掌握在时域求解信号的各种变换运算; 2、掌握离散系统的单位响应及其 MATLAB 实现的方法; 3、掌握离散时间序列卷积及其 MATLAB 实现的方法; 4、掌握利用 MATLAB 求解微分方程&a…

倍增法找lca——最近公共祖先

对于结点x和y,需要找他们的最近公共祖先 一个最简单的办法就是沿着x和y的父节点一个一个往上找 这样的时间复杂度是o(n),对于较大的数据量会TLE 今天要使用的方法是利用倍增来加速这个找lca的过程 倍增算法: 按2的倍数来往上找&#xff0…

Python 基础 (标准库):堆 heap

1. 官方文档 heapq --- 堆队列算法 — Python 3.12.4 文档 2. 相关概念 堆 heap 是一种具体的数据结构(concrete data structures);优先级队列 priority queue 是一种抽象的数据结构(abstract data structures)&…

C#+uni-app医院HIS预约挂号系统源码 看病挂号快人一步

​​​​​​​ 提到去大型医院机构就诊时,许多人都感到恐惧。有些人一旦走进医院的门诊大厅,就感到迷茫,既无法理解导医台医生的建议,也找不到应该去哪个科室进行检查。实际上,就医也是一门学问,如何优化…

【STM32 RTC实时时钟如何配置!超详细的解析和超简单的配置,附上寄存器操作】

STM32 里面RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。因为系统对后备寄存器和RTC相关寄存器有写保护,所以如果想要对后备寄存器和RTC进行访问,则需要通过操作…

我的3次软考高项通关之旅

1、缘起 初次听说软考是在2022年下半年了,软考的高级分为很多种,我起先想报考高级架构师,但是架构师一年才考一次,如果一次考不过得再准备一年,时间对我来说太长了,于是我决定报考一年考两次的高项。对于国…

10个AI高考上岸朋友圈文案设计

高考是人生中的一个重要时刻,上岸后分享朋友圈的文案可以既表达喜悦,也可以展现对未来的期待。以下是10个不同风格的高考上岸朋友圈文案,供你参考: 1. **梦想成真版**: "十年磨一剑,今朝试锋芒。高…

测试基础16:测试用例设计方法-测试大纲法

课程大纲 1、应用场景 验证页面跳转:有多个窗口/页面,每个窗口/页面有多个动作,每个动作之间有相互的联系的场景。看点击后,页面跳转正确与否。 2、设计步骤 step1.列出大纲:列出涉及的页面和页面可执行的动作。 s…

大厂面试官问我:Redis中热key和大key是怎么解决的?【后端八股文五:Redis热key和大key八股文合集】

往期内容: 大厂面试官问我:Redis处理点赞,如果瞬时涌入大量用户点赞(千万级),应当如何进行处理?【后端八股文一:Redis点赞八股文合集】-CSDN博客 大厂面试官问我:布隆过滤…

2024HW面试真题(三)之看完蓝初变蓝高

以下是部分面试真题记录‍‍ 关于黑客&网络安全学习指南 学好 网络安全不论是就业还是做副业赚钱都不错,但要学会 网络安全 还是要有一个学习规划。最后给大家分享一份全套的 网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!…

eventbus和vuex

EventBus和Vuex EventBus 工作原理 创建一个vue实例,然后通过空的vue实例作为组件之间的桥梁,进行通信,利用到的设计模式有发布订阅模式 Vuex 工作原理 维护了一个state树,是独立的状态树,有明显的层级关系。不论…

振兴黄河新生力 打造文旅新地标——全国首家黄河会客厅在山东济南启幕

6月26日,由黄河文化发展工作站组织实施的全国首家黄河会客厅平台发布会暨山东基地启动仪式在济南成功召开。黄河会客厅以“民生黄河、生态动能、中华文明”为核心主题,融汇黄河智库、黄河文明、黄河产域、黄河金融、黄河科创、黄河物贸六大振兴赋能体系&…

Leetcode Hot100之矩阵

1. 矩阵置零 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路 题目要求进行原地更改,也就是不能使用额外的空间,因此我们可以使用第一行的元素来记录对应的…

工业液晶屏G065VN01 V2规格书简介

G065VN01 V2 背面实物图 2. 概述 G065VN01 V2 专为 VGA (640 x RGB x 480) 分辨率和 16.2M(RGB 6 位 FRC)或 262k 色(RGB 6 位)的工业显示应用而设计。它由TFT-LCD面板、驱动IC、控制和电源电路板以及包括…

等保相关总结

等级划分准则 等保2.0基本框架 等保2.0变化解读 等级测评 3保1评 分保工作简介 分保工作流程 等保 等保工作流程:定级 -》备案 -》整改 -》测评 -》复核 关保 密评

C++系列-String(三)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” assign 这个接口的目的是用一个新的值代替之前的那个值 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<list> #include&l…

Python自动造波器椭圆曲线波孤子解

&#x1f3af;要点 &#x1f3af;快速傅立叶变换算法周期域解椭圆曲线波 | &#x1f3af;算法数值解孤波脉冲和结果动画 | &#x1f3af;三种语言孤子解浅水表面波方程 | &#x1f3af;渐近分解算法孤子波 | &#x1f3af;自适应步长算法孤子波 | &#x1f3af;流体自动造波器…