#sqlite #分布式数据库 #分布式 #raft

bin+lib rxqlite

基于 openraftsqlxsqlite 构建的安全分布式 SQLite 数据库

1 个不稳定版本

0.1.24 2024年5月11日
0.1.23 2024年5月3日
0.1.22 2024年4月26日
0.1.11 2024年3月28日

数据库接口 中排名第 898

Download history 300/week @ 2024-04-22 217/week @ 2024-04-29 180/week @ 2024-05-06 15/week @ 2024-05-13 2/week @ 2024-05-20 2/week @ 2024-06-10 27/week @ 2024-07-01 69/week @ 2024-07-29

每月下载量 69

MIT/Apache

1.5MB
7K SLoC

Rust 5.5K SLoC // 0.1% comments JavaScript 1K SLoC // 0.1% comments Shell 375 SLoC // 0.1% comments Batch 21 SLoC // 0.2% comments

包含 (WOFF 字体, 99KB) fontawesome-webfont.woff、(WOFF 字体, 78KB) fontawesome-webfont.woff2、(WOFF 字体, 45KB) open-sans-v17-all-charsets-300.woff2、(WOFF 字体, 41KB) open-sans-v17-all-charsets-300italic.woff2、(WOFF 字体, 45KB) open-sans-v17-all-charsets-600.woff2、(WOFF 字体, 43KB) open-sans-v17-all-charsets-600italic.woff2 等 7 个文件和更多

RXQLite

带有通知的安全分布式 SQLite 数据库


安装


您可以在 GitHub 上编译 rxqlited 或使用为 Windows 或 Ubuntu (x86_64) 构建的二进制文件,地址为: https://github.com/HaHa421/rxqlite/releases

如果是二进制文件,请确保使用最新版本。

Windows:您需要使用 msvc 工具链(由于 https://github.com/rust-rocksdb/rust-rocksdb/issues/866,mingw 构建已损坏)


使用方法


您将以集群模式或单节点模式运行 rxqlited,由于 rxqlited 使用 raft 协议,集群必须包含奇数个节点(rxqlited 作为单个节点形成一个包含单个节点的集群)

在本地机器上启动单个节点集群:使用

rxqlited --id 1 --http-addr 127.0.0.1:21001 --rpc-addr 127.0.0.1:22001 --notifications-addr 127.0.0.1:23001

rxqlited 将在 localhost:22001 上监听 API 和集群管理请求。

然后,您可以使用以下命令从 rxqlited 获取指标

curl https://127.0.0.1:21001/cluster/metrics

您应该看到集群当前领导者为节点 1,在单个节点集群中这是预期的。

在本地机器上启动 3 个节点集群

rxqlited --id 1 --http-addr 127.0.0.1:21001 --rpc-addr 127.0.0.1:22001 --notifications-addr 127.0.0.1:23001 --member "2;127.0.0.1:21002;127.0.0.1:22002" --member "3;127.0.0.1:21003;127.0.0.1:22003" --leader true

rxqlited --id 2 --http-addr 127.0.0.1:21002 --rpc-addr 127.0.0.1:22002 --notifications-addr 127.0.0.1:23002

rxqlited --id 3 --http-addr 127.0.0.1:21003 --rpc-addr 127.0.0.1:22003 --notifications-addr 127.0.0.1:23003

将启动三个 rxqlited 实例。

几秒钟后,我们可以使用以下命令检查集群指标

curl https://127.0.0.1:21001/cluster/metrics

并检查集群包含 3 个节点(成员:[1,2,3])。

任何后续的集群运行都不需要在启动节点时传递 --member 或 --leader

有关 openraft 的更多信息,您可以查看: https://github.com/datafuselabs/openraft

客户端示例展示了使用 Rust 对 API 进行基本使用的示例。

此外,从 https://github.com/HaHa421/sqlx-rxqlite 可以获取 sqlx 驱动(https://github.com/launchbadge/sqlx),以简化使用 rxqlite。

客户端

Rust

安全性

警告:此数据库尚未收到任何 ITSA(独立第三方安全审计)。

rxqlited 版本支持在不安全模式下使用 TLS:它接受无效的证书(这包括自签名证书)。

./ha-init-cluster-insecure.sh

展示如何在非安全的 TLS 模式下运行集群。

它将在 certs-test 中生成自签名证书和私钥,并将使用这对所有集群节点(此处为 3 个节点)。

然后以非 TLS 参数启动三个节点,添加 --cert-path 用于证书路径,--key-path 用于私钥路径,--accept-invalid-certificates true。参数 accept-invalid-certificates 允许 rxqlited 接受无效证书。

再次强调,在随后的集群运行中,不需要传递所有初始化参数。只需要提供 node_id(前提是数据目录是默认的 ./data-{node-id},当前版本中这不是一个选项)即可,如 ha-start-cluster.sh 所示。

许可协议

根据您的选择,许可协议为以下之一:

任选其一。

贡献

除非您明确声明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,应按照上述规定进行许可,不附加任何额外条款或条件。

依赖

~80–115MB
~2M SLoC