博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KV数据存储:持久化
阅读量:6303 次
发布时间:2019-06-22

本文共 641 字,大约阅读时间需要 2 分钟。

介质特性

由于内存的易失性,存储于内存的数据需要持久化来保证数据的安全。除了存储介质不同,本质上数据是可以在不同的存储介质中互相拷贝。内存极好的随机访问特性。磁盘seek极慢,良好的顺序读写性能;SSD极好的随机读性能,擦除次数上限;擦除再写入;页写入,块擦除(写放大: 擦除512KB大约2ms)。

Linux中写文件并无法保证文件的数据是连续的,若一定要保证磁盘空间的连续性,需要使用空间预分配fallocate。

数据持久化

当内存数据有序存放,可直接将内存数据导出到持久化设备中,如磁盘、SSD。对于非有序的内存数据,转成某种可解释的格式连续存放即可。

索引与数据

在<内存篇>中,为了保证数据有序,常使用数据索引+数据的存储方式。对于索引数据有3种处理方式:1)只存数据:当使用数据时通过扫描数据恢复数据索引;2)独立存储索引和数据;3)将索引和数据存放在一起:一般将索引存放在数据后面(索引依赖于数据的位置)。

数据格式与数据

对于KV数据,可完全不考虑数据格式,由应用程序自行处理数据格式。对于数据格式有3种处理方式:1)由应用程序自行处理;2)采用人可读的格式存储,比如txt、json、XML;3)独立存储数据格式和数据,如MySQL、采用独立的protocal buffer文件描述数据格式;4)将数据格式和数据存放在一起:一般将数据格式存放在数据之前(数据解释依赖其格式)。

实现细节

1)如何保证持久化一定成功?fsync?

2)如何定义通用的数据存储格式?

转载地址:http://uoyxa.baihongyu.com/

你可能感兴趣的文章
初识闭包
查看>>
java tcp socket实例
查看>>
011 指针的算术运算
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
LeetCode----67. Add Binary(java)
查看>>
母版页 MasterPage
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>