深入分析数据库中数据的存储和读取

本文深入探讨数据库中的数据存储方式,从最简单的数据库模型出发,介绍哈希索引、SSTable和B-Tree的工作原理,解析数据的高效读写策略,并讨论并发与恢复策略,帮助理解数据库底层机制。
摘要由CSDN通过智能技术生成

我们日常的开发或多或少都会和数据库打交道,那么数据库中数据都是如何存储来保证读写的效率呢?本文就来详细地介绍数据库中数据的存储和读写。

最简单的数据库

我们首先来看一个最简单的通过bash来实现的数据库,它就是一个键值数据库,通过Bash函数来实现读写。

这里有两个函数,一个是写函数,就是简单的写入key和value对。另外一个函数是db_get()函数,它可以读出最新写入的一行数据。

我们可以这样使用它,这里我们就是写入了两个key,value,一个是123456,对应的后面的Json格式数据:'{"name":"San Francisco","attractions":["Exploratorium"]}',另外一个键值是42,它对应的是'{"name":"San Francisco","attractions":["Golden Gate Bridge"]}',最后我们可以调用get函数得到42对应的值。这个实现算是简单明了,一目了然了。

那么假如一个键值被设置了多次该怎么保存了,如下图所示:

我们可以看到,42被重写了,这里最简单的实现就是继续往后面加一行,然后在读取的时候从后往前读(后面就是最新的),就可以得到最新的值了。

其实在真正的数据库中,也有类似的实现就是一个不断增加的log文件,我们会不停地往里面写,当然真实的数据考虑的问题会复杂很多,比如写到一半出问题了,或者写出问题了等等。但是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值