Hi all,

I wonder what is the easiest way to make our database code async. Looking at
our tables and code we do not seem to have a very complicated use.

Problem:
        libdbi makes queries to SQLite that kills performance (e.g. every
        SELECT sends out pragma queries for every column to be queried). We
        have a hacked up libdbi from the last congress.

        We have some issues inserting new data into the database (e.g. the db
        being locked). In one way or another we have some issues there
        (either nitb will block, or the external process will...)

        When moving to postgres and a database on a different system we will
        have to deal with latencies and round trip time, but our code is sync.


Goal:
        Most of our setting is 'set and forget'. We don't have complicate
        transactions (e.g. we don't have two nitb's setting the LAC of a
        subscriber, or wouldn't really care).

        When updating the in-memory representation, we don't mind how long it
        will take until it hits the disk on the remote system.


Proposal:
        Also setting/storing will can remain like they are, the return value
        does only mean that a request has been sent.

        Only loading the subscriber, SMS, need to be asynchronous.


M1:
        Change the gsm_subscriber code to load a subscriber asynchronously,
        this will mostly touch the gsm48 code and the VTY area. On load one
        can specify a callback.

M2:
        Change the SMS code to load a SMS asynchronously, this will mostly
        change the SMS queue, some parts of the SMS submit (e.g. to check if
        there are still SMS to be sent) and the submit in the VTY

M3:
        Probably create our own DB abstraction and provide a SQLite3 and
        Postgres backend using the native API of both of them (and getting rid
        of the libdbi and gdb issue)


biggest problem:
        What do we do with the DB queries done from VTY that are        
        asynchronous, e.g to confirm a SMS has been stored? Do we care about
        it? Do we turn this to a 'notification'?


comments
        holger

Reply via email to