0%

WAL(Write Ahead Logging)是业界通用的保证数据durability的方法,它的基本思想是:数据更新(表数据或者索引数据等的更新)只能在这些更新被写入日志文件并且flush之后才能完成。openGauss内存引擎MOT(Memory Optimized Table)也不例外。本文将从以下几个方面分析MOT WAL的实现:WAL整体架构、事务操作记录、RedoLogBuffer、RedoLogHandler、XLog。

阅读全文 »

在本文中,我们介绍了混合时间HybridTime(物理时钟和逻辑时钟的混合),可以用来实现一个全局一致性数据库。与Spanner不同,对于大多数事务,HybridTime不需要等待时间误差(解读:Spanner的TrueTime是一个范围时间,为了确保时间的准确性,事务会等待时间超过该误差再提交),因此可以用于常见的时间同步系统。我们在同一个系统中实现了HybridTime和commit wait,并在一系列实际场景中对HybridTime与Spanner的commit wait进行了实验比较,结果表明HybridTime在延迟方面的性能相较于Spanner的commit-wait可以提高1个数量级。

阅读全文 »

Hekaton是MS-SQLServer专门为基于内存的OLTP工作负载优化的存储引擎。该内存引擎采用无锁数据结构和乐观的多版本并发控制技术,从而实现了非常高的并发和10倍以上的性能提升。

阅读全文 »

yugabyte使用google的protobuf实现rpc通信,因此大多数关于protobuf编程的细节可以参考官方文档。另外yugabyte基于protobuf构建rpc通信,其rpc客户端和服务器的实现是通用的,因此yugabyte实现了一个protobuf的plugin来负责对service相关的proto文件进行编译。

阅读全文 »

本文为项目实践总结,目标对用户页面浏览信息进行存储,存储周期为三年;同时需要对三年存储数据进行实时查询供运营人员分析。项目架构大致为:用户页面浏览信息实时写入Kafka,内存数据库实时消费Kafka数据进行合并去重等运算后每个用户保存一天的数据在内存中,多余的数据需要转存到时序数据库。网站用户量达到1亿,根据对线上环境的分析,每条浏览信息大概82个字节(包含时间戳,用户编号等信息),平均转存入时序数据库的数据OPS在7W左右。

阅读全文 »

二度关系是指用户A与用户E以公共的联系人C为桥梁发现他们之间的隐含关系,用户E(A)称为用户A(E)的二度联系人。用户C称为用户A或E的一度联系人。通过二度关系挖掘可以实现诸如潜在好友的推荐、可能感兴趣的商品推荐等应用。

阅读全文 »

Ignite的支持跨cache的transaction,跨cache的transaction时要求不同cache之间的Atomicity Mode是相同的。Cache的Atomicity Mode通过CacheConfiguration中的atomicityMode进行配置,主要支持下面三种Atomicity Mode。

阅读全文 »

下面是摘自《Principles of Distributed Database Systems, 3rd Edition》中关于事务的一段描述,讲述了事务实现所依赖的组件:“事务是对数据库进行一致、可靠访问的基本单元,作为一个比较大的原子操作,负责将数据库从一个状态转移到另一个状态。为了满足一致性,需要对数据完整性限制进行定义,并且需要并发控制算法来协调多个事务的执行。并发控制也会处理隔离性的问题,事务的持久性和原子性需要可靠性的支持。持久性是由不同的提交协议和提交管理方法实现的;另外为了满足原子性,还需要开发恰当的恢复协议。”

阅读全文 »

VHD包括3中类型:固定(Fixed)VHD,动态(Dynamic)VHD和差异化(Differencing)VHD。固定VHD在创建虚拟盘的时候直接分配虚拟盘大小的存储空间,当然还要加上一些相关的元数据;动态VHD是按需分配的,在任意时刻占用的存储空间大小都跟它实际使用的存储空间大小相同;差异化VHD则在parent VHD(可以是固定VHD,或者动态VHD,或者是差异化VHD)的基础上,只记录那些更新过的数据块来表示虚拟盘的当前状态。本文中所涉及的是动态VHD。

阅读全文 »

Ignite 是一个以内存为中心的分布式数据库、缓存系统和计算平台,目的是用来支持数据密集的程序开发,ignite可以每秒支持上百万的事务和PB级的内存数据管理。基于Apache Ignite 2.6.0。

阅读全文 »