Jinbase – 多模型事务嵌入式数据库

jinbase – 多模型事务嵌入式数据库

嗨,开发者!

我是 Alex,一名技术爱好者。我很高兴向您展示 Jinbase,我的多模型事务嵌入式数据库。

大约一年前,我介绍了 Paradict,这是我对多格式流序列化的看法。鉴于其可读性,Paradict 文本格式实际上是配置文件的一种有趣的数据格式。但是使用 Paradict 来管理配置文件最终会使其编程界面变得混乱,并使那些仍然可以选择专用于配置文件的替代库(TOML、INI 文件等)的用户感到困惑。所以我使用 Paradict 作为 KvF(键值文件格式)的依赖项,这是我的一个新项目,专注于带有部分的配置文件。

凭借其紧凑的二进制格式,我认为 Paradict 将成为一个新项目的有效依赖项,该项目将依赖 I/O 函数(例如 Open、Read、Write、Seek、Tell 和 Close)来实现简约但可靠的功能持久性解决方案。但那是在我了解到“文件很难”之前。 SQLite 及其事务、BLOB 数据类型和 BLOB 的增量 I/O 似乎是我的新项目的正确选择。

Jinbase 最初只是一个键值存储,最终成为一个多模型嵌入式数据库,突破了我们通常使用 SQLite 所做的事情的界限。当我意识到键值存储不太适合为每个新记录自动生成唯一标识符 (UID) 的情况时,第一次转换到第二个数据模型(仓库),从而为用户节省了时间提供可能意外发生冲突并因此覆盖现有记录的标识符的负担。之后,我实现了一种搜索功能,该功能接受仓库存储的 UID 范围、仓库和键值存储的时间跨度(记录自动带有时间戳)以及键值存储中字符串和整数键的 GLOB 模式和数字范围.

队列和堆栈数据模型是作为必须按特定顺序使用记录的用例的解决方案而出现的。典型的记录将在单个事务单元中从数据库中检索和删除。

由于使用SQLite作为存储引擎,Jinbase事实上支持关系模型。为了方便起见,与 Jinbase 内部相关的所有表都以 jinbase_ 为前缀,这使得 Jinbase 成为打开旧版 SQLite 文件以添加与临时关系模型安全共存的新数据模型的有用工具。

所有四种主要数据模型(键值、仓库、队列、堆栈)都支持与 Paradict 兼容的数据类型,例如字典、字符串、二进制数据、整数、布尔值、日期时间等。在幕后,当用户发起写操作,Jinbase 会迭代序列化(二进制数据除外)、分块并存储数据。一条记录不仅可以批量访问,还可以有两种级别的部分访问粒度:字节级和字段级。

虽然 SQLite 的 BLOB 增量 I/O 旨在针对一行中的单个 BLOB 列,但 Jinbase 对此进行了扩展,以便对于每个记录,增量读取覆盖所有块,就好像它们是单个统一的 BLOB 一样。仅对于字典记录,Jinbase 自动创建并维护一个由指向根字段的指针组成的轻量级索引,然后允许从任意记录中提取在返回之前自动反序列化的字段内容。

Jinbase 最明显的用例是存储用户首选项、退出前保留会话数据、基于顺序的数据流处理、向其他进程公开数据、使用新数据模型升级旧版 SQLite 文件以及定制数据持久性解决方案。

Jinbase 用 Python 编写,可在 PyPI 上使用,您可以使用 README 中的示例。

让我知道您对这个项目的看法。

项目链接:https://github.com/pyrustic/jinbase

以上就是Jinbase – 多模型事务嵌入式数据库的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:35:58
下一篇 2025年12月13日 18:36:09

