[Kamailio-Users] avpops OR sqlops

Alex Balashov abalashov at evaristesys.com
Mon Dec 21 21:50:09 CET 2009


On 12/21/2009 03:42 PM, Henning Westerholt wrote:

> On Mon, December 21, 2009 9:27 pm, Alex Balashov wrote:
>> [..]
>> In short, I don't think sqlops is materially faster, but it is a more
>> modern and sophisticated way to talk to your database and you should use
>> it for that reason.
>
> Hey Alex,
>
> as AVPs are also more or less just a special kind of pseudo-variable, like
> the exported interface from the sqlops module there should be indeed no
> notable speed difference, especially on today fast systems. But indeed
> sqlops have the more appropriate interface and I would recommend it for
> new deployments, for the reasons you summarized.

Indeed.

Having said that, AVPs are still very useful and necessary because they 
persist across the lifetime of a transaction, so you can access them in 
subsequent reply and failure routes.  This is not true of user 
pseudovariables ($var(...)), nor, as far as I know, of any other class 
of pseudovariable at this point except special transaction-persistent 
ones exported by modules.

As a result, it is often necessary for me to take data from $dbr 
(sqlops) and load it into arrays of AVPs, such as for example when doing 
custom fail-over in failure_route that uses logic for which dispatcher 
is not suitable.  I store a set of gateways in an AVP array along with 
another AVP value indicating the current array index and iterate over 
them in failure_route, and so on.

Daniel taught me how to use AVP arrays once, although I noticed this is 
not mentioned anywhere in the avpops documentation.  It should be 
published somewhere, as it is one of the most useful programmatic 
features of Kamailio.

Henning/Daniel, does Kamailio 3/SR offer any kind of better substitute 
for what I am doing with AVPs as described above?  In other words, are 
there any transaction-persistent pseudovariables and/or namespace 
containers that are easier to deal with syntactically, and provide more 
advanced data structure primitives like arrays?  I am aware of htable, 
but I need something local to a transaction, not global.

-- 
Alex Balashov - Principal
Evariste Systems
Web     : http://www.evaristesys.com/
Tel     : (+1) (678) 954-0670
Direct  : (+1) (678) 954-0671




More information about the sr-users mailing list