Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Vincenzo Romano
Introduction
Kannel has the ability to store the SMS DLRs also in SQL tables.
The main aim for this is to provide for storage persistence against
system crashes.
For this reason a DB table is configured where kannel will insert
details for submitted SMSs.
Later, upon reaching the final status, those data will be searched and deleted.

Motivation
This feature can be made more powerful with little changes to the system.
Basically it's all about replacing the deletion with insertion at
every single status change.
This would create a SMS status history from which the user can
extract an amount of useful information that's otherwise lost.

Implementation
On the software side of the feature, the code in gw/dlr.c needs to be
changed in order to replace the calls to method dlr_remove with
dlr_insert (or even dlr_update ).
The underlying table needs to be supplemented at least with a real
timestamp column (automatically calculated at every insertion) in
order to retrieve either the latest status update or the initial
details thanks to the ORDER BY predicate in either ASCending or
DESCending direction.
The actual queries used in dlr_*.c should also be reviewed in order to
reflect thes changes, even if that can be avoided with intervention in
the SQL with VIEWs and TRIGGERs.

Note
I recently started a thread on this topic in the users mailing list.
It can be viewed here:
http://www.kannel.org/pipermail/users/2014-November/021632.html
And I have no idea on how the development organisation is done in Kannel.


Thanks for the patience. Any feedback will be welcomed.



Re: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Cezary Siwek

Hi,

Why don't you just call your custom script through dlr-url? The CGI 
script (in any language you like) can update any custom database you are 
using in your setup.


Regards,
C.



On 07/11/2014 09:34, Vincenzo Romano wrote:

Introduction
Kannel has the ability to store the SMS DLRs also in SQL tables.
The main aim for this is to provide for storage persistence against
system crashes.
For this reason a DB table is configured where kannel will insert
details for submitted SMSs.
Later, upon reaching the final status, those data will be searched and deleted.

Motivation
This feature can be made more powerful with little changes to the system.
Basically it's all about replacing the deletion with insertion at
every single status change.
This would create a SMS status history from which the user can
extract an amount of useful information that's otherwise lost.

Implementation
On the software side of the feature, the code in gw/dlr.c needs to be
changed in order to replace the calls to method dlr_remove with
dlr_insert (or even dlr_update ).
The underlying table needs to be supplemented at least with a real
timestamp column (automatically calculated at every insertion) in
order to retrieve either the latest status update or the initial
details thanks to the ORDER BY predicate in either ASCending or
DESCending direction.
The actual queries used in dlr_*.c should also be reviewed in order to
reflect thes changes, even if that can be avoided with intervention in
the SQL with VIEWs and TRIGGERs.

Note
I recently started a thread on this topic in the users mailing list.
It can be viewed here:
http://www.kannel.org/pipermail/users/2014-November/021632.html
And I have no idea on how the development organisation is done in Kannel.


Thanks for the patience. Any feedback will be welcomed.






Re: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Andreas Fink
the purpose of the persistent storage is for temporary usage as DLR's can refer 
to SMS which have been sent a couple of days ago.
the DLR storage you want is what delivery reports are meant for and those are 
transmitted to the user requesting it
In addition to that the access logs already contains this data.
It would probably make more sense to offer a access log into SQL driver than to 
abuse the internal state cache mechanism.

 Am 07.11.2014 um 10:34 schrieb Vincenzo Romano vincenzo.rom...@notorand.it:
 
 Introduction
 Kannel has the ability to store the SMS DLRs also in SQL tables.
 The main aim for this is to provide for storage persistence against
 system crashes.
 For this reason a DB table is configured where kannel will insert
 details for submitted SMSs.
 Later, upon reaching the final status, those data will be searched and 
 deleted.
 
 Motivation
 This feature can be made more powerful with little changes to the system.
 Basically it's all about replacing the deletion with insertion at
 every single status change.
 This would create a SMS status history from which the user can
 extract an amount of useful information that's otherwise lost.
 
 Implementation
 On the software side of the feature, the code in gw/dlr.c needs to be
 changed in order to replace the calls to method dlr_remove with
 dlr_insert (or even dlr_update ).
 The underlying table needs to be supplemented at least with a real
 timestamp column (automatically calculated at every insertion) in
 order to retrieve either the latest status update or the initial
 details thanks to the ORDER BY predicate in either ASCending or
 DESCending direction.
 The actual queries used in dlr_*.c should also be reviewed in order to
 reflect thes changes, even if that can be avoided with intervention in
 the SQL with VIEWs and TRIGGERs.
 
 Note
 I recently started a thread on this topic in the users mailing list.
 It can be viewed here:
 http://www.kannel.org/pipermail/users/2014-November/021632.html
 And I have no idea on how the development organisation is done in Kannel.
 
 
 Thanks for the patience. Any feedback will be welcomed.
 




