
架构
文章平均质量分 80
数据源的港湾
这个作者很懒,什么都没留下…
展开
-
理解Hash表
有效管理数据的技术是计算机科学的传统热点。除了存储数据之外,从存储中高效地恢复数据是另一个相关问题。即使使用最好的算法处理某些特定的数据,如果没有优化数据管理,我们的性能也会很差。因此,恢复和向算法提供数据以及保存其输出成为性能瓶颈。随着时间的推移,已经提出了几种保存和管理数据的技术。例如数组、链表、树和图。这些数据结构非常适合多种用途。但是,查找和恢复存储在它们中的数据的时间复杂度通常高于另一种数据结构:哈希表。因此,本教程将探讨与散列表有关的最相关的概念。首先,我们将简要回顾一下哈希。原创 2023-10-23 10:35:35 · 160 阅读 · 0 评论 -
Write-Ahead Log(PostgreSQL 14 Internals翻译版)
由于检查点在启动时不记录任何日志,因此该LSN可以属于任何类型的WAL条目。原创 2023-10-18 18:46:39 · 410 阅读 · 0 评论 -
Hash Join(PostgreSQL 14 Internals翻译版)
因此,如果外部集的mcv上有常规的非多元统计信息(即,外部集由表表示,连接由单列执行),则具有与mcv对应的哈希码的行被认为是第一批的一部分。例如,如果键列在其所有行中包含一个相同的值,则它们将被放入同一个批处理中,因为散列函数将一次又一次地返回相同的值。两遍连接的启动成本是基于单遍连接的启动成本,这是由于写入尽可能多的页面以存储内部集所有行的所有必要字段的估计成本而增加的。每个批处理实际上被分成两个新的批处理:大约一半的行(假设分布是均匀的)留在哈希表中,而另一半保存到一个新的临时文件中。原创 2023-10-18 12:14:48 · 936 阅读 · 0 评论 -
hash join的基本原理是怎样的?
我们知道数据库里面两表关联主要有三种常见的关联方式,即nested loop join在OLTP交易场景占比是最多的,常用于关联字段为主键或索引字段的情况,通过主键或索引以及loop的方式,A表可以快速查找到匹配的B表中的数据。merge join又称为sort merge,可想而知,如果被关联的两个数据集正好是有序的,那么采用这种方式是最高效的。hash join则是把一个表(通常为小表)放在hash内存中,进行匹配关联。虽然知道这点简单的理解,不过当别人问起来hash join具体怎么实现的时候,发现并原创 2023-10-17 09:24:08 · 1463 阅读 · 0 评论 -
key value存储到底有什么优势?
如果我们设计为一张二维表格,那么如果这里的指标非常多,这张二维表格就会变得很宽,同时里面的数据会有很多的NULL值,这样会浪费大量的空间,因为存储时需要将没有数据的内容置为NULL(置为NULL也是需要消耗存储空间的)。由于这个二维矩阵是固定的表格的形式,这意味着表格里面的每个值都需要给定一个内容,如果这个值没有,就需要赋值NULL。如果我们业务模型是一个类似工业时序场景,数据并不是那种固定的二维表格形式,而是像下面这种方式入库,那么我们的表结构应该怎么设计呢?后来仔细想想,回答的完全偏了。原创 2023-10-13 17:19:51 · 479 阅读 · 0 评论 -
SMP&NUMA&MPP三大体系结构及区别
之前一直听到MPP架构,也知道share nothing及share everything、share disk的区别,但说实话对于MPP的理解一直停留于表面,只知道MPP是海量并行计算,大体思路就是每个计算单元是独立的,各自处理的计算资源,然后通过并行计算以达到更高的计算能力,原则上通过扩展节点就能线性扩展计算性能。今天看到网上其他人写的关于SMP、NUMA及MPP的不同算是进一步了解了这几个概念的含义。原创 2023-03-27 15:23:24 · 1347 阅读 · 0 评论 -
YugabyteDB对比CockroachDB-第一部分
注:本文翻译自YugabyteDB官网文章 https://blog.yugabyte.com/yugabytedb-vs-cockroachdb-bringing-truth-to-performance-benchmark-claims-part-1/介绍在Yugabyte,我们欢迎竞争和批评。我们相信这些方面对于广泛采用像YugabyteDB这样的业务关键、完全开源的项目是至关重要的。具体来说,建设性的批评有助于我们改进项目,使我们的大型用户社区受益。蟑螂实验室的工程师几个月前发布了他们对蟑螂数据原创 2022-05-24 11:55:42 · 1005 阅读 · 0 评论 -
YugabyteDB对比CockroachDB-第二部分
注:本文翻译自YugabyteDB官网文章 yugabytedb-vs-cockroachdb-bringing-truth-to-performance-benchmark-claims-part-2概要Yugabyte SQL是基于对PostgreSQL原生查询层的重用。这种重用保留了PostgreSQL中许多最先进的RDBMS特性,因此应用程序的开发速度不会受到影响。另一方面,CockroachDB还远没有成为今天PostgreSQL那样完整的RDBMS。尝试与PostgreSQL v9.6兼容是原创 2022-05-23 17:52:31 · 1149 阅读 · 0 评论 -
分布式一致性问题之混合逻辑时钟
物理时钟存在的问题计算机的系统时钟是一个频率精确和稳定的脉冲信号发生器,也称为物理时钟。对于传统的单机数据库系统,时间戳值可依据本机器的物理时钟获取。但在分布式系统中,各个节点分布在不同的物理位置,每个节点都有自己的物理时钟,而这些节点的物理时钟无法保正完全精确一致。所以物理时钟不能作为分布式系统内在不同节点上并发执行的事务的排序依据。逻辑时钟Lamport Logicla Clocks(LC) 算法定义的偏序关系能正确的排列出具有因果关系的事件的次序,但是不能保正并发事件的真实顺序,使得分布式系原创 2022-05-04 16:08:32 · 1875 阅读 · 2 评论 -
主流数据库对比分析
1 数据库发展概述芯片、操作系统、数据库是现代信息技术领域的三大核心基础。其中,数据库作为数据存取、管理和应用的核心工具,决定了IT运行处理数据的高效性。自20世纪60年代至今,数据库的发展已相继经历了如下几个阶段: 层次数据库和网状数据库世界上第一个网状数据库系统是1964年诞生于通用电气公司的IDS(Integrated Data Storage,集成数据存储)。世界上第一个层次数据库系统是1968年诞生于IBM公司的IMS(Information Management System,信息管理原创 2022-04-24 13:43:51 · 16779 阅读 · 0 评论 -
并发访问控制技术之MVCC
MVCC,全称Multi-Version Concurrency Control,是并发访问控制的核心技术之一,是用于防止用户表数据被并发事务访问时出现数据不一致的问题。MVCC有三个主要的核心技术:多版本;快照;可见性判断算法。多版本一般情况下,在数据库基于某个数据进行基于封锁的并发访问控制技术时,读会阻塞写操作,写会阻塞读操作,写也会阻塞写操作,这导致了数据库事务处理的性能会比较差。MVCC技术对数据进行“分身”处理,把数据按照生存状态和阶段生命期进行区分。对于数据来说,意味着数据有多原创 2022-04-16 21:57:44 · 950 阅读 · 0 评论 -
事务处理的三种策略
经典的事务处理策略主要有三种。乐观并发控制策略(Optimistic Concurrency Control,OCC)从事务开始,每一项操作都允许进行,但在事务提交的时刻,需要进行隔离性和完整性约束检查,如果有违反相关约束的行为则终止事务。单机事务处理模型很少使用乐观并发控制策略。使用这种策略的分布式数据库有Percolator、CockroachDB等。悲观并发控制策略(Pessimistic Concurrency Control,PCC)从事务开始就检查每一项操作是否会违反隔离性和完整性约束原创 2022-04-15 16:47:53 · 1065 阅读 · 0 评论 -
数据库架构设计的三种模式
数据库架构设计当前主要有三种模式,分别为Shared Nothing、Shared Everything、Shared Disk。Share Nothing各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2 DPF和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。我们常说的 Sharding 其实就是Share Nothing架构,它是把某个原创 2022-04-13 17:15:22 · 973 阅读 · 0 评论 -
Lambda架构 vs Kappa架构
Architecture原创 2016-08-18 15:18:29 · 23824 阅读 · 2 评论