KV数据存储:持久化-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

KV数据存储:持久化

简介:

介质特性

由于内存的易失性,存储于内存的数据需要持久化来保证数据的安全。除了存储介质不同,本质上数据是可以在不同的存储介质中互相拷贝。内存极好的随机访问特性。磁盘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)如何定义通用的数据存储格式?


本文转自 zhenjing 博客园博客,原文链接:http://www.cnblogs.com/zhenjing/archive/2012/11/01/KV-Persistence.html   ,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章