I'm pretty satisfied about last huge job just committed in SVN trunk (r4323): the new management of relationships.
First tests show now scale much better when relationships/edges are many. Unfortunately in many tests it's 10-30% slower but hope to speed up all in few days.
In few words I've used the unique MVRB-Tree algorithm also to handle relationships. This scale up very well when you've many many many relationships because only portions of the tree are changed and stored. There's a new configurable threshold to keep previous behaviour storing all the RIDs in the container record. This is preferable with few relationships. Tune is as you want (see below).
To fully control this new powerful mechanism I've introduced 3 new parameters:
mvrbtree.ridBinaryThreshold: valid for set of rids. It's the threshold as number of entries to use the binary external streaming instead of classic string streaming. -1 means never use binary streaming. Default is 8.
mvrbtree.ridNodePageSize: page size of each treeset node. 16 means that 16 entries can be stored inside each node. Default is 16.
mvrbtree.ridNodeSaveMemory: save memory usage by avoid keeping RIDs in memory but creating them at every access. Set it to TRUE if you run under low memory pressure. Default is FALSE.