
Db_flatstore Module

Jan Janak

   FhG FOKUS
   <jan@iptel.org>

   Copyright © 2004, 2005 FhG FOKUS
     _________________________________________________________________

   Table of Contents

   1. Admin Guide

        1. Overview

              1.1. Rotating Log Files

        2. Parameters

              2.1. flush (integer)

Chapter 1. Admin Guide

   Table of Contents

   1. Overview

        1.1. Rotating Log Files

   2. Parameters

        2.1. flush (integer)

1. Overview

   1.1. Rotating Log Files

   Db_flatstore  is  one  of the SIP Router database modules. It does not
   export any functions executable from the configuration scripts, but it
   exports  a  subset  of  functions from the database API and thus other
   modules  can use it as a database driver, instead of, for example, the
   Mysql module.

   The  module  does  not implement all functions of the database API, it
   supports  only  one  function,  insert.  This means that the module is
   limited   but  very  fast.  It  is  especially  suitable  for  storing
   accounting  information on sites with extremely high traffic. If MySQL
   is  too  slow  or if you get a huge amount of accounting data then you
   can consider using this module. Please note that the acc module is the
   only module that was tested with the flastore module.

   The  format  of  the files produced by this module is plain text. Each
   line  consists  of  several  fields,  fields  are separated by the "|"
   character  (vertical  bar).  New information is always appended at the
   end  of the file. Searching, deleting and updating of existing data is
   not supported by the module.

   The  acc  module  can  be  configured  to  use  db_flatstore module as
   database backend using the db_url_parameter:
modparam("acc", "db_url", "flatstore:/var/log/acc")

   This  configuration option tells the acc module that it should use the
   db_flatstore  module  and  the  db_flatstore  module should create all
   files  in the /var/log/acc directory. The directory must exist and SIP
   Router  processes  must  have  permissions  to  create  files  in that
   directory.

   Name of files in that directory will follow the following pattern:
<table_name>_<process_name>.log

   For  example,  entries writen by the SIP Router process 8 into the acc
   table would be written in file acc_8.log. For each table there will be
   several  files,  one file for every SIP Router process that wrote some
   data  into that table. The main reason why there are several files for
   each  table  is  that  it is much faster to have one file per process,
   because  it does not require any locking and thus SIP Router processes
   will  not  block  each other. To get the complete data for a table you
   can  simply concatenate the contents of files with the same table name
   but different process id.

1.1. Rotating Log Files

   The module implements a SIP Router management interface command called
   flatstore.rotate.  When  SIP Router receives the command it will close
   and  reopen  all  files  used by the db_flatstore module. The rotation
   itself  has  to  be  done  by another application (such as logrotate).
   Follow  these  steps  to  rotate  files  generated by the db_flatstore
   module:
     * Rename the files that you want to rotate:
cd /var/log/acc
mv acc_1.log acc_1.log.20050605
mv acc_2.log acc_2.log.20050605
mv acc_4.log acc_3.log.20050605
...
       Note  that at this point SIP Router will still be writing all data
       into the renamed files.
     * Send  SIP  Router  the  management command to close and reopen the
       renamed files:
kamcmd flatstore.rotate
       This will force SIP Router to close the renamed files and open new
       ones  with  original  names,  such as acc_1.log. New files will be
       open  at  the  point when SIP Router has some data to write. It is
       normal  that the files will be not created immediately if there is
       no traffic on the SIP server.
     * Move the renamed files somewhere else and process them.

2. Parameters

   2.1. flush (integer)

2.1. flush (integer)

   Enable or disable flushing after each write.

   Default value is 1.