Andreas Fink

CEO DataCell ehf
CEO Backbone ehf

---
Tel: +41-61-330 Fax: +41-61-331  Mobile: +41-79-2457333
Address: Clarastrasse 3, 4058 Basel, Switzerland
E-Mail:  andr...@fink.org
www.datacell.com, www.backbone.is, www.finkconsulting.com www.fink.org
---
Jabber/XMPP: andr...@fink.org
ICQ: 8239353 Skype: andreasfink 






Re: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Vincenzo Romano
Hi.
I am not allowed (in my case) to install another web server (either
local or not) or change the existing configuration.
Moreover i saw the information was just there, in the dlr.c file, a
few lines of code away from my need.
dlr-url is powerful, indeed, but adds complexity to something that's
already there: the SQL DB.

2014-11-07 10:47 GMT+01:00 Cezary Siwek cza...@thebestisp.co.uk:
 Hi,

 Why don't you just call your custom script through dlr-url? The CGI script
 (in any language you like) can update any custom database you are using in
 your setup.

 Regards,
 C.




 On 07/11/2014 09:34, Vincenzo Romano wrote:

 Introduction
 Kannel has the ability to store the SMS DLRs also in SQL tables.
 The main aim for this is to provide for storage persistence against
 system crashes.
 For this reason a DB table is configured where kannel will insert
 details for submitted SMSs.
 Later, upon reaching the final status, those data will be searched and
 deleted.

 Motivation
 This feature can be made more powerful with little changes to the system.
 Basically it's all about replacing the deletion with insertion at
 every single status change.
 This would create a SMS status history from which the user can
 extract an amount of useful information that's otherwise lost.

 Implementation
 On the software side of the feature, the code in gw/dlr.c needs to be
 changed in order to replace the calls to method dlr_remove with
 dlr_insert (or even dlr_update ).
 The underlying table needs to be supplemented at least with a real
 timestamp column (automatically calculated at every insertion) in
 order to retrieve either the latest status update or the initial
 details thanks to the ORDER BY predicate in either ASCending or
 DESCending direction.
 The actual queries used in dlr_*.c should also be reviewed in order to
 reflect thes changes, even if that can be avoided with intervention in
 the SQL with VIEWs and TRIGGERs.

 Note
 I recently started a thread on this topic in the users mailing list.
 It can be viewed here:
 http://www.kannel.org/pipermail/users/2014-November/021632.html
 And I have no idea on how the development organisation is done in Kannel.


 Thanks for the patience. Any feedback will be welcomed.



Re: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Vincenzo Romano
Hi.
It's that temporaryness that's not a mandatory feature for kannel to work.
As long as your queries are fast and effective, the application can
provide a(nother) powerful integration tool.

The SMS status information is already there, within system data structures.
My proposal is to keep it structured and stored into the DB.
That'd be more usefulness from the DB store.
What you suggest is to undo later the work done to flatten all the
details into one or more log lines.
That'd be more usefulness from the log store.

My proposal leads to a more effective use of the DB, as there wouldn't
be any UPDATE and DELETE (thus fewer locks, no tablespace
fragmentation, more compact indices). And, reasonably, higher
application throughput.


2014-11-07 10:49 GMT+01:00 Andreas Fink af...@list.fink.org:
 the purpose of the persistent storage is for temporary usage as DLR's can
 refer to SMS which have been sent a couple of days ago.
 the DLR storage you want is what delivery reports are meant for and those
 are transmitted to the user requesting it
 In addition to that the access logs already contains this data.
 It would probably make more sense to offer a access log into SQL driver than
 to abuse the internal state cache mechanism.

 Am 07.11.2014 um 10:34 schrieb Vincenzo Romano
 vincenzo.rom...@notorand.it:

 Introduction
 Kannel has the ability to store the SMS DLRs also in SQL tables.
 The main aim for this is to provide for storage persistence against
 system crashes.
 For this reason a DB table is configured where kannel will insert
 details for submitted SMSs.
 Later, upon reaching the final status, those data will be searched and
 deleted.

 Motivation
 This feature can be made more powerful with little changes to the system.
 Basically it's all about replacing the deletion with insertion at
 every single status change.
 This would create a SMS status history from which the user can
 extract an amount of useful information that's otherwise lost.

 Implementation
 On the software side of the feature, the code in gw/dlr.c needs to be
 changed in order to replace the calls to method dlr_remove with
 dlr_insert (or even dlr_update ).
 The underlying table needs to be supplemented at least with a real
 timestamp column (automatically calculated at every insertion) in
 order to retrieve either the latest status update or the initial
 details thanks to the ORDER BY predicate in either ASCending or
 DESCending direction.
 The actual queries used in dlr_*.c should also be reviewed in order to
 reflect thes changes, even if that can be avoided with intervention in
 the SQL with VIEWs and TRIGGERs.

 Note
 I recently started a thread on this topic in the users mailing list.
 It can be viewed here:
 http://www.kannel.org/pipermail/users/2014-November/021632.html
 And I have no idea on how the development organisation is done in Kannel.


 Thanks for the patience. Any feedback will be welcomed.





 Andreas Fink

 CEO DataCell ehf
 CEO Backbone ehf

 ---
 Tel: +41-61-330 Fax: +41-61-331  Mobile: +41-79-2457333
 Address: Clarastrasse 3, 4058 Basel, Switzerland
 E-Mail:  andr...@fink.org
 www.datacell.com, www.backbone.is, www.finkconsulting.com www.fink.org
 ---
 Jabber/XMPP: andr...@fink.org
 ICQ: 8239353 Skype: andreasfink







RE: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Spina Eduardo
Hi All,

This implementation would be important for me too. I tried sometime ago to 
setup the web server for similar purposes, but, running 1500+ SMS/s, the 
performance dropped significantly with the opening/closing of sockets (at least 
as it was configured, kannel was using HTTP 1.0 and creating a lot of 
connections with the web server, maybe there is a way to setup HTTP 1.1 here?).

Best Regards,
---
Eduardo Martins Spina

-Original Message-
From: devel [mailto:devel-boun...@kannel.org] On Behalf Of Vincenzo Romano
Sent: Friday, November 07, 2014 8:49 AM
To: Andreas Fink
Cc: devel Devel
Subject: Re: Proposal: a more powerful SQL DLR storage

Hi.
It's that temporaryness that's not a mandatory feature for kannel to work.
As long as your queries are fast and effective, the application can provide 
a(nother) powerful integration tool.

The SMS status information is already there, within system data structures.
My proposal is to keep it structured and stored into the DB.
That'd be more usefulness from the DB store.
What you suggest is to undo later the work done to flatten all the details into 
one or more log lines.
That'd be more usefulness from the log store.

