[转帖]【数据库架构】NewSQL和PGXC
数据库的两种架构风格:NewSQL(代表Google Spanner)、Prxoy(PostgreSQL-XC)
数据库的基本架构

- 客户端通讯管理器。JDBC或ODBC协议访问数据时的部分。
- 进程管理器。数据库为客户端分配的进程,客户端后续的所有操作通过对应的进程执行(Oracle和PostgreSQL使用进程方式,MySQL使用线程)。
- 查询处理器。包括四个部分,功能上顺序执行:
(1)解析器:将接收到的SQL解析为内部的语法树;
(2)查询重写:逻辑优化,依据关系代数的等价变换进行简化和标准化;
(3)查询算法优化:物理优化,根据表的连接方式、连接顺序和排序等技术,即基于规则优化(RBO)和基于代价优化(CBO);
(4)计划执行器:最终执行查询计划,访问存储系统。 - 事务存储管理器。
(1)访问方式:数据在磁盘的具体存储形式;
(2)锁管理:并发控制;
(3)日志管理:确保数据的持久性;
(4)缓存管理:I/O操作相关的缓存控制。 - 共享组件和工具。辅助操作(例如编目数据管理器、复制机制)。
分库分表方案

分布式事务和跨节点查询

PGXC

NewSQL:原生分布式数据库
NewSQL 的基础是NoSQL,更具体的说,是类似BigTable的分布式键值(K/V)系统。分布式键值系统选择做了一个减法,完全放弃了数据库事务处理能力,然后将重点放在对存储和写入能力的扩展上,这个能力扩展的基础就是分片。引入分片的另一个好处是,系统能够以更小的粒度调度数据,实现各节点上的存储平衡和访问负载平衡。
高可靠机制的变化在于,放弃了粒度更大的主从复制,转而以分片为单位采用Paxos或Raft等共识算法,这样,NewSQL就实现了更小粒度的高可靠单元,获得了更高的系统整体可靠性。存储引擎层面,则是使用LSM-Tree模型替换B+ Tree模型,大幅提升了写入性能。

