Post ADjMd1wUMDO9OYOFbk by amirouche@floss.social
(DIR) More posts by amirouche@floss.social
(DIR) Post #ADjMcycAjIM34frU1Y by temporal@mastodon.technology
2021-11-23T18:12:04Z
0 likes, 0 repeats
#DearFediverse, I'd kindly like to outsource some research. I'd love if someone could point me towards:1) A #graph #database that's embeddable / file-oriented, the way #SQLite is, preferably a FLOSS one, and preferably with a graph-specific query language (i.e. not regular #SQL). I'm not sure if such a databse exists.2) Any material on graph database #architecture, how one would go about writing one.3) A good graph #query language, and/or some theory behind such.Thank you for any help you can give!
(DIR) Post #ADjMczD2WDqSv16vUO by wasamasa@lonely.town
2021-11-23T21:14:06Z
0 likes, 0 repeats
@temporal Tagging @amirouche for this one.
(DIR) Post #ADjMczgojVfGPN2hu4 by amirouche@floss.social
2021-11-24T05:36:51Z
0 likes, 0 repeats
@wasamasa Thanks for the tag!@temporal As far as I understand there is no a readily available and usable #graphdb that match what you describe. I dare to ask more questions to help fine tune my answer:
(DIR) Post #ADjMczpKDsTCpl1VAG by temporal@mastodon.technology
2021-11-24T11:25:08Z
0 likes, 0 repeats
Calling @Chartodon
(DIR) Post #ADjMd0KsKZhuPbmhLE by temporal@mastodon.technology
2021-11-24T11:23:58Z
0 likes, 0 repeats
@amirouche Thanks for taking the time to reply and tease my query into details; I've replied to each subsequent toot individually, to maintain a nice, clean tree structure :).@wasamasa
(DIR) Post #ADjMd0kOng7jglj57o by amirouche@floss.social
2021-11-24T13:33:36Z
0 likes, 0 repeats
@temporal @wasamasa Then, in that case your best choice, I believe, is to build an OKVS on top SQLite3, and then on top the OKVS build the Neo4J API you are familiar with, and use gremlin as query language.Does it make sense?I can help to figure the schema on top of the #OKVS interface.Mind the fact, I have similar goals, and I prefer https://srfi.schemers.org/srfi-168/ to the regular "Property Graph" even if...ref: https://git.sr.ht/~amirouche/okdbref: https://git.sr.ht/~amirouche/python-okdbref: http://tinkerpop.apache.org/gremlin.html
(DIR) Post #ADjMd1KCeYlPToTfvs by temporal@mastodon.technology
2021-11-24T13:41:56Z
0 likes, 0 repeats
@amirouche Thank you! Those are some solid references to dig into.OKVS on top of SQLite makes sense; I have some experience with abusing SQLite v3, and it will more than suffice performance-wise.Not sure how to build Neo4J-like API on top of it; I'm familiar mostly with shooting Cypher queries at the DB and debugging them in their browser viewer.That Gremlin link looks just like what I needed wrt. graph query languages. Is there a standardized s-expression form of the language?@wasamasa
(DIR) Post #ADjMd1lV14b8qTFTTk by temporal@mastodon.technology
2021-11-24T13:44:52Z
0 likes, 0 repeats
@amirouche When I used Neo4J with Common Lisp, we had a lisp-flavored Cypher, built by a coworker as a set of macros that parsed the DSL and glued together a string to send over JSON API to Neo4J. Was good enough, but with its corner cases, so I'd definitely want to see if someone ever designed a proper, user-friendly s-exp representation of a graph query language.I just remembered - isn't that what #Clojure people did with #Datomic? I'll have to take a look at it too.@wasamasa
(DIR) Post #ADjMd1wUMDO9OYOFbk by amirouche@floss.social
2021-11-24T05:37:13Z
0 likes, 0 repeats
@wasamasa @temporal a) What embeddable in this context means? Like linking with a C program ?
(DIR) Post #ADjMd3krcPHJ14xzlY by amirouche@floss.social
2021-11-24T05:38:06Z
0 likes, 0 repeats
@wasamasa @temporal b) What file based means? All database system I know of are file-based-like-sqlite, except maybe one, in any case: they do not rely on direct i/o. File-based might also mean that they are text-file based. SQLite rely on very few files, in fact, the data file is a single file; they are other db with similar design, but the file is binary.
(DIR) Post #ADjMd5YAwYJiaJ2tGa by amirouche@floss.social
2021-11-24T05:38:26Z
0 likes, 0 repeats
@wasamasa @temporal c) Regarding the architecture it really depends what you want / need to do? What is the use case: e.g. what is the read and write workload? I guess you need deep traversal / navigation. What are the queries you need to write?
(DIR) Post #ADjMd5fGWBzKwIMYJk by amirouche@floss.social
2021-11-24T13:38:05Z
0 likes, 0 repeats
@temporal @wasamasa The next best choice I know is https://source.wiredtiger.com/10.0.0/I do not know about Neo4J-like database but that you can dynamic link, maybe #arangodb does that?
(DIR) Post #ADjMd7Dgjh7LlLTYbw by amirouche@floss.social
2021-11-24T05:38:54Z
0 likes, 0 repeats
@wasamasa @temporal d) The query language is possibly the most difficult part. There is several approaches in the wild. Answering the previous questions will help me figure the best reply.
(DIR) Post #ADjMd7ed7WfV6u54bY by amirouche@floss.social
2021-11-24T13:54:50Z
0 likes, 0 repeats
@temporal @wasamasa In fact, wiredtiger can work instead of sqlite3. It is part of debian at least.
(DIR) Post #ADjMd8wkJekn7NZ3Ts by amirouche@floss.social
2021-11-24T05:40:19Z
0 likes, 0 repeats
@wasamasa @temporal Spoiler: I might bring up https://okvs.dev into the conversation; tho, I can try to make it appear like I am not biased.
(DIR) Post #ADjMdApjIiKUyCITp2 by amirouche@floss.social
2021-11-24T05:50:22Z
0 likes, 0 repeats
@wasamasa @temporal What is the programming language you intend to use the graphdb you are looking for?
(DIR) Post #ADjMdCcKfUnkVE2oDY by amirouche@floss.social
2021-11-24T06:06:23Z
0 likes, 0 repeats
@wasamasa @temporal Another question: Why is Neo4J not a good solution for the problem you want to solve?
(DIR) Post #ADjMsGsF7mUk32fhgm by veer66@mstdn.io
2021-11-24T15:58:23Z
0 likes, 0 repeats
@temporal Maybe SSE is. https://jena.apache.org/documentation/notes/sse.html@amirouche @wasamasa