My proposal leads to a more effective use of the DB, as there wouldn't be any 
UPDATE and DELETE (thus fewer locks, no tablespace fragmentation, more compact 
indices). And, reasonably, higher application throughput.


2014-11-07 10:49 GMT+01:00 Andreas Fink af...@list.fink.org:
 the purpose of the persistent storage is for temporary usage as DLR's
 can refer to SMS which have been sent a couple of days ago.
 the DLR storage you want is what delivery reports are meant for and
 those are transmitted to the user requesting it In addition to that
 the access logs already contains this data.
 It would probably make more sense to offer a access log into SQL
 driver than to abuse the internal state cache mechanism.

 Am 07.11.2014 um 10:34 schrieb Vincenzo Romano
 vincenzo.rom...@notorand.it:

 Introduction
 Kannel has the ability to store the SMS DLRs also in SQL tables.
 The main aim for this is to provide for storage persistence against
 system crashes.
 For this reason a DB table is configured where kannel will insert
 details for submitted SMSs.
 Later, upon reaching the final status, those data will be searched and
 deleted.

 Motivation
 This feature can be made more powerful with little changes to the system.
 Basically it's all about replacing the deletion with insertion at
 every single status change.
 This would create a SMS status history from which the user can
 extract an amount of useful information that's otherwise lost.

 Implementation
 On the software side of the feature, the code in gw/dlr.c needs to be
 changed in order to replace the calls to method dlr_remove with
 dlr_insert (or even dlr_update ).
 The underlying table needs to be supplemented at least with a real
 timestamp column (automatically calculated at every insertion) in
 order to retrieve either the latest status update or the initial
 details thanks to the ORDER BY predicate in either ASCending or
 DESCending direction.
 The actual queries used in dlr_*.c should also be reviewed in order to
 reflect thes changes, even if that can be avoided with intervention in
 the SQL with VIEWs and TRIGGERs.

 Note
 I recently started a thread on this topic in the users mailing list.
 It can be viewed here:
 http://www.kannel.org/pipermail/users/2014-November/021632.html
 And I have no idea on how the development organisation is done in Kannel.


 Thanks for the patience. Any feedback will be welcomed.





 Andreas Fink

 CEO DataCell ehf
 CEO Backbone ehf

 ---
 Tel: +41-61-330 Fax: +41-61-331  Mobile: +41-79-2457333
 Address: Clarastrasse 3, 4058 Basel, Switzerland
 E-Mail:  andr...@fink.org
 www.datacell.com, www.backbone.is, www.finkconsulting.com www.fink.org
 ---
 Jabber/XMPP: andr...@fink.org
 ICQ: 8239353 Skype: andreasfink






 This message and any attachments are intended solely for the addressees and 
may contain confidential information. Any unauthorized use or disclosure, 
either whole or partial, is prohibited.
E-mails are susceptible to alteration. Our company shall not be liable for the 
message if altered, changed or falsified. If you are not the intended recipient 
of this message, please delete it and notify the sender.
Although all reasonable efforts have been made to keep this transmission free 
from viruses, the sender will not be liable for damages caused by a transmitted 
virus.


Re: Proposal: a more powerful SQL DLR storage

2014-11-07 Thread Vincenzo Romano
Hi,
it looks like I've done it the wrong way to solve my problem.

If I'll find enough time I'll investigate Andreas' suggestion and will
submit the changes to him...
But I need to first finish my project. :-)

