RefineDB:一款强类型文档数据库

RefineDB:一款强类型文档数据库

RefineDBA strongly-typed document database that runs on any transactional key-value store.项目地址:https://gitcode.com/gh_mirrors/re/RefineDB

Build status

项目介绍

RefineDB 是一款运行在任何事务性键值存储上的强类型文档数据库。它旨在提供比传统 SQL 数据库更高的可扩展性,比 NoSQL 数据库更强的结构化支持,以及比现有数据库更强的静态类型检查。RefineDB 的设计初衷是为了满足开发者对数据库的更高要求,使其成为开发者自己愿意使用的数据库。

目前,RefineDB 支持以下后端:

  • FoundationDB:适用于分布式部署。
  • SQLite:适用于单机部署。
  • 一个简单的内存键值存储,用于 Web 演示。

你可以在 Web Playground 上尝试 RefineDB!

注意:目前尚未准备好用于生产环境。

项目技术分析

架构设计

RefineDB 的架构设计非常独特,它将数据库的查询执行视为数据流图的简化过程。核心组件包括 TreeWalker VM 和 RefineAsm。TreeWalker VM 是一个大规模并发的数据流虚拟机,用于运行查询;而 RefineAsm 则是查询图的文本表示,提供了一些语法糖以简化编写过程。

类型系统和模式定义

RefineDB 的类型系统非常强大,支持多种基本类型(如 int64doublestringbytesset<T>),并且可以通过组合这些基本类型来定义复杂的模式。例如,一个简单的博客模式可以定义如下:

type SiteConfig {
  site_name: string,
  registration_open: int64,
}

type BlogPost {
  @primary
  id: string,
  author_email: string,
  author_name: string,
  title: string,
  content: string,
  access_time: AccessTime,
}

type AccessTime {
  create_time: int64,
  update_time: int64,
}

export SiteConfig site_config;
export set<BlogPost> posts;

查询语言

RefineDB 的查询语言 RefineAsm 非常灵活,允许开发者以数据流图的形式编写查询。例如,向上述博客模式中添加一篇新文章的 RefineAsm 脚本如下:

type PostMap = map {
  id: string,
  author_email: string,
  author_name: string,
  title: string,
  content: string,
  access_time: map {
    create_time: int64,
    update_time: int64,
  },
};
export graph add_post(root: schema, post: PostMap) {
  s_insert root.posts $ call(build_post) [post];
}
graph build_post(post: PostMap): BlogPost {
  return build_table(BlogPost)
    $ m_insert(access_time) (build_table(AccessTime) post.access_time) post;
}

存储计划和模式迁移

RefineDB 通过分离模式和存储计划,使得模式变更变得非常快速。在迁移过程中,新增字段会自动分配新的存储键,而删除的字段则不会从存储中自动删除。这种设计允许多个模式版本共存,客户端可以选择使用哪个模式版本,从而防止意外的数据删除。

项目及技术应用场景

RefineDB 适用于需要高度结构化和强类型检查的应用场景,特别是在以下领域:

  • 分布式系统:RefineDB 支持 FoundationDB 作为后端,非常适合需要高可扩展性和分布式部署的应用。
  • 单机应用:对于不需要分布式部署的应用,RefineDB 支持 SQLite 作为后端,提供了轻量级的解决方案。
  • Web 应用:RefineDB 的 Web Playground 提供了一个简单易用的在线演示环境,适合开发者快速上手和测试。

项目特点

  • 强类型检查:RefineDB 提供了比现有数据库更强的静态类型检查,减少了运行时错误的可能性。
  • 灵活的模式定义:支持多种基本类型和复杂类型的组合,使得模式定义非常灵活。
  • 高效的查询执行:通过 TreeWalker VM 和 RefineAsm,查询执行效率高且易于编写。
  • 快速的模式迁移:通过分离模式和存储计划,模式变更非常快速,且支持多个版本共存。
  • 多后端支持:支持 FoundationDB、SQLite 和内存键值存储,适用于不同的部署场景。

RefineDB 是一个正在快速发展中的项目,虽然目前尚未准备好用于生产环境,但其独特的设计和强大的功能已经吸引了众多开发者的关注。如果你正在寻找一款兼具可扩展性、结构化和强类型检查的数据库,RefineDB 绝对值得你一试!

RefineDBA strongly-typed document database that runs on any transactional key-value store.项目地址:https://gitcode.com/gh_mirrors/re/RefineDB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范凡灏Anastasia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值