【转:分布式存储】-leveldb/rocksdb
本篇介绍典型的基于SStable的存储。适用于与SSD一起使用。更多存储相关见: https://segmentfault.com/a/11... 。涉及到leveldb,rocksdb。基本上分布式都要单独做,重点是单机架构,数据写入,合并,ACID等功能和性能相关的。 先对性能有个直观认识: mysql写入千条/s,读万应该没问题。redis 写入 万条/s 7M/s(k+v 700bytes,双核)读是写入的1.4倍 mem 3gb 2核。这两个网上搜的,不保证正确,就看个大概吧。 SSD上 rocksdb随机和顺序的性能差不多,写要比读性能稍好。随机读写1.7万条/s 14M/s (32核)。batch_write/read下SSD单线程会好8倍。普通write只快1.2倍。 没有再一个机器上的对比。rocksdb在用SSD和batch-write/read下的读写性能还是可以的。 第一章 levelDb 架构图 读取过程 数据的读取是按照 MemTable、Immutable MemTable 以及不同层级的 SSTable 的顺序进行的,前两者都是在内存中,后面不同层级的 SSTable 都是以 *.ldb 文件的形式持久存储在磁盘上 写入过程 1.调用 MakeRoomForWrite 方法为即将进行的写入提供足够的空间; 在这个过程中,由于 memtable