Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor flashcard #6

Draft
wants to merge 11 commits into
base: main
Choose a base branch
from
Draft

Conversation

zxhd863943427
Copy link

@zxhd863943427 zxhd863943427 commented May 1, 2024

我准备使用 sqlite 储存代替,这是否可以被接受?这样可以简化很多设计的流程,可以大量借鉴 anki 的模式。

如果不行,我下一步就继续使用 json 或 msgpack。话说 cards 为何不直接使用 json?卡组的体积并不算大。

我个人感觉 msgpack 和 sqlite 在二进制等级上不相上下,所以直接使用 sqlite 取代 msgpack 是可取的。

@88250
Copy link
Member

88250 commented May 1, 2024

直接用 SQLite 的话数据同步可能会有问题,好像不能直接同步 .db 文件;JSON 性能没有 msgpack 好。

@88250
Copy link
Member

88250 commented May 1, 2024

对了,前期方案整理了下 siyuan-note/siyuan#10471 (comment)

@zxhd863943427
Copy link
Author

直接用 SQLite 的话数据同步可能会有问题,好像不能直接同步 .db 文件;JSON 性能没有 msgpack 好。

为什么不能同步db呢?我不是打算储存到temp目录下,我是打算在riff目录下使用 .db 取代 msgpack。

性能上来说也就是序列化这一步吧,我感觉这个操作并不频繁,一点性能问题完全不影响,用json取代msgpack换来的可读性是可以接受的。

不过我还是主要建议使用.db,这样crud操作会变得性能更好、操作更简单。

@88250
Copy link
Member

88250 commented May 1, 2024

连接 .db 以后文件会被占用吧,如何同步文件?

@zxhd863943427
Copy link
Author

嘶,这个问题吗?我只考虑到退出时同步,假如在运行时同步那确实是问题。

不过我感觉在运行时使用db作为crud中介确实是有价值的,不过这样就要改到kernel中实现了。

@88250
Copy link
Member

88250 commented May 1, 2024

使用 db crud 肯定有价值,只是考虑到数据同步的话工作量比较大,所以目前没有 db 化。我个人建议实现上还是先解决文件同步,后期是否要 db 化可以再讨论,而且 db 化如果不放到已有的 db,关联查询似乎也难以实现,放到现有 db 中的话,就要考虑temp 重建索引相关问题,也就是只能沿用已有的 infras。

@zxhd863943427
Copy link
Author

话说D打算怎么实现数据迁移?还是打算新建一个结构体,跟以往的进行分开处理?

@88250
Copy link
Member

88250 commented May 1, 2024

还没有想好,得讨论一下利弊。目前感觉实现完整的数据迁移更彻底一些,后续不用各种兼容。完整的数据迁移指的是新建结构体,将已有的 msgpack 数据导入,导入要考虑幂等性(因为不同设备版本可能不同,可能存在重复导入的情况,重复导入相同 ID 数据不再处理)。导入完成以后删掉老的 msgpack 文件,完全使用新的数据结构。

另外,只迁移内置的卡包 const builtinDeckID = "20230218211946-2kw8jgx",自定义卡包不处理,自定义卡包后期考虑废弃 siyuan-note/siyuan#11207

@zxhd863943427
Copy link
Author

差不多实现了跟以往接口的兼容

@zxhd863943427
Copy link
Author

考虑到需要通过cardSource操作card,感觉把分组信息放在cardsource这里更合适。

@88250 88250 mentioned this pull request Jun 5, 2024
4 tasks
@Jiangshuon
Copy link

@88250 大佬,我看闪卡暂停等功能标记了3.2版本,想问下是指进入3.1版本后开始做(3.2作为完成标志),还是说进入3.2版本后才开始做?目前我闪卡已有千张,没有暂停功能着实有点痛苦
image

@88250
Copy link
Member

88250 commented Jun 10, 2024 via email

@Jiangshuon
Copy link

Jiangshuon commented Jun 10, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants