首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实现一个简单数据库

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

先来看一段代码:

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了,良好的索引可以加速读的性能,但是减小写的性能。所以索引不是数据库的默认选项,而是需要使用者谨慎的选择。

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180226G1BXZV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券