Code

ReleaseNotes: Added 0.3.0 release.
[sysdb.git] / ReleaseNotes
1                              SysDB Release Notes
2                             =====================
4   The release notes contain noteworthy changes in each System DataBase (SysDB)
5   release, with a summary of the most important changes at the top. A complete
6   and very detailed list of changes can be obtained from the Git logs for each
7   release.
9  About SysDB:
10  ~~~~~~~~~~~~
11   “System DataBase” (SysDB) is a multi-backend system management and inventory
12   collection service. It stores system and inventory information about
13   hardware and software systems. This information is (continuously) collected
14   from various configurable backends (inventory services, monitoring services,
15   etc.) and stored in a graph-like hierarchy of generic objects. The store may
16   be queried through a generic interface independent of the active backends.
17   Object names are canonicalized before they are added to the store to ensure
18   a consistent view of your infrastructure.
20   <http://sysdb.io/>
22 Version 0.3.0, Release Date: 2014-08-01
23 ---------------------------------------
25   This release includes major enhancements and new features in the SysDB store
26   which is the core of the database. Most notably, complex expressions are now
27   supported when looking up information and filters may be used to preselect
28   the information to be returned. Some backward-incompatible changes were
29   introduced in the query language to avoid potentially confusing semantics.
31    * sysdb: Fixed non-interactive mode when using libedit.
32    * core:
33      - Fixed weird behavior when collector callbacks were registered without
34        any plugin context information (as it would, e.g., happen when using
35        LoadPlugin instead of LoadBackend in sysdbd).
36    * store:
37      - Introduced service attributes -- similar to host attributes but
38        assigned to a service object.
39      - Don't log “value too old” messages if an updated object uses the same
40        timestamp as the old object.
41      - Switched from linked-lists to AVL trees for storing all object types to
42        reduce lookup times from O(n) to O(log n).
43      - Added infrastructure for handling and evaluating arithmetic
44        expressions and filters (see also the changes to the query language
45        below).
46      - Export various fields describing base attributes of all stored object
47        types: last_update, age, interval, and backend. These fields may be
48        used when querying the store.
49    * frontend: Include new service attributes in JSON output.
50    * query language:
51      - Added support for ‘IS NULL’ attribute checks matching on non-existent
52        attributes.
53      - Changed ‘LOOKUP ... WHERE’ queries to ‘LOOKUP ... MATCHING’ to avoid
54        confusion with SQL semantics.
55      - Switched from ‘<obj>.name’ to ‘<obj>’ in MATCHING clauses, thus, no
56        longer shadowing attributes called “name”.
57      - Added support for arithmetic expressions in places that used simple
58        data values before. Arithmetic expressions support addition,
59        subtraction, multiplication, division, modulo, and concatenation
60        operations. The expressions may be based on constant values or
61        queryable fields of the stored objects (specified as ‘:last_update’,
62        ‘:age’, ‘:interval’, and ‘:backend’).
63      - Added ‘FILTER’ support to ‘LOOKUP’ queries. Filters are conditional
64        expressions which may optionally be used to limit the query and the
65        result to object (of any type) matching the filter condition.
66      - Added support to specify date and time values.
67    * utils:
68      - avltree: Added an AVL tree (self-balancing binary tree) implementation.
69    * documentation: Added documentation for the new query language features.
70    * testing: Run all unit tests through valgrind by default (if available).
72   Backends:
73    * collectd::unixsock:
74      - Added support for spaces in identifiers.
75      - Store plugin identifier (host, plugin, plugin_instance, type,
76        type_instance) as service attributes.
78 Version 0.2.0, Release Date: 2014-07-01
79 ---------------------------------------
81   This is another development snapshot of SysDB. The main focus of this
82   release is on stabilizing existing features and extending the query
83   infrastructure to support all attribute types and further operators.
85    * build system: Fixed linking of sysdbd to include *all* necessary object
86      files. This bug caused some plugins to be un-loadable.
87    * sysdbd: Fixed shutdown process in case of errors.
88    * sysdb: Fixed a bug causing some server replies to be ignored when exiting
89      from the client.
90    * core:
91      - Always log to the standard output stream if no user-provided logging
92        callbacks had been specified. Previously this was disabled after
93        enabling logging to clients in the frontend.
94      - Simplified plugin naming information and determine configuration
95        callback names automatically to ensure better consistency.
96    * store:
97      - Simplified internal data management.
98      - Store the list of backends along with each stored object which provide
99        the respective object.
100    * frontend:
101      - Simplified and improved the internal architecture matching / looking up
102        objects.
103      - Fixed parser to correctly reject invalid object types.
104      - Automatically create the base directory of a listening UNIX socket.
105    * query language: Added support for numeric constants and added operators
106      for less and greater than or equal attribute comparison.
107    * documentation: Added missing files to the distribution tarball.
109   Plugins:
110    * syslog: Don't log debug messages to syslog.
112 Version 0.1.0, Release Date: 2014-06-01
113 ---------------------------------------
115   This is the initial release of SysDB. It provides the following core
116   features:
118    * sysdb: A terminal-based, interactive client program. Supports
119      line-editing and history based on libreadline or libedit and uses an
120      asynchronous, event-driven architecture to handle user input and server
121      replies simultaneously.
122    * sysdbd: The database backend service configurable through a configuration
123      file. The daemon supports online reconfiguration.
124    * core: Flexible, multi-threaded core architecture providing a configurable
125      plugin infrastructure for querying external data-sources and extending
126      core functionality. The following plugin types are supported:
127      - data collection
128      - hostname canonicalization
129      - logging
130    * store: Central, in-memory object store managing host and service objects
131      and their attributes. Host names may be canonicalized through respective
132      plugins. Each object is automatically attributed with last update and
133      interval information using nano-seconds resolution. Attributes may have
134      various types (integer, decimal, string, date-time, binary).
135    * frontend: The frontend handling client connections uses a multi-threaded,
136      asynchronous, event-driven architecture capable of handling multiple
137      listen addresses.
138    * query language: The store may be queried using the ‘LIST’, ‘LOOKUP’, and
139      ‘FETCH’ commands returning JSON formatted objects.
140    * utils: A rich set of abstract data-types and utility functions for
141      internal use:
142      - generic channels for asynchronous, multi-threaded I/O
143      - DBI wrapper to ease common database access operations
144      - thread-aware error handling and reporting
145      - doubly linked-lists
146      - dynamic sized memory buffers supporting formatted strings and binary
147        data
148      - UNIX socket client implementation
149    * documentation: Full documentation for the tools, all plugins, and the
150      query language provided as manpages and HTML pages.
151    * testing: Unit and integration tests exist for most parts except plugins
152      covering 77% of all functions. Valgrind and Clang's address sanitzer are
153      used to detect memory leaks and programming errors.
155   The following plugins are shipped with this version of SysDB:
157   Backends:
158    * collectd::unixsock: Query collectd through its ‘unixsock’ interface
159    * mk-livestatus: Query arbitrary (monitoring) systems using the Check_MK
160      Livestatus interface.
161    * puppet::store-configs: Query Puppet through its “stored configuration”
162      database.
164   Plugins:
165    * cname::dns: Canonicalize hostnames by querying DNS information.
166    * syslog: Send log messages to the system log service.