@mattias504 How does this look? https://github.com/threatgrid/asami/wiki/3.-Loading-Data
Wow, looks very solid after a first skim. I’ll spend some time doing a lot of newbie trial and error to get data in, I’ll report any huge blind spots in the docs that only the uneducated can find… 😅
It’s tough to provide sufficient info for the various ways people want to bring in data, without also overwhelming people
Tiny detail fwiw, on this page: https://github.com/threatgrid/asami/wiki/7.-Asami-API the link to the “querying” chapter misses and gets you to the index. (https://github.com/threatgrid/asami/wiki/Querying) but should be (?) https://github.com/threatgrid/asami/wiki/6.-Querying
Ah, thank you. I added numbers to try to put it into some kind of order, and that updated the links
Yeah, the whole Clojure world sort of expects people to magically be vets from the start. I think all levels of docs really help, but of course, once you’ve fought your way past it might feel silly (for some) to provide the help that would have been good.
Another question when you are generous with your time - what is the relation to Asami 2? Is it just the next version or is it more dramatic? 🙂
To that point: I’m going on about Clojure syntax and “keywords” without explanation. I felt awkward expecting people to know, but I figured they’re not going to be here if they don’t know Clojure
I was debating getting rid of that page entirely. It was important back when it was still in Alpha
Asami 1.x was entirely in-memory. Asami 2.x supports in-memory databases, and on-disk databases
in-memory databases are created with URLs of: asami:<mem://database>
or asami:<multi://database>
on disk databases are created with URLs of: asami:<local://database>
Interesting, I’m eager to try that out as well. Is there any info to be found? How are the files found or routed to, etc? 🙂
Current directory of the process. They use the database name to create a directory and then everything is stored in there
Hah, well. Even advocating for lowering the bar like I do, I think you’re safe. Finding Asami and being interested does require some knowledge so I’d say you’re all right there 😀
So if you start a repl while you’re in /home/me/data
then type:
(require '[asami.core :as d])
(def c (d/connect "asami:<local://database>"))
You now have a directory of /home/me/data/database
which contains the files that Asami uses for storageVery cool, thanks. Can you modify the path via the URL? I just know someone is going to want to specify a path to some persistent volume (running Docker) in my near future… 🙂
Not exactly. I didn’t want people to use URLs like asami:local://../../etc/httpd
and do something silly on your system, so I filter ..
out from paths. If I wanted to do what you’re saying, then I’d use a symlink, and point the URL to use that
It does handle nested paths though
so asami:<local://one/two/three>
will create one/
, one/two/
, and one/two/three/
Perhaps I should introduce a system property to specify where to open things, and fallback to the pwd when it’s not available
Sounds good, symlinking would take care of it. Keep it simple. 🙂