热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQLSaaS行业特性以及使用注意

digoal德哥专栏PostgreSQLSaaS

作者

digoal


日期

2021-04-15


标签

PostgreSQL , SaaS




背景

SaaS 行业需要什么特性?



  • ORM生成的SQL复杂, 无法干预SQL写法

    • 10个表以上JOIN的优化器增强(cbo,geqo,aqo,hint,outline) (PostgreSQL 已支持)



  • SQL 计算量大

    • 并行计算, 高级优化器, 高级索引, 高级存储引擎 (PostgreSQL 已支持, 列存储需要增强: citus, zedstore)



  • 结构复杂

    • 大宽表 (PostgreSQL 已支持)



  • 关系复杂(一对多、多对一、多对多)

    • 数组类型、倒排索引 (PostgreSQL 已支持)



  • 敏捷开发, 租户个性化需求增多, 单一结构无法满足需求

    • schema less(JSON, XML), 在线修改结构, 在线修改字段长度 (PostgreSQL 已支持, 大部分结构长度修改仅需要毫秒(仅仅需要元数据修改))



  • 存储超长内容或二进制文件、图片

    • 大对象类型 (PostgreSQL 已支持)



  • 文本搜索性能差, 依赖搜索引擎, 数据同步延迟高, 数据查询不一致,同步异常问题多. 开发、维护成本高.

    • 文本搜索、倒排索引. %xxx%, *xxx*的模糊查询、全文检索、中文分词 (PostgreSQL 已支持)



  • 租户多, 数据量大

    • 基于租户的数据库sharding, 租户的无缝迁移, rebalance能力 (PostgreSQL 已支持. citus)



  • 租户多, 会话并发量大, 每个租户一套结构, 表特别多, 租户结构变更发布麻烦

    • 读写分离、线程池、内存使用优化, 一个实例支持上千万个表, 并方便一键发布DDL. (PostgreSQL 内置未支持线程池, postgrespro已支持)



  • 租户多, 租户之间的数据访问不安全

    • RLS, 租户级别TDE (PostgreSQL 已支持RLS. 租户级别TDE未支持, PG14有TDE cluster级别patch)



  • 租户多, 相互抢资源, 性能不稳定

    • 租户级别quota(计算、存储)、表空间 (PostgreSQL 已支持. quota未支持, 可结合进程模型和cgroup来支持)



  • 租户多, 很难快速定位捣蛋租户

    • 租户级别资源监控 (PostgreSQL 14开始逐渐在增加PID级别的统计信息)



  • 租户多, 全隔离资源利用率低下

    • 租户级别资源quota自动化弹性, 发挥资源池化作用



  • 租户级别的误操作, 要回滚整个实例

    • 闪回, 租户级别的PITR (PostgreSQL 不支持闪回query, 可以结合使用zfs来闪回整个实例)



  • 过期租户占用资源, 如果删除后续费重建流程复杂

    • 灵活的租户数据冷冻和数据加热, 过期租户不占资源, 续费快速加热 (阿里云PostgreSQL 已支持oss_fdw)



  • 数据流动需求多, DB到DB, DB到MQ到大数据

    • 单向、多向的数据订阅功能 (PostgreSQL 已支持, 同一条记录如果需要多向同步需要考虑数据冲突问题, 建议架构设计时避免同样的数据需要多向, 可以考虑不同的数据多向)



  • 租户GIS需求增多, 存储、计算、速度要求高

    • 专业的GIS数据类型、索引、计算函数、操作符功能 (PostgreSQL 已支持)



  • 租户数据挖掘需求增多: 图计算

    • 基于图的搜索、推荐能力 (PostgreSQL 已支持)



  • 租户数据挖掘需求增多: 机器学习

    • 内置ML算法和可扩展ML算法的能力 (PostgreSQL 已支持)



  • 租户数据挖掘需求增多: 行列变换

    • 行列变换函数接口 (PostgreSQL 已支持)



  • SaaS行业丰富, 各个行业的需求丰富无法穷尽

    • 行业定制化存储、索引、OP、FUNC的扩展插件能力 (PostgreSQL 已支持)

    • 供应链SaaS: 递归,溯源,区块链技术

    • ERP: 复杂SQL动态规划能力(aqo),图像识别 (阿里云PG 支持pase插件向量搜索)

    • CRM: 关系图谱能力

    • 文档协作: 文本AI分析、推荐、打标能力

    • 电子签名: 安全,区块链技术

    • 协同办公: 社交关系处理



使用注意:

- 在PG支持线程池之前, 为了避免连接数过多, 可以考虑使用同一个database的不同schema来隔离租户, 并使用同一个database user. 因为使用database时不同database的connection是无法复用的.

- 租户的冷冻和加热可以使用schema级别数据dump和restore
- 尽量避免OOM, 参考如下文档
- 《PostgreSQL 减少 (内存耗尽) OOM 导致的数据库崩溃恢复问题最佳实践》


PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.


9.9元购买3个月阿里云RDS PostgreSQL实例


PostgreSQL 解决方案集合


德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat


推荐阅读
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 【回顾】聚焦DTCC | 巨杉数据库与您相约DTCC 数据库技术大会
    2018年5月10-12日,第九届中国数据库技术大会(DTCC2018)将以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余 ... [详细]
  • 本文介绍了在SQL中查询分组后每组行数的统计方法。通过使用count()函数和GROUP BY子句可以统计每组的行数,但是如何统计所有组的行数呢?本文提供了一种实现方法,并给出了相应的SQL查询语句。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
author-avatar
郝蕾雅老_206
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有