Org Roam 数据库总是全量重建, 可能的修复方法

2024年了在一台顶级笔记本上一个文本编辑器的性能还是如此垃圾😂

还是要对比具体的操作和文件大小。相同的org文件在emac浏览编辑很顺畅,但是导入到logseq导入要很久,浏览也卡顿。所以我不认为emacs的性能差。

感谢建议。我现在想不到有什么场景一定要用org-roam。

插入链接,可以用补全框架搜索之后,写一个自定义函数,把选择的candidate插入链接;

反向链接,不常使用,需要也可以直接搜索。

如无必要我就勿增实体了

那我觉得这种场景更适合用 denote 。无需数据库,文件名由 id、标题、标签 构成,可直接在 dired 里面搜索和批量处理,反向连接直接用 ripgrep 。

多么痛的领悟, 应该多读读文档的…

用了数据库后,继续使用org文件系统,在数据库和文件系统间同步来同步去感觉很复杂, 性能应该也不会好.

我把 org文件放进数据库 后,至今没敢做导出成多个org文件这个功能,因为一旦做了导出,下一步似乎就是多个org文件导入, 再下一步就是计算每个文件的 hash 值,并与数据库中的 hash 值进行比对,识别变更,next……

一开始不做某件事,后面的很多问题也就遇不到了 :joy:

除了兼容非org-mode系统,我暂时没有get到denote这么做的优势。而且这个方案似乎也更倾向多个小文件。

只要org-mode不用大文件来组织,而是每个笔记一个原子笔记,似乎也能做到。

而且现在反向连接用helm加一个自定义的动作也可以实现。

所以评估了下使用的成本和使用的收益,我选择暂时搁置org-roam :joy:

denote 最大的优势在于它的命名的格式,有时间戳,index,title和tag。一看文件名就知道大概的内容。

基于该命名方式可以很方便的作筛查和排序。

搞数据库有啥明显的好处?

方便索引, 内容不多的时候没影响, 内容多到一定程度后搜索和统计速度更快.

感觉就是把org-mode的headline提升到了文件名 :joy:

1 个赞

这个类容多是什么数量级? denote 有人测了下一万笔记没啥性能缺馅。

还是有区别,headline 只是denote 中的title,没有其他信息。

denote 还是文件命名方式,如果使用org roam 也按照这一命名方式执行,应该也可以。

headline行也有tag,我不知道index是什么,但是时间戳也只是命名习惯的问题。

anyway,感谢推荐,听上去这个方案更适合习惯多个小文件的用户。对我来说层级也是笔记管理的重要部分,denote不太适合我的需求。

这个我也没好好测试过,我存放org内容的sqlite数据库文件最多的时候有40多M,后来vacuum等整理了一遍现在有26M

图片

如果把这些都导出成纯文本文件,内容太多我现在也不知道该用什么样的规则来管理这些文件了

纯文本的话,26M,那笔记量应该很大了。

主要是一个org文件会存很多份导致的, 即使内容只改了一个字, 也当作一个版本存一份, 开始是想类似本站的贴子一样实现 历史记录的功能 , 后面就完全是怕丢了

个人在使用 org-roam 一段时间后的感受

痛点:

1 - windows 系统中,启动 emacs 的同时自动同步 org-roam 数据,导致 org 文档打开时乱码。所以目前关闭了自动同步 org-roam 数据,改为启动 emacs 后手动同步。

2 - windows 系统中,通过 org-roam 生成的 org 文档,在被 ripgrep 搜索到关键字打开时,会失败、无法被打开。

优点:
1 - 关联式笔记,的确可以促发主动学些、记忆。虽然这一点完全可以被 ripgrep 取代,但 org-roam 更直观。

2 - 使用 org-roam 搜索关键词时,自动在闭环内查找,省去了范围设置,效率也因范围的固定而相对提高。

总结:
目前,个人使用 org-roam 的范围只限固定内容、无需频繁修改的笔记中。还用于一些关联性特别强的笔记中。大多还是使用原生org + ripgrep 比较多。

这两个痛点疑似都与字符编码有关,我在Windows上用Org-roam和ripgrep,没有出现这类问题

1 - windows 系统中,启动 emacs 的同时自动同步 org-roam 数据,导致 org 文档打开时乱码。所以目前关闭了自动同步 org-roam 数据,改为启动 emacs 后手动同步。

试试设置org-mode的字符编码,同时开启自动revert功能:

(use-package lazy-revert
  :ensure nil
  ;; :quelpa (lazy-revert :fetcher github
  ;;                      :repo "yilin-zhang/lazy-revert")
  :hook (after-init . lazy-revert-mode)
  ;; Optional
  :config
  (setq auto-revert-verbose t ; let us know when it happens
        auto-revert-use-notify nil
        auto-revert-stop-on-user-input nil
        ;; Only prompts for confirmation when buffer is unsaved.
        revert-without-query (list ".")))
(add-to-list 'file-coding-system-alist '("\\.org\\'" . utf-8))

2 - windows 系统中,通过 org-roam 生成的 org 文档,在被 ripgrep 搜索到关键字打开时,会失败、无法被打开。

试试设置ripgrep的字符编码

(add-to-list 'process-coding-system-alist
                        '("[rR][gG]" . (utf-8 . gbk-dos)))

还有些其他可能有用的字符编码设置:

(prefer-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(set-default 'process-coding-system-alist
             '(("[pP][lL][iI][nN][kK]" gbk-dos . gbk-dos)
               ("[cC][mM][dD][pP][rR][oO][xX][yY]" gbk-dos . gbk-dos)))
3 个赞