Hello
coming back to the topic related to mtree, to be able to set values via
mi/rpc -- it won't be that difficult to add such functionality. Usually
with a tree is mainly reading, due to fast matching on tree indexing.
The question is how many times/often do you need to change values and
how many of them at the same time (more or less).
I was also thinking about that: our application works in such a way that
the full
tree is recalculated every 15 minutes. Currently we have aound 60
branches with 150000 entries each.
I assume many times the changes will be somewhere down
the tree, since
the first part of the number is usually the same (e.g., country code and
operator prefix). To update the tree at runtime, while there are reads
on it, there must be used a lock to be safe an consistent. If you do lot
of writes and very often, then you keep the tree structure locked a lot,
slowing the search.
That's the case, tname is rarely updated, it's tvalue the column that we
normally update.
Can you estimate the number of writes and how often they would be on a
daily basis? There might be other solutions to look at, if writes are
very often.
From the numbers above, let's say that we need to
update around 8M records
every 15 minutes (we expect this number will keep steadily
increasing...)
As a side note, I've looked at how to implement the mt_match equivalent in
redis and it does't look that hard using kamailio s.prefixed transformation
(as you suggested) and redis sorted sets. I'll need to make more tests to
check the performance, I'll share the results.
Thanks!
Javi
Cheers,
Daniel
Regards
Javi