缺陷:NewSQL的计算节点需要借助网络才能与存储节点通讯。
总结
- 架构上,数据库分为:客户端通讯管理器、进程管理器、查询处理器、事务存储管理器和共享组件与工具。分布式数据库在此基础上增加四个主要功能:分片信息管理、分布式事务管理、跨节点查询和全局时钟。
- PGXC架构是从分库分表方案演进而来。设置了协调节点,在代理功能的基础上增加了分布式事务管理、跨节点查询功能;原有的单体数据继续作为数据节点;新增全局时钟和分片信息管理两个功能,这两个功能又有两种实现情况,一是拆分为两个独立角色节点,二十合并为一个角色节点。
- NewSQL架构是原生分布式数据库。从分布式键值系统演进而来,主要的工作负载由计算节点和存储节点承担,另外由管理节点承担全局时钟和分片信息管理功能。不过,这三类节点是逻辑功能划分,在设计实现层面是可分可合的。比如,TiDB是分为独立节点,CockroachDB是对等的P2P架构。
- NewSQL在架构上更加领先,而PGXC最大程度复用了单体数据库的工程实现,更加稳健。
[转帖]【数据库架构】NewSQL和PGXC的更多相关文章
- VS2012中数据库架构的比较
在进行项目进行开发或维护时,经常会改动使用的数据库,或增加.修改字段,或加表,改存储过程等,而且会出现多个类似的数据库同时在用(比如过个类似的项目,要使用稍有不同的数据库),这个时候就可能需要进行数据 ...
- SQL 修改数据库架构名
SQl 修改数据库架构名 declare @name sysname declare csr1 cursor for select TABLE_NAME from INFORMATION_SCHEMA ...
- 转载Code First Migrations更新数据库架构的具体步骤
[转载] Code First Migrations更新数据库结构的具体步骤 我对 CodeFirst 的理解,与之对应的有 ModelFirst与 DatabaseFirst ,三者各有千秋,依项 ...
- 说说数据库架构,ORM缓存和路由
为什么在ORM层做缓存,而不是DB层 ORM能有效地提高程序员的开发效率,程序员更喜欢操作对象而不是数据库,他们不关心也不想手写一堆SQL语句,毕竟一个公司里普通程序员要占多数,他们并不是非常熟悉数据 ...
- 怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控
怎样在SharePoint管理中心检查数据库架构版本号.修补级别和修补程序的常规监控 准备: 确保你是可以訪问管理中心的场管理员. 開始: 1. 打开管理中心--升级和迁移. 2. 点击"查 ...
- Visual Studio2017数据库架构比较
一.前言 开发的时候在测试服务器上和线网服务器上面都有我们的数据库,当我们在线网上面修改或者新增一些字段后,线网的数据库也需要更新,这个时候根据表的修改记录,然后在线网上面一个一个增加修改很浪费效率而 ...
- MyCat 启蒙:分布式系统的数据库架构演变
文章首发于[博客园-陈树义],点击跳转到原文<MyCat 启蒙:分布式系统的数据库架构演变> 单数据库架构 一个项目在初期的时候,为了尽可能快地验证市场,其对业务系统的最大要求是快速实现. ...
- SQLServer之删除数据库架构
删除数据库架构注意事项 要删除的架构不能包含任何对象. 如果架构包含对象,则 DROP 语句将失败. 可以在 sys.schemas 目录视图中查看有关架构的信息. 要求对架构具有 CONTROL 权 ...
- SQLServer之修改数据库架构
修改数据库架构注意事项 用户与架构完全分离. ALTER SCHEMA 仅可用于在同一数据库中的架构之间移动安全对象. 若要更改或删除架构中的安全对象,请使用特定于该安全对象的 ALTER 或 DRO ...
- SQLServer之创建数据库架构
创建数据库架构注意事项 包含 CREATE SCHEMA AUTHORIZATION 但未指定名称的语句仅允许用于向后兼容性. 该语句未引起错误,但未创建一个架构. CREATE SCHEMA 可以在 ...
随机推荐
- 神经网络优化篇:梯度检验应用的注意事项(Gradient Checking Implementation Notes)
梯度检验应用的注意事项 分享一些关于如何在神经网络实施梯度检验的实用技巧和注意事项. 首先,不要在训练中使用梯度检验,它只用于调试.意思是,计算所有\(i\)值的\(d\theta_{\text{ap ...
- 文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题
一.Marceau 教授不同意引理 5.5 证明中使用的循环不变式.他对第1次送代之前循环不变式是否为真提出质疑.他的理由是,我们可以很容易宣称一个空数组不包含0排列.因此一个空的子数组包含一个0排列 ...
- Flutter Getx 中的Dialog 以及改变主题
设置应用程序入口 当我们导入依赖后,在应用程序顶层把 GetMaterialApp 作为顶层,如下所示 import 'package:flutter/material.dart'; import ' ...
- PostgreSQL常用运维SQL
一.数据库连接 1.获取数据库实例连接数 select count(*) from pg_stat_activity; 2.获取数据库最大连接数 show max_connections 3.查询当前 ...
- GaussDB for DWS:内存自适应控制技术总结
1.技术背景 在SQL语句复杂.处理数据量大的AP场景下,单个查询对内存的需求越来越大,多个语句的并发很容易将系统的内存吃满,造成内存不足的问题.为了应对这种问题,GaussDB for DWS引入了 ...
- GaussDB(DWS)函数不同写法引发的结果差异
本文分享自华为云社区<GaussDB(DWS)函数结果差异案例之greatest>,作者: 你是猴子请来的救兵吗. GaussDB(DWS)支持多种兼容模式,为了兼容目标数据库,各模式之间 ...
- 实时入库不用愁,HStore帮分忧
本文分享自华为云社区<直播回顾 | 实时入库不用愁,HStore帮分忧>,作者:汀丶. 海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储 ...
- 中秋节,华为云AI送上超级大月亮制作教程,体验赢开发者键鼠套装
摘要:一键"Run in ModelArts",无需考虑计算资源.环境的搭建,简单运行代码,即可拥有你的超级大月亮,打造专属于你的梦幻中秋月夜. 本文分享自华为云社区<中秋节 ...
- vue2升级vue3: h、createVNode、render、createApp使用
h.createVNode 杂乱笔记,凑合着看,不喜勿喷! h 函数是什么 h 函数本质就是 createElement() 的简写,作用是根据配置创建对应的虚拟节点,在vue 中占有极其重要的地位! ...
- linux添加用户,修改用户密码,修改用户权限,设置root用户操作
1.添加普通用户 [root@server ~]# useradd chenjiafa //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa ...