前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从BerkeleyDB认识内嵌式数据库

从BerkeleyDB认识内嵌式数据库

原创
作者头像
叫我阿柒啊
发布2024-08-23 20:47:37
3300
代码可运行
发布2024-08-23 20:47:37
举报
运行总次数:0
代码可运行

前言

说起数据库,很多人第一时间想到的是MySQL、oracle这样的关系型数据库,亦或者是redis这种KV结构的内存数据库。这些数据库在我们的生产环境中都是随处可见的。

后来我在学习python的爬虫框架Scrapy的时候,其中scrapy-deltafetch插件,解决了每次启动无法从上次结束位置接着爬取的问题。在深入学习的过程中了解到,scrapy-deltafetch这一功能是由嵌入式数据库BerkeleyDB实现的。

内嵌式数据库

平时我们使用的MySQL、redis等,都需要在服务器上首先部署独立的软件服务,然后每个服务监听一个端口(例如MySQL的3306、redis的6376)。然后我们在编程开发中,通过客户端或者SDK连接这些服务。

这也意味着如果想获取MySQL、redis中的数据,用户程序要和就要和它们进行通讯,且出现网络波动、网络中断都会影响正常的数据库连接和请求。

那什么是嵌入式数据库呢?顾名思义,嵌入式数据就是将数据库嵌入到了应用程序进程中,同应用程序在相同的地址空间中运行,所以程序和嵌入式数据库不需要进程间的通讯。

其次,嵌入数据库是一种具备了基本数据库特性的数据文件,提供了一套API去访问、管理一个数据库文件,采用程序方式直接驱动,而非引擎响应方式驱动。

常见的内嵌式数据库

在我的大数据开发生涯中,我遇到过三种内嵌式数据库:

  1. SQLite:SQLite是一个关系型的SQL数据库引擎。
  2. Berkeley DB:Berkeley DB 是一个高性能的嵌入式数据库,支持键值存储模式。我在scrapy-deltafetch插件中第一次了解。
  3. RocksDB:从LevelDB派生出来的一个键值数据库引擎,我在学习flink开发的时候,RocksDB用作存储状态后端。

BerkeleyDB

上面的三种内嵌式数据库,我对BerkeleyDB研究的比较多一些,所以这里就拿BerkeleyDB来做一个演示。

代码语言:python
代码运行次数:0
复制
from bsddb3 import db
# 创建数据库对象
bsddb = db.DB()
# 打开对象
bsddb.open("DouLuoDaLu.db")

value = bsddb.get(b'7a2be8fb1a7f645c95e1d994d9cd5bcc58073b3f')
print(value)

更新中...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 内嵌式数据库
    • 常见的内嵌式数据库
    • BerkeleyDB
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档