bionic (7) elektra-backends.7.gz

Provided by: elektra-doc_0.8.14-5.1ubuntu2_all bug

NAME

       elektra-backends - the backend concept

       Elektra  has introduced *backends** to support the storage of key databases in different formats. Elektra
       abstracts configuration so that applications can receive and store settings without carrying  information
       about  how  and  where  these  are  actually stored. It is the purpose of the backends to implement these
       details.

       Since Elektra 0.8 a backend is composed of many plugins.

MULTIPLE PLUGINS

       Its clear that too many  features  in  one  backend  is  problematic.  It  introduces  unwanted  external
       dependences  and  leads  to  less  portable  backends. Many different aspects clutter the code making the
       backends unmaintainable. Features of other backends cannot be taken with ease because they are interwoven
       with other code.

       To  support  the  reuse  of  a  functionality, they must be useful in different situations. Separation of
       concerns is required for that. Each backend needs to have a specific purpose rather than implementing the
       full semantics of Elektra.

       It  was  impossible  to  implement  powerful  and  feature-rich  backends  so  far because of the lack of
       modularity. Desirable features like notification and type checking have always been  in  the  developers´
       heads, but there was no place where it would fit in without making the system unmaintainable, complex and
       full of unwanted external dependences.

       To solve this dilemma, Elektra uses multiple plugins together build up a backend. The key  set  processed
       by  one  plugin  will  be  passed  to the next. This approach allows us to implement separate features in
       separate plugins. Plugins concerned with reading and writing to  permanent  storage  are  called  storage
       plugins.  We  cleaned  existing  backends  from  other tasks so that their only job now is related to the
       storage. Using this approach, the plugins provide the desired separation of concerns inside a backend.

       Each plugin implements a single concrete requirement and it does  that  well.  This  architecture  allows
       plugins  to  have external dependence. Not every plugin has the burden to be portable anymore. That is no
       problem because the plugins are separate subprojects and maintainers can decide if they should  be  built
       for  a  specific platform or not. Afterwards users can choose which plugins they want to install and use.
       And finally, the administrator can choose which of the plugins should be loaded for each  backend.  If  a
       specific  feature  is  not  needed,  it is not included and does not cause additional overhead. Given the
       chosen approach, the core of Elektra can stay minimal. Most functionality can be moved to plugins.

       Now let us look at the development time with multiple plugins. The programmer  will  find  many  reusable
       plugins.  Some of them already fulfil given requirements. While checking the code quality of the plugins,
       the programmer actually learns how the plugin works. Given that point of view, the programmer will decide
       to use Elektra because he or she can choose from a pool of existing plugins.

SEE ALSO

       •   More information about elektra-plugins(7) elektra-plugins.md

       •   The tool for mounting a backend is kdb-mount(1) kdb-mount.md

       •   The plugins are ordered as described in elektra-plugins-ordering(7) elektra-plugins-ordering.md

                                                    July 2017                                ELEKTRA-BACKENDS(7)