看tag知内容

3 Innovations While Unifying Pinterest’s Key-Value Storag

Pinterest 他们有四个kv,都是历史kv,rocksstore(rocksdb), terrapin,基于hdfs的kv,UserMetaStore UMS,rockscassadra

历史包袱太重了,pinterest决定都归一到rockstore,首先,各个服务接口都不一样,如何归一?

首先,统一一套kvstore API,thift的接口

对于不需要写的业务,比如terrapin这种离线数据,可以直接hook terrapin的api,让terrapin的底层直接调用kvstore的api,迁移结束,hook,下线旧的服务,简单

但是有的场景只要value中的一个字段(把kv当大宽表用),需要trim掉,基于HDFS来做的,这种场景在rockstore没有,解决方案是重写key,拆成hash类似的结构

对于有读有写的业务,比如UMS,还是hook,区分读写,这里直接推进业务使用kvstore的api接口,新的写写入新机群,读,kvstore的接口调用底层的UMS的接口去读,数据迁移结束,去掉hook

另外一点:数据导入的版本问题,他们也使用双buffer切换,问题在于,就两个版本,不够用

他们引入了一个kv store manager,这个东西记录版本,然后集成到kvstore api里,这他吗不是又实现了一个etcd/zookeeper吗?

版本用时间戳记录,不同的store记录不同版本,这不也冗余了吗,意义不大啊感觉

Reversing an integer hash function

Five Signs You’ve Outgrown Redis

aerospike宣传他们的服务特点 支持持久化性能还不差,维护性还好

怎么支持持久化Hybrid Memory Architecture

有点类似hashtable,索引全内存,文件SSD,这样性能怎么会好呢?

Disk I/O is not required to access the index, which enables predictable performance. Such a design is possible because the read latency characteristic of I/O in SSDs is the same, regardless of whether it is random or sequential. For such a model, optimizations described are used to avoid the cost of a device scan to rebuild indexes.

不访问索引,读全靠运气吗,这个predictable不开就是走索引,开了,预测一波,没击中,再走索引,通过读的IO分布特征统计

HTAP with Azure Cosmos DB: Hybrid Transaction & Analytical Processing (Hari Sudan S)

一个root维护,可能是b树什么的,然后底层数据用parquet存

写流程

具体事务怎么实现?完全没提

RavenDB: Practical Considerations for ACID/MVCC Storage Engines (Oren Eini)

解决方法比较简单

单写,实现MVCC就靠COW就可以了,不阻塞

不写磁盘,磁盘太慢了。写buffer往下刷

WAL设计取舍

WAL优化点

写优化

感觉利用c# 的协程能力,把写抽象成任务,搞成batch,而不是直接死板的lock write commit

什么时候更新文件?

这种搞法,缓存的数据不能保证落地,丢最近的record是否可以接受?

其他场景

这个做个参考

rqlite: The Distributed Database Built on Raft and SQLite (Philip O’Toole)

其实主要工作就是如何把raft的接口用sqlite实现好,怎么抽象log entry

The TileDB Universal Database (Stavros Papadopoulos)

这个想法挺有意思,但是数组怎么抽象成具体的kv呢,感觉和parquet有点像,又有点不像

维度信息,快速

果然,两种形态 本质还是列存

如何文件描述

index

把一个数组的几个部分分别索引

整体貌似是api接口形式的,也提供了各种数据库的插件

这个存储的明显受益没说。抽象能力强,面向业务场景比较集中

Fluree - Cloud-Native Ledger Graph Database (Brian Platz)

直接把关系谓语都存了????? ????

各种index分别存,用btree组织。最终还是回到了btree

mysql 图版?

ApertureDB: Designing a Purpose-built System for Visual Data and Data Science (Vishakha Gupta)

用的新硬件 傲腾。没开源。部署在azure上

性能数据就不贴了。和neo4j比 没意思

看着工作量挺麻烦

计划