Module: sip-router
Branch: janakj/flatstore
Commit: 5e3087888e64fc705a64b10aff378fc580a31cf7
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5e30878…
Author: Jan Janak <jan(a)iptel.org>
Committer: Jan Janak <jan(a)iptel.org>
Date: Sat Jul 23 23:21:36 2005 +0000
- improved documentation system
- documentation makefiles
- proper documentation dependency tracking in makefiles
- XML-based dialect of docbook used with xi:include inclusions
---
modules/db_flatstore/doc/Makefile | 29 +++++++
modules/db_flatstore/doc/flatstore.xml | 134 ++++++++++++++++++++++++++++++++
modules/db_flatstore/doc/functions.xml | 17 ++++
modules/db_flatstore/doc/params.xml | 26 ++++++
4 files changed, 206 insertions(+), 0 deletions(-)
diff --git a/modules/db_flatstore/doc/Makefile b/modules/db_flatstore/doc/Makefile
new file mode 100644
index 0000000..28b668f
--- /dev/null
+++ b/modules/db_flatstore/doc/Makefile
@@ -0,0 +1,29 @@
+#
+# The list of documents to build (without extensions)
+#
+DOCUMENTS = flatstore
+
+#
+# The root directory containing Makefile.doc
+#
+ROOT_DIR=../../..
+
+#
+# Validate docbook documents before generating output
+# (may be slow)
+#
+#VALIDATE=1
+
+#
+# You can override the stylesheet used to generate
+# xhtml documents here
+#
+#XHTML_XSL=$(ROOT_DIR)/doc/stylesheets/xhtml.xsl
+
+#
+# You can override the stylesheet used to generate
+# plain text documents here
+#
+#TXT_XSL=$(XHTML_XSL)
+
+include $(ROOT_DIR)/Makefile.doc
diff --git a/modules/db_flatstore/doc/flatstore.xml
b/modules/db_flatstore/doc/flatstore.xml
new file mode 100644
index 0000000..263f28a
--- /dev/null
+++ b/modules/db_flatstore/doc/flatstore.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4//EN"
+
"file:///usr/share/sgml/docbook/dtd/xml/4/docbookx.dtd">
+
+<section id="flatstore"
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <sectioninfo>
+ <authorgroup>
+ <author>
+ <firstname>Jan</firstname>
+ <surname>Janak</surname>
+ <affiliation><orgname>FhG FOKUS</orgname></affiliation>
+ <email>jan(a)iptel.org</email>
+ </author>
+ </authorgroup>
+ <copyright>
+ <year>2004</year>
+ <year>2005</year>
+ <holder>FhG FOKUS</holder>
+ </copyright>
+ <revhistory>
+ <revision>
+ <revnumber>$Revision$</revnumber>
+ <date>$Date$</date>
+ </revision>
+ </revhistory>
+ </sectioninfo>
+
+ <title>Flatstore Module</title>
+
+ <section id="overview">
+ <title>Overview</title>
+ <para>
+ Flatstore is one of so-called SER 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 module can use it instead of, for example, mysql module.
+ </para>
+ <para>
+ The module does not export all functions of the database API, it
+ supports only one function, insert. 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. Note that the acc module is the only module that
+ was tested with flastore.
+ </para>
+ <para>
+ The format of the files produced by this module is plain text. Each
+ line consists of several fields, fields are separated by |
+ character. New information is always appended at the end of the
+ file, searching, deleting and updating of existing data is not
+ supported by the module.
+ </para>
+ <para>
+ The acc module can be configured to use flatstore module as
+ database backend using the db_url_parameter:
+ </para>
+ <programlisting>
+modparam("acc", "db_url", "flatstore:/var/log/acc")
+ </programlisting>
+ <para>
+ This configuration options tells acc module that it should use the
+ flatstore module and the flatstore module should create all files
+ in /var/log/acc directory. The directory must exist and SER
+ processes must have permissions to create files in that directory.
+ </para>
+ <para>
+ Name of files in that directory will follow the following pattern:
+ </para>
+ <programlisting>
+<table_name>_<process_name>.log
+ </programlisting>
+ <para>
+ For example, entries writen by SER process 8 into acc table would
+ be written in file acc_8.log. For each table there will be several
+ files, one file for every SER 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 SER 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.
+ </para>
+ <section id="rotating">
+ <title>Rotating Log Files</title>
+ <para>
+ There is a new SER FIFO interface command called flat_rotate.
+ When SER receives the command then it will close and reopen all
+ files used by flatstore module. The rotation itself has to be
+ done by another application (such as logrotate). Follow these
+ steps to rotate files generated by flatstore module:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Rename the files that you want to rotate:
+ <screen>
+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
+...
+ </screen>
+ Note that at this point SER will still be writing all
+ data into the renamed files.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Send SER the fifo command to close and reopen the
+ renamed files:
+ <screen>
+serctl fifo flat_rotate
+ </screen>
+ This will force SER to close the renamed files and open
+ new ones with original names, such as
+ <filename>acc_1.log</filename>. New files will be open
+ at the point when SER has some data to write. It is
+ normal that the files will be not created immediately
+ if there is no traffic on the proxy server.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Move the renamed files somewhere else and process them.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+
+ <xi:include href="params.xml"/>
+
+</section>
diff --git a/modules/db_flatstore/doc/functions.xml
b/modules/db_flatstore/doc/functions.xml
new file mode 100644
index 0000000..29dea48
--- /dev/null
+++ b/modules/db_flatstore/doc/functions.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4//EN"
+
"file:///usr/share/sgml/docbook/dtd/xml/4/docbookx.dtd">
+
+<section id="flatstore.functions"
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <sectioninfo>
+ <revhistory>
+ <revision>
+ <revnumber>$Revision$</revnumber>
+ <date>$Date$</date>
+ </revision>
+ </revhistory>
+ </sectioninfo>
+
+ <title>Functions</title>
+
+</section>
diff --git a/modules/db_flatstore/doc/params.xml b/modules/db_flatstore/doc/params.xml
new file mode 100644
index 0000000..a6d838e
--- /dev/null
+++ b/modules/db_flatstore/doc/params.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4//EN"
+
"file:///usr/share/sgml/docbook/dtd/xml/4/docbookx.dtd">
+
+<section id="flatstore.functions"
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <sectioninfo>
+ <revhistory>
+ <revision>
+ <revnumber>$Revision$</revnumber>
+ <date>$Date$</date>
+ </revision>
+ </revhistory>
+ </sectioninfo>
+
+ <title>Parameters</title>
+
+ <section id="flush">
+ <title><varname>flush</varname> (integer)</title>
+ <para>
+ Enable or disable flushing after each write.
+ </para>
+ <para>
+ Default value is 1.
+ </para>
+ </section>
+</section>