blog review 第十四期
看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比 没意思
看着工作量挺麻烦
计划