一. Citus是什么

Citus是一个PostgreSQL扩展,它允许数据库服务器(即节点)在一个Shared Nothing的架构中彼此协调。这些节点形成了一个集群,使得PostgreSQL能够比一台计算机使用更多的CPU内核来存储更多的数据,同时还允许通过向集群添加更多节点来扩展数据库。

官方文档:Citus Documentation — Citus 10.0 documentation (citusdata.com)

优势:Citus适合做单表查询,且该单表数据量越大,Citus的优势就越明显。

劣势:Citus集群相对于单机PostgreSQL,对SQL有一些支持不完善的地方,对regregate函数支持不好,要求必须可以分解。实际上PostGIS中很多聚集函数都不支持,例如ST_ClusterWithin,st_extent。

主要特性

  • PostgreSQL兼容
  • 水平扩展
  • 实时并发查
  • 快速数据加载
  • 实时增删改查
  • 持分布式事务
  • 支持常用DDL

二. Citus架构节点

Container简称CN节点,CN只存储和数据分布相关的元数据,实际的表数据被分成M个分片,打散到N个Worker上。这样的表被叫做“分片表”,可以为“分片表”的每一个分片创建多个副本,实现高可用和负载均衡。分片表分布打散在多个worker节点,而参考表每一个container节点和worker都保留一模一样的副本。

下图是Citus处理客户端访问的一个简单的架构流程图,应用层直接连接CN节点,CN节点对客户端传入的sql语句进行解析,生成分布执行计划,并将各个子任务下发到相应的Worker节点,之后收集Worker的结果,经过处理后返回最终结果给客户端。最基本的流程就是这样,但是生成环境我们还应该考虑到高可用。

三. Citus对odoo的兼容

Citus能够兼容odoo。已在实际环境中测试, odoo13和odoo14均可以搭建在Citus数据环境中,并正常运行,包括安装、卸载odoo应用和应用中各项数据的增、删、改、查。

数据架构:

运行截图:

四. Citus的扩缩容

citus企业版中可以进行动态扩容,社区版中尚不支持动态扩容。不过我们可以通过修改元数据表中的分片信息来实现类似的功能。

我们可以通过citus自带的master_add_node函数来添加节点到集群中,现有的参考表可以自动分布到新的节点中,但是分片表却不可以自动同步到新的work节点中。

对于分片表,我们则需要手动移动这些分片,大致步骤为:

1、 表复制

在移动目标分片的源端和目的端建立复制。

2、 元数据切换

加锁,阻塞相关的分片表的数据变更;

修改pg_dist_shard_placement元数据表,变更分片位置信息。

3、 清理

DROP切换前的旧的分片。

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。
公众号搜索神州数码云基地,后台回复Odoo,加入Odoo技术交流群

如何实现Odoo兼容Citus实现更多数据储存相关推荐

  1. vue 2 滚动条加载更多数据实现

    vue 2 滚动条加载更多数据实现 解析: 判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight. scrollTop为滚动条在Y轴上 ...

  2. 笔记-VUE滚动加载更多数据

    来源:https://blog.csdn.net/qq_17281881/article/details/87342403 VUE滚动加载更多数据 1 data() { 2 return { 3 lo ...

  3. 加载更多时,判断tableView快要滑动到底部的时候在去请求更多数据的公式

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {/*// 判断是否需要加载更多// 判断等于0可以防止没有数据就显示加载更多控件// 判 ...

  4. 无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分

    无法从套接字中获取更多数据 介绍 (Introduction) Data science, machine learning, artificial intelligence, those terms ...

  5. Flutter下拉刷新,上拉加载更多数据

    下拉刷新 很简单,直接使用 RefreshIndicator 组件, onRefresh 为重新获取数据的方法 Widget build(BuildContext context) {return S ...

  6. MUI 上滑加载(没有更多数据)页面回弹 - 效果

    MUI 上滑加载(没有更多数据)页面回弹 - 效果 效果图 · 略 查看官方文档对应的 demo效果 即可 参考代码如下: <!DOCTYPE html> <html>< ...

  7. 下滑加载更多js_vue.js怎么实现滑动到底部加载更多数据效果?

    vue.js怎么实现滑动到底部加载更多数据效果?下面本篇文章给大家简单介绍一下vue实现滑动到底部加载更多效果.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 本文实例为大家分享了v ...

  8. 使用iScroll实现上、下滑动刷新和加载更多数据

    1.下载iScorll v4.2.5,引用其中的iscroll.js 2.html: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 & ...

  9. uniapp实现滚动到底部加载更多数据

    如果数据量非常大的话,数据批量加载是一种优化手段,那么,如何实现? onReachBottom uniapp的生命周期onReachBottom 页面滚动到底部的事件(不是scroll-view滚到底 ...

最新文章

  1. python UnicodeEncodeError 编码错误总结
  2. Android控件-GridView
  3. HttpDns 原理是什么
  4. 华为的鸿蒙系统是海思_死心了!华为鸿蒙系统首款终端确认,不是手机
  5. android 禁止屏幕放大缩小,禁止APP内Webview页面跟随系统缩放字号
  6. Canvas的绚烂起点
  7. 在Visual Studio中一次运行两个项目
  8. ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter)
  9. 任务管理器杀不了的进程如何关闭
  10. 老年代的更新机制_魔兽世界:60年代五大“远古”机制,这根胡萝卜,可是当年的神器...
  11. 一个四维混沌吸引子曲线(matlab完整代码)
  12. mysql 1205 解决_mysql 1205 ,自动重启数据库
  13. 在广告文案中的最有诱惑力的十个词
  14. 全新电影社交观影,满足影迷移动巨幕与移动3D体验
  15. HCIE - Routing Switching v3.0 Outline
  16. SpringBoot2学习笔记
  17. [CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞
  18. 【51单片机】外部中断
  19. Maven创建聚合项目
  20. 黑苹果NVIDIA显卡驱动程序【WebDriver-378.05.05.25f16 +支持 macOS 10.12.6 Sierra (16G2016)版本】

热门文章

  1. win10设置默认浏览器反复无常的解决方案
  2. 对于无线传感网的初步认识
  3. 屑 催 逝 员 剧 情 java 版
  4. 游戏设计与开发_王牌英雄开发者:游戏设计中的平衡和失衡问题
  5. Linux内核之vmlinux与vmlinuz
  6. A/libc:fatal signal 11(SIGSEGV).code 1, fault addr 0x0 in tid 26488 (VideoEncoder)
  7. 红灯还是绿灯?脱欧协议迎表决,英站上分叉路口
  8. BASE理论(基本可用策略+ 最终一致性实现)
  9. iOS something is trying to start the receiver simultaneously from more than one thread
  10. 618剁手节-搞机升级固态硬盘一定要明白它的工作原理