相关推荐

  • 配置 Django 项目以将敏感数据存储在 YAML 文件中

    .py 文件中硬编码令牌、数据库凭据和其他敏感数据并不安全。很多人使用django-environ库,但我认为它不方便。因此,我使用 yaml 文件来存储敏感数据,并使用 pyyaml 库来读取它们的数据。 创建项目文件夹: mkdir myproject 切换创建的文件夹: cd myprojec…

    好文分享 2025年12月13日
    000
  • Python – 级别:询问

    1 级任务 1) 华氏度到摄氏度转换 f=int(input(“enter the no. “))c=5/9*(f-32)print(“fahrenheit to celsius”,round(c)) 输出: enter the no. 108fahrenheit to celsius 42 2) …

    2025年12月13日
    000
  • Python 初学者指南:快速教程 – 2

    python 是最流行的编程语言之一,以其简单性和多功能性而闻名。无论您是编程新手还是希望为您的项目选择 python,本教程都将指导您完成基础知识。 1.什么是python? python 是一种高级解释型编程语言,强调可读性和效率。它广泛应用于网页开发、数据分析、人工智能、科学计算等领域。 2.…

    2025年12月13日
    000
  • 为您的 Python 项目设置 Conda 环境 – 1

    使用 conda 和requirements.txt 设置 python 项目 在处理 python 项目时,创建隔离的环境来管理依赖关系并避免冲突至关重要。本指南将帮助您安装 anaconda、解决常见问题并为您的项目设置虚拟环境。 1.安装 anaconda(在根终端) a) 按照本指南安装 a…

    2025年12月13日
    000
  • python怎么写一个简单的爬虫

    为了编写简单的 Python 爬虫,需要:导入库:BeautifulSoup4、requests、lxml发送 HTTP GET 请求解析 HTML 响应提取数据 Python 编写简单爬虫指南 为了编写一个简单的 Python 爬虫,你需要遵循以下步骤: 1. 选择合适的库 使用以下 Python…

    2025年12月13日
    000
  • python爬虫中标签闭合了怎么办

    Python 爬虫中遇到标签闭合可使用以下方法处理:使用 BeautifulSoup 解析库,自动处理标签闭合。使用正则表达式查找标签内容,但需理解正则表达式语法。使用 HTML 解析器生成 DOM,通过 DOM 获取完整内容。 Python 爬虫中标签闭合了如何处理 在 Python 爬虫中,遇到…

    2025年12月13日
    000
  • 一点不会怎么做python爬虫

    入门 Python 爬虫的步骤:安装 Python 和库,并熟悉基础语法和模块。了解爬虫原理、HTTP 请求和响应、HTML 解析。使用 requests 发送 HTTP 请求,使用 BeautifulSoup 解析 HTML,提取数据并存储。处理复杂网站,使用无头浏览器、应对反爬虫措施。清理数据,…

    2025年12月13日
    000
  • python爬虫怎么传两个参数

    Python爬虫传递两个参数的方法是:命令行参数:在命令行中使用 -a 选项,语法:python crawler.py -a arg1=val1 -a arg2=val2。脚本参数:通过 sys.argv 获取命令行参数,语法:import sys;args = sys.argv[1:],再解析参数…

    2025年12月13日
    000
  • python做爬虫 怎么样效率最高

    高效爬虫使用 Python 的优化策略:并行化处理:使用多线程或多进程同时处理多个请求,并利用 asyncio 或 Tornado 实现非阻塞 I/O。缓存请求:存储爬取结果以避免重复爬取。限制请求速率:使用速率限制器控制爬取频率,避免触发网站反爬机制。针对性爬取:使用正则表达式或 CSS 选择器只…

    2025年12月13日
    000
  • python爬虫数据excel保存怎么弄

    使用 Python 爬虫将数据保存到 Excel 的步骤:安装 openpyxl 库。创建 Excel 工作簿和工作表。循环写入数据到单元格中。保存工作簿为 Excel 文件。 如何使用 Python 爬虫将数据保存到 Excel 方法: 1. 安装相关库 pip install openpyxl …

    2025年12月13日
    000
  • python爬虫怎么点下一页

    使用Python爬虫点下一页的方法有两种:Selenium:使用Selenium自动浏览器操作,点击下一页按钮。Requests:发送HTTP请求提取下一页链接,继续爬取。 如何使用 Python 爬虫点下一页 方法一:Selenium Selenium 是一个流行的 Python 爬虫库,它允许你…

    2025年12月13日
    000
  • python爬虫换行符怎么处理

    Python处理换行符的方法有4种:直接移除换行符;替换换行符为指定字符;保留换行符原格式,使用splitlines()方法拆分为行列表;使用正则表达式处理换行符。 Python 爬虫如何处理换行符 在 Web 爬取中,换行符是一个常见的挑战,因为它会影响数据的解析和处理。Python 提供了多种方…

    2025年12月13日
    000
  • python爬虫怎么从接口拿东西

    通过使用编程语言和 HTTP 库,爬虫可以发送请求到提供 API 接口的网站,从而从响应中获取数据。详细步骤包括:确定 API 端点、建立 HTTP 请求、发送请求、处理响应和提取所需数据。 从接口获取数据的 Python 爬虫 如何从接口获取数据? 通过编程语言,爬虫可以发送请求到提供 API 接…

    2025年12月13日
    000
  • python爬虫怎么爬取动态页面

    Python 爬取动态页面的方法包括:Selenium:用于自动化 Web 浏览器,适合复杂的动态页面。Splash:基于 Chromium headless browser,通过 JavaScript API 处理动态页面。Puppeteer:无头 Chrome 浏览器,提供强大 API 控制浏览…

    2025年12月13日
    000
  • python爬虫url里面怎么写

    URL编写对于Python爬虫至关重要,其结构包括协议、主机名、路径、查询字符串和片段标识符。可以使用urllib.parse模块编写和解析URL,它提供urlparse()、urlunparse()、quote()和unquote()等函数。特殊字符需要编码,而查询字符串包含附加信息并以问号开头。…

    2025年12月13日
    000
  • 超越基础:掌握 Python 的隐藏功能以实现高效编码

    python 的简单性是其最大优点之一,使其成为初学者和专业人士的最爱。然而,除了基础知识之外,还有一个隐藏功能和强大工具的宝库,可以增强您的编码技能。掌握这些高级概念可以让你的代码更加高效、优雅、可维护。本文深入探讨了每个开发人员都应该知道的 python 鲜为人知的宝石。 1.用*和**解压py…

    2025年12月13日
    000
  • 剪掉多余的部分(大约)

    python 编程语言具有近似数据的能力。也就是说,科学地近似函数并将数字四舍五入为特定且精确的数字。 python 中的许多数学函数看起来简洁且符合人体工程学,例如范围、向量等。 随机函数允许您通过变量/数组的所有可能值运行算法。整数的随机数近似函数 (randint) 创建了代码工作的可移植性。…

    2025年12月13日
    000
  • 新博客系列:Python 人工智能基础知识

    欢迎来到我的新博客系列,我们将在机器学习的背景下探索 Python 的迷人世界。由于其简单性和提供的强大库,Python 已成为数据科学和机器学习领域的基石。无论您是初学者还是希望提高自己的技能,本系列都将指导您了解 Python 的基础知识,为您的机器学习之旅奠定坚实的基础。 系列路线图 以下是您…

    2025年12月13日
    000
  • Python 日循环练习、数字游戏和任务

    1)编写一个程序来获取以下输出:1 2 3 4 5 5 4 3 2 1 no = 1top = 5direction = 1while no>0: print(no,end= ‘ ‘) if no == top: print(no,end=’ ‘) direction = -1 no = no…

    2025年12月13日
    000
  • python爬虫怎么找headers

    有几种方法可以获取 Python 爬虫的 Headers:手动指定 Headers使用库(例如 fake_useragent 和 requests_toolbelt)从浏览器中提取 Headers 如何获取 Python 爬虫的 Headers 在 Python 爬虫中,Headers 是发送给目标…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信