ITPub博客

首页 > 数据库 > 数据库开发技术 > 【Rust 日报】2023-07-09 Agnesoft图数据库

【Rust 日报】2023-07-09 Agnesoft图数据库

原创 数据库开发技术 作者:Rust语言中文社区 时间:2023-07-11 23:05:33 0 删除 编辑

Agnesoft图数据库

Agnesoft是一种使用对象 'no-text' 查询的持久化内存映射图数据库。它可以用作主要的持久化存储、数据分析平台以及快速的内存缓存。其类型化的无模式数据存储允许以灵活无缝的方式进行数据更新,而无需停机时间或昂贵的迁移。所有查询都是通过构建器模式(或直接作为对象)构建的,而无需特殊的语言或文本解析。主要特点如下:
  • 在图上绘制的数据
  • 附加到图元素(节点和边)的类型化键值属性
  • 持久的基于文件的存储
  • 符合 ACID 要求
  • 使用构建器模式的对象查询(无文本,无查询语言)
  • 内存映射以实现快速查询
  • 无依赖
基本用法示例:演示创建数据库、插入带有数据的图元素,并使用 select 和 search 查询它们。使用此代码的函数必须处理 agdb::DbError 和 agdb::QueryError 错误类型,以便使操作符。
use agdb::Db;
use agdb::QueryBuilder;
use agdb::Comparison::Equal;

let mut db = Db::new("user_db.agdb")?;

db.exec_mut(&QueryBuilder::insert().nodes().aliases("users").query())?;
let users = db.exec_mut(&QueryBuilder::insert()
.nodes()
.values(vec![vec![("username", "Alice").into(), ("joined", 2023).into()],
vec![("username", "Bob").into(), ("joined", 2015).into()],
vec![("username", "John").into()]])
.query())?;
db.exec_mut(&QueryBuilder::insert().edges().from("users").to(&users).query())?;
这段代码创建了一个名为user_db.agdb的数据库,其中包含一个简单的由4个节点组成的图形。第一个节点别名为users,然后通过边与Alice、Bob和John的3个用户节点连接到users节点。任意的用户名属性和稀疏连接属性被附加到用户节点上。可以通过它们的ID选择图元素(节点和边),以获取它们及其关联的数据(键值属性):
let user_elements = db.exec(&QueryBuilder::select().ids(users).query())?;
println!("{:?}", user_elements);
// QueryResult {
// result: 3,
// elements: [
// DbElement { id: DbId(2), values: [DbKeyValue { key: String("username"), value: String("Alice") }, DbKeyValue { key: String("joined"), value: Int(2023) }] },
// DbElement { id: DbId(3), values: [DbKeyValue { key: String("username"), value: String("Bob") }, DbKeyValue { key: String("joined"), value: Int(2015) }] },
// DbElement { id: DbId(4), values: [DbKeyValue { key: String("username"), value: String("John") }] }
// ] }
还可以通过搜索来获取想要的图元素:
let user = db.exec(&QueryBuilder::select()
.search(QueryBuilder::search()
.from("users")
.where_()
.key("username")
.value(Equal("John".into()))
.query())
.query())?;
println!("{:?}", user);
// QueryResult {
// result: 1,
// elements: [
// DbElement { id: DbId(4), values: [DbKeyValue { key: String("username"), value: String("John") }] }
// ] }
GitHub: https://github.com/agnesoft/agdb

mfp音乐播放器

一个用于播放音乐混音的命令行实用程序,适用于编程和专注(来自musicforprogramming.net),能够唤起心流状态!

也可直接下载编译好的:https://github.com/guptarohit/mfp/releases
GitHub; https://github.com/guptarohit/mfp

Rust面试手册

无论您是 Rust 爱好者还是为即将到来的面试做准备,这份全面的资源将帮助您在 Rust 编码挑战和面试中取得卓越的表现。内容包含:
🔍 精选收集:精心编制了一份筛选过的面试问题、编程练习和深入解释的集合,旨在提升您的 Rust 技能水平。
💡 概念洞察:通过详细的解释,获得对 Rust 关键概念和习惯用法的扎实理解,使您能够高效地解决复杂问题。
GitHub: https://github.com/imhq/rust-interview-handbook
链接: https://intmain.co/

Boa v0.17发布

在这个版本中,官方 ECMAScript 测试套件(Test262)中的一致性从 74.53% 增加到 78.74%。虽然这看起来只是一个小幅增加,但与上个版本相比,现在通过了 6079 个更多的测试。无论如何,这个版本的重大变化与一致性无关,而是与大规模的内部增强和新的 API 相关。
具体的ChangeLog:https://github.com/boa-dev/boa/blob/v0.17/CHANGELOG.md
GitHub: https://github.com/boa-dev/boa
链接: https://boajs.dev/

From 日报小组 长琴
社区学习交流平台订阅:
  • Rustcc 论坛:支持 rss
  • 微信公众号:Rust 语言中文社区

原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718780