[asterisk-users] replace astdb with a cluster-capable sql database engine (was: Re: asterisk-users Digest, Vol 44, Issue 22)
Matthew Rubenstein
email at mattruby.com
Sun Mar 9 11:23:50 CDT 2008
unix-odbc with Asterisk Realtime is one good way to use a different
backend DB than MySQL. I haven't heard of "bit rot" problems running it
over long times, but I'd like to if there are any. I'm particularly
interested in seeing reports of Asterisk Realtime backed by Postgres.
The problem with pointing dialplan DB functions like Set(DB) at
unix-odbc (or any relational driver) is that the native functions use
the very fast BDB, not a relational one, that has very different
(better) scaling profiles than running those calls over a database
driver, especially across a network. Having all those BDB data available
in the relational DB for joins and other integrated queries (and backup
and other RDBMS features) would be great, but there is danger in
switching from the simple and high performance BDB into a more complex
RDBMS. One way to do it is to leave the native BDB system, but interface
a replica in the RDBMS to it. A polling process that replicates the BDB
data into the RDBMS, and (if not negligible) updates the RDBMS with a
read whenever the RDBMS copy is used (and then writes to the BDB when
the RDBMS replica changes) would let the BDB remain as a fast/reliable
"cache" directly to Asterisk, but use its data properly in the RDBMS.
I'm interested in seeing any work performed on integrating Asterisk's
data tier away from its defaults. Especially when that work is making
Postgres the authoritive data store. I have various info that can help
such a project, if people are really working on it.
On Sat, 2008-03-08 at 20:08 -0600,
asterisk-users-request at lists.digium.com wrote:
> Date: Sat, 8 Mar 2008 10:01:28 -0800 (PST)
> From: Vieri <rentorbuy at yahoo.com>
> Subject: [asterisk-users] replace astdb with a cluster-capable sql
> database engine
> To: asterisk-users at lists.digium.com
> Message-ID: <955964.50841.qm at web32608.mail.mud.yahoo.com>
> Content-Type: text/plain; charset=iso-8859-1
>
> I've been searching the Internet for information
> regarding the replacement of astdb with a modern sql
> engine.
>
> There are several reasons one would like to do this.
> First of all, external applications have a hard time
> reading/writing to the now-old astdb format.
> Also (and this is what interests me most), the sql
> astdb could easily be clustered throughout several
> servers (I'm looking for a master-master MySQL
> 2-server cluster solution).
>
> Asterisk has brought up Realtime which is very
> powerful but, correct me if I'm wrong, it still
> requires astdb internally. In other words, if I call
> Set(DB) in the dialplan then it will always be using
> astdb regardless of realtime.
>
> Some projects like Callweaver have forked from
> Asterisk 1.2 and replaced astdb with sqlite.
>
> I'm wondering if Asterisk has plans to allow the user
> to choose the astdb backend: standard db1, sqlite,
> MySQL (which I would use with nbcluster for my
> clustering purposes), Postgresql with Slony-II,
> PGcluster, etc.
>
> Or is it already possible?
>
> There has been some talk on this before:
> http://lists.digium.com/pipermail/asterisk-dev/2004-December/007846.html
>
> Also, the func_odbc feature seems to be very powerful:
> http://www.asteriskpbx.org/func_odbc
> but:
> 1) would there be potential issues with db handles on
> a very busy asterisk system after a relatively long
> run time?
> 2) would there be a way to "map" the odbc function(s)
> to the DB functions (Set(DB), read and write, DBdel,
> etc) so that rewriting the whole dialplan would not be
> necessary? (that's the whole point of defining a
> different astdb "backend")
>
> If there are known
> problems/issues/projects/alternatives then please let
> me know.
>
> Thanks
--
(C) Matthew Rubenstein
More information about the asterisk-users
mailing list