Show HN: Graph Processing with Postgres and GraphBLAS
github.com
github.com
Edit: I'd forgot to ask, do you have some ideas on the subject? I'm all ears.
Long term that's maybe a promising target. That's out of scope of pggraphblas now, but like RedisGraph uses GraphBLAS internally, one could implement a Cypher or GQL look alike using the foundational bits of pggraphblas.
Edit: and to answer your actual question, if Cypher, or SQL/GQL for that matter, is "high-level" user experience then the GraphBLAS API experience is sort of aiming for the "mid-level". Still quite technical, but more powerful tools than for "low-level" which would be writing graph algorithms by hand in some procedural language.
One of the key goals of GraphBLAS is this sort of meeting of the minds between the hardware experts and the graph problem solvers. This one page poster kind of sums that up nicely:
https://resources.sei.cmu.edu/asset_files/Poster/2016_020_00...
I'm guessing Google uses a variant of this at scale - but not sure if their label propagation algorithms can be implemented on something like Spark and Postgres.
Also, can we overload operators in Postgres?
It looks really cool but I didn’t get from the readme how I would best take my relational tables and make a set of matrices from them.
I’ll take another look this weekend
select matrix(array_agg(row), array_agg(col), array_agg(val))) from table;
For the inverse operation there are set returning functions called 'matrix_elements_<type>(m)' which return the graph elements as row tuples.From a table management standpoint, matrices are varlena objects much like arrays. Triggers can be used to call set_element() to keep matrices and tables sync'ed, although like arrays, this has a high re-serialization cost for large arrays. Because of this it's best to modify matrices in bulk operations.