如何实现Odoo兼容Citus实现更多数据储存
一. 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实现更多数据储存相关推荐
- vue 2 滚动条加载更多数据实现
vue 2 滚动条加载更多数据实现 解析: 判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight. scrollTop为滚动条在Y轴上 ...
- 笔记-VUE滚动加载更多数据
来源:https://blog.csdn.net/qq_17281881/article/details/87342403 VUE滚动加载更多数据 1 data() { 2 return { 3 lo ...
- 加载更多时,判断tableView快要滑动到底部的时候在去请求更多数据的公式
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {/*// 判断是否需要加载更多// 判断等于0可以防止没有数据就显示加载更多控件// 判 ...
- 无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分
无法从套接字中获取更多数据 介绍 (Introduction) Data science, machine learning, artificial intelligence, those terms ...
- Flutter下拉刷新,上拉加载更多数据
下拉刷新 很简单,直接使用 RefreshIndicator 组件, onRefresh 为重新获取数据的方法 Widget build(BuildContext context) {return S ...
- MUI 上滑加载(没有更多数据)页面回弹 - 效果
MUI 上滑加载(没有更多数据)页面回弹 - 效果 效果图 · 略 查看官方文档对应的 demo效果 即可 参考代码如下: <!DOCTYPE html> <html>< ...
- 下滑加载更多js_vue.js怎么实现滑动到底部加载更多数据效果?
vue.js怎么实现滑动到底部加载更多数据效果?下面本篇文章给大家简单介绍一下vue实现滑动到底部加载更多效果.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 本文实例为大家分享了v ...
- 使用iScroll实现上、下滑动刷新和加载更多数据
1.下载iScorll v4.2.5,引用其中的iscroll.js 2.html: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 & ...
- uniapp实现滚动到底部加载更多数据
如果数据量非常大的话,数据批量加载是一种优化手段,那么,如何实现? onReachBottom uniapp的生命周期onReachBottom 页面滚动到底部的事件(不是scroll-view滚到底 ...
最新文章
- python UnicodeEncodeError 编码错误总结
- Android控件-GridView
- HttpDns 原理是什么
- 华为的鸿蒙系统是海思_死心了!华为鸿蒙系统首款终端确认,不是手机
- android 禁止屏幕放大缩小,禁止APP内Webview页面跟随系统缩放字号
- Canvas的绚烂起点
- 在Visual Studio中一次运行两个项目
- ffdshow 源代码分析 4: 位图覆盖滤镜(滤镜部分Filter)
- 任务管理器杀不了的进程如何关闭
- 老年代的更新机制_魔兽世界:60年代五大“远古”机制,这根胡萝卜,可是当年的神器...
- 一个四维混沌吸引子曲线(matlab完整代码)
- mysql 1205 解决_mysql 1205 ,自动重启数据库
- 在广告文案中的最有诱惑力的十个词
- 全新电影社交观影,满足影迷移动巨幕与移动3D体验
- HCIE - Routing Switching v3.0 Outline
- SpringBoot2学习笔记
- [CNVD-2020-10487/CVE-2020-1938]: Tomcat AJP协议漏洞
- 【51单片机】外部中断
- Maven创建聚合项目
- 黑苹果NVIDIA显卡驱动程序【WebDriver-378.05.05.25f16 +支持	macOS 10.12.6 Sierra (16G2016)版本】
热门文章
- win10设置默认浏览器反复无常的解决方案
- 对于无线传感网的初步认识
- 屑 催 逝 员 剧 情 java 版
- 游戏设计与开发_王牌英雄开发者:游戏设计中的平衡和失衡问题
- Linux内核之vmlinux与vmlinuz
- A/libc:fatal signal 11(SIGSEGV).code 1, fault addr 0x0 in tid 26488 (VideoEncoder)
- 红灯还是绿灯?脱欧协议迎表决,英站上分叉路口
- BASE理论(基本可用策略+ 最终一致性实现)
- iOS something is trying to start the receiver simultaneously from more than one thread
- 618剁手节-搞机升级固态硬盘一定要明白它的工作原理