BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
11 stars 4 forks source link

【提案】sql.std.dweb+sqlite.sys.dweb #115

Open Gaubee opened 5 months ago

Gaubee commented 5 months ago

需要一个高性能的存储方案,替代现有直接使用file.std.dweb+file.sys.dweb 保存cbor内容

kingsword09 commented 5 months ago
  1. realm-kotlin
  2. electric 可以结合Tauri和LLM:https://electric-sql.com/blog/2024/02/05/local-first-ai-with-tauri-postgres-pgvector-llama
Gaubee commented 5 months ago
  1. realm-kotlin
  2. electric 可以结合 Tauri 和 LLM:https://electric-sql.com/blog/2024/02/05/local-first-ai-with-tauri-postgres-pgvector-llama
  1. realm 不符合该提案的需求,它是 mongodb 的 api 风格,属于 NoSql,另外它的设计本身就是为了满足 mongodb 的离线存储而设计的。我们这个是一个后端,需要完整的数据库
  2. electric 也许可以满足需求,但它也是一种为了满足 Postgres 的离线存储而设计的,它更贴近业务层。

这个提案的方向应该是:使用 Sqlite 或者寻找它的替代品。

sqlite 有一些缺点,比如不能在多线程上运行。

这个提案本身也是为了满足程序未来能部署在桌面或者云端这种有着更强算力的平台上,让开发者只需要专注于核心业务的开发,而无需担心是要服务多少用户。 对于移动设备,当然只是服务本机一个用户(或者少量几个,如果我们做了多用户系统、或者家庭系统) 对于桌面设备,有着更好的供电系统,可以服务于几千几万的用户。 对于云端,有着集群,可以服务于百万千万的用户。

这些构想可以帮助我们前期做好设计,虽然我们无法立刻决策“怎么做”,但是至少可以辅助我们决策“不要做什么”

kingsword09 commented 4 months ago

WasmEdge Runtimedatabase 示例:wasmedge-db-examples

kingsword09 commented 4 months ago

@Gaubee libSQL 感觉符合我们的需求 blog

  1. SQLite的开源分支 libsql github
  2. 支持RustJavascript
  3. 可以加密
  4. MIT开源
Gaubee commented 4 months ago

如果选型 libSQL,那么是否嵌入wasmEdge的runtime会是更好的选择? 这样libSQL就能持续更新。

当然数据库是一个特殊的存在,也许我们可以对其深度绑定是当下必须坚持的。但是wasm的方向也是值得我们未来去考量。

https://www.youtube.com/watch?v=4gBVxJH6LQk&t=22s

kingsword09 commented 4 months ago

如果选型 libSQL,那么是否嵌入wasmEdge的runtime会是更好的选择? 这样libSQL就能持续更新。

当然数据库是一个特殊的存在,也许我们可以对其深度绑定是当下必须坚持的。但是wasm的方向也是值得我们未来去考量。

https://www.youtube.com/watch?v=4gBVxJH6LQk&t=22s

感觉两者结合挺好的,还可以实现非阻塞的连接

Gaubee commented 4 months ago

先用直接内嵌的方式吧,然后再找一个kotlin sql dsl,(比如 [https://www.ktorm.org/en/dialects-and-native-sql.html#Enable-Dialects]()、[https://github.com/JetBrains/Exposed](),看能不能支持多平台

Gaubee commented 4 months ago

https://github.com/electric-sql/pglite

kingsword09 commented 4 months ago

https://github.com/electric-sql/pglite

这个有看到,但是它没有License,应该不能用吧

kingsword09 commented 4 months ago

https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/sql

Gaubee commented 4 months ago

https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/sql

这是一个rust用的连接层工具吧?

kingsword09 commented 4 months ago

https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/sql

这是一个rust用的连接层工具吧?

是的,用的库好像是 https://crates.io/crates/sqlx

kingsword09 commented 2 months ago

官方实现 kotlin 多平台 SQLite

Gaubee commented 1 month ago

官方实现 kotlin 多平台 SQLite

官方这个确实可以试着对接一下。

但是没有看到数据加密的选项,总不能让使用者对自己的数据去加密,这样查询就废了大半。