前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现一个简单数据库

实现一个简单数据库

作者头像
哒呵呵
发布2018-08-06 14:23:04
3500
发布2018-08-06 14:23:04
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

数据系统,简单来说就是一个提供数据存储和搜索的软件。当你传入数据给数据系统时,它会把数据存储起来;当你需要你存入的数据时,数据系统会返回给你。现在我们就来看看数据系统是如何存储和搜索数据的吧。

先来看一段代码:

def db_set(key, value):

with open('database','a') as f:

f.write('%s,%s\n'%(key, value))

def db_get(key):

temp = []

with open('database','r') as f:

for data in f.readlines():

if key == data.split(',')[0]:

temp.append(data)

print(temp[-1])

这是一小段python的代码,但是实现了数据系统过的数据存储和搜索的功能。db_set函数用于将数据不断添加存入到database这个文件中,而db_get函数则是搜索database文件,找到匹配的key,返回这个结果。让我们再来仔细看看这两个函数。

存储的文件格式很简单,分隔符为英文逗号,和CSV这种格式一样,database文件里面每一行包含着一个键值对。每一次调用db_set只是将数据简单的添加到database文件后面,如果添加进同一个键值,就需要在db_get函数,每次都返回最新的数据。显然db_set函数的性能相当优秀,因为数据仅仅只是添加到最后,而没有其它的任何操作。在一般的数据库里,database文件可以理解为log单纯只是添加数据,当然真正的数据库对于log的处理很复杂,但是核心就是这样的。

另一方面,db_get函数就稍微有些复杂了,因为它需要遍历整个database文件,显然性能不能令人满意。为了更有效率的搜索文件,就诞生了索引的概念。索引是独立于database文件的数据结构,基本上所有数据库都会向使用者提供索引,不过索引需要额外的精力去维护,对于写的性能有很大的影响。

这就是一个trade-off了,良好的索引可以加速读的性能,但是减小写的性能。所以索引不是数据库的默认选项,而是需要使用者谨慎的选择。

哈哈,标题党了一会,不过一个数据库确实逃不过存储和搜索两个话题,这篇文章算是揭开了数据库一点点的迷雾

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档