Hi everybody,
This is a quick update to let you know that I’m still very much working on the project. However I got side tracked and working on libs for general consumption turned out to be harder than expected.
As a result, I’ll release a couple of libs on github before any hex release. My hope is to get feedback from the community before the hex releases.
I’m mainly working on two libraries (names subject to change):
-
m_bolt : a very thin implementation of the bolt protocol supporting versions 1 to 5.3 (currently). I’m now working on a third (and last) iteration. The m in the name is an hommage to mint because it’s a process less library (and the transport code was stolen from mint). The goals here are efficient decoding and maintainability (bolt is a moving target). A side effect of the redesign is that it’ll be possible to translate bolt structs into elixir struct at the decoding stage. m_bolt will not provide any pooling nor routing support (apart from allowing to setup server side routing).
-
neo4_ex : built on top of m_bolt and db_connection, which aims to be close to what bolt_sips provided.
Status :
- I’m fairly happy with the decoder in m_bolt and I believe further optimizations will bring diminishing returns.
- The api for m_bolt has gotten cleaner, if a bit verbose (but that shouldn’t matter for most users).
- The transport code is so/so because from neo4j 4.2 onward, the buffering of the records has been dropped which means that you get blasted with very small packets if you do eg
match (n) return n
where n is small. I haven’t been able to find a solution to this issue. - neo4_ex : at first I’ll only have a functional but maybe awkward support for routing. (Neo4j now supports multiple databases, each could get its own routing table).
I’m very sorry for the delays.