2014-11-07 17:28 GMT+01:00 Spina Eduardo eduardo.sp...@gemalto.com:
 Hi All,

 This implementation would be important for me too. I tried sometime ago to 
 setup the web server for similar purposes, but, running 1500+ SMS/s, the 
 performance dropped significantly with the opening/closing of sockets (at 
 least as it was configured, kannel was using HTTP 1.0 and creating a lot of 
 connections with the web server, maybe there is a way to setup HTTP 1.1 
 here?).

 Best Regards,
 ---
 Eduardo Martins Spina

 -Original Message-
 From: devel [mailto:devel-boun...@kannel.org] On Behalf Of Vincenzo Romano
 Sent: Friday, November 07, 2014 8:49 AM
 To: Andreas Fink
 Cc: devel Devel
 Subject: Re: Proposal: a more powerful SQL DLR storage

 Hi.
 It's that temporaryness that's not a mandatory feature for kannel to work.
 As long as your queries are fast and effective, the application can provide 
 a(nother) powerful integration tool.

 The SMS status information is already there, within system data structures.
 My proposal is to keep it structured and stored into the DB.
 That'd be more usefulness from the DB store.
 What you suggest is to undo later the work done to flatten all the details 
 into one or more log lines.
 That'd be more usefulness from the log store.

 My proposal leads to a more effective use of the DB, as there wouldn't be any 
 UPDATE and DELETE (thus fewer locks, no tablespace fragmentation, more 
 compact indices). And, reasonably, higher application throughput.


 2014-11-07 10:49 GMT+01:00 Andreas Fink af...@list.fink.org:
 the purpose of the persistent storage is for temporary usage as DLR's
 can refer to SMS which have been sent a couple of days ago.
 the DLR storage you want is what delivery reports are meant for and
 those are transmitted to the user requesting it In addition to that
 the access logs already contains this data.
 It would probably make more sense to offer a access log into SQL
 driver than to abuse the internal state cache mechanism.

 Am 07.11.2014 um 10:34 schrieb Vincenzo Romano
 vincenzo.rom...@notorand.it:

 Introduction
 Kannel has the ability to store the SMS DLRs also in SQL tables.
 The main aim for this is to provide for storage persistence against
 system crashes.
 For this reason a DB table is configured where kannel will insert
 details for submitted SMSs.
 Later, upon reaching the final status, those data will be searched and
 deleted.

 Motivation
 This feature can be made more powerful with little changes to the system.
 Basically it's all about replacing the deletion with insertion at
 every single status change.
 This would create a SMS status history from which the user can
 extract an amount of useful information that's otherwise lost.

 Implementation
 On the software side of the feature, the code in gw/dlr.c needs to be
 changed in order to replace the calls to method dlr_remove with
 dlr_insert (or even dlr_update ).
 The underlying table needs to be supplemented at least with a real
 timestamp column (automatically calculated at every insertion) in
 order to retrieve either the latest status update or the initial
 details thanks to the ORDER BY predicate in either ASCending or
 DESCending direction.
 The actual queries used in dlr_*.c should also be reviewed in order to
 reflect thes changes, even if that can be avoided with intervention in
 the SQL with VIEWs and TRIGGERs.

 Note
 I recently started a thread on this topic in the users mailing list.
 It can be viewed here:
 http://www.kannel.org/pipermail/users/2014-November/021632.html
 And I have no idea on how the development organisation is done in Kannel.


 Thanks for the patience. Any feedback will be welcomed.





 Andreas Fink

 CEO DataCell ehf
 CEO Backbone ehf

 ---
 Tel: +41-61-330 Fax: +41-61-331  Mobile: +41-79-2457333
 Address: Clarastrasse 3, 4058 Basel, Switzerland
 E-Mail:  andr...@fink.org
 www.datacell.com, www.backbone.is, www.finkconsulting.com www.fink.org
 ---
 Jabber/XMPP: andr...@fink.org
 ICQ: 8239353 Skype: andreasfink





 
  This message and any attachments are intended solely for the addressees and 
 may contain confidential information. Any unauthorized use or disclosure, 
 either whole or partial, is prohibited.
 E-mails are susceptible to alteration. Our company shall not be liable for 
 the message if altered, changed or falsified. If you are not the intended 
 recipient of this message, please delete it and notify the sender.
 Although all reasonable efforts have been made to keep this transmission free 
 from viruses, the sender will not be liable for damages caused by a 
 transmitted