Open
Description
Hi! I recently wrote the library https://github.com/meedstrom/indexed. Afterwards, I began considering how to design an all-new DB, and glad to see prior art here!
It seems great if I can make Indexed just copy the org-sql schemata, so we have interop.
Some questions if you don't mind:
- Do you scan a huge list of files at some point, or just incrementally for every file visited?
- How long does the scan take? I assume it takes a while if the buffer was not already open, because org-ml relies on
org-element-parse-buffer
and therefore org-mode itself, but I could be wrong and you managed to optimize it.
- How long does the scan take? I assume it takes a while if the buffer was not already open, because org-ml relies on
- What do you do with properties? How would a query look, to e.g. find an entry that has property :CREATED: greater than
[2020-12-31 Wed 15:00]
?- I'm wondering if you create a new table automatically for every unique property found; that's the idea I was going to go with.
- Also I was thinking of handling multivalued properties by splitting them according to some customizable "property-splitters-alist", where the default splitter just does it the same way as
org-entry-get-multivalued-property
. There exist other properties that must be split in a different way. ROAM_ALIASES is split withsplit-string-and-unquote
; and ROAM_REFS is even more complicated - I have a function for that called indexed-roam-split-refs-field.
- You do not (yet) record the "zeroth-level" entry, correct? (I.e. content before first heading)
- Would you store it in the exact same way as other entries, or do you think it makes more sense to have a separate table?
- Have you considered storing the entire text contents of each entry and file, instead of a MD5 hash of it?
Metadata
Metadata
Assignees
Labels
No labels