I've been using a package called org-brain that is using, I'm all but certain, the org-id-locations file as its database to store graph-like relationships between org files and org headings. org-brain is a sort of graph database which adds a PROPERTIES drawer with just the ID field with a UUID to an org file, as well as to the org headings in each file. So I opened this 127k file residing in my .emacs.d directory and apparently whatever is in my org directory and has a PROPERTIES drawer with ID field winds up in .org-id-locations represented as plists in one big list, one for each file that has one or more drawers. But you knowledgeable people here know all this already. However, it surprised me since such a format as this
(...("~/Dropbox/org/orgb_fassungen/FassungenDesc.org" "1ba78dfc-d6c3-46c5-827d-37db94fa9053" "6809202d-9a4c-4ed0-87fb-798676f448fe" "f2149157-6ba1-4e24-81c3-4e070fcc5de8" "5b7c2d9a-2df8-450a-a0c8-9d3b8e703044" "f3031b9f-3708-493d-9546-f489835c9f17") ("~/Dropbox/org/orgb_fassungen/Fassungen.org" "e9b683af-90b1-4ece-9afd-18dc28a9fab2")...)
where, e.g., inside the file FassungenDesc.org there are many org headings, each with a PROPERTIES/ID drawer -- and they're all associated to FassungenDesc.org with that simple list. So I'm asking if this is a good design for a really big graph database? I'd like to start using org files and their containing headings as vertices. But I'm guessing this is not really all that scalable, not really intended for such a big thing. I saw another emacs graph database (
https://github.com/toshism/netz) that uses h.el hash to store graph vertices and edges. So again, is this org-brain approach DOA for anything big? I plan on having potentially hundreds of org files with very many heading entries each (over a thousand perhaps per file) representing vertices. What would be a better way of databasing org files and headings? The PROPERTIES/ID drawer idea is fine, but not throwing it all in .org-id-locations, right?
Ancillary: If I move or delete .org-id-locations, Emacs will rebuild it, right? What is the idea behind having such a file structured this way -- other than a simple database? What else uses it?
--
⨽
Lawrence Bottorff
Grand Marais, MN, USA