Difference between revisions of "Projects/PIM/Akonadi/Database"

< Projects‎ | PIM‎ | Akonadi
Jump to: navigation, search
(Start Akonadi database internals documentation.)
 
(Document database backend operation modes.)
Line 13: Line 13:
  
 
== Backends ==
 
== Backends ==
 +
 +
Akonadi can use different SQL backends. The following documents backend-specific details.
 +
 +
In general, backend specific configuration and setup code can be found in server/src/storage/dbconfig*.
 +
 +
There are three possible operation modes for backends, most only support a subset:
 +
* Embedded: No server process, database is completely integrated into the Akonadi process
 +
* Internal server: Akonadi manages the database server process itself, taking care of starting/stopping and configuring it.
 +
* External server: Akonadi connects to an already running database server.
  
 
=== MySQL ===
 
=== MySQL ===
  
 
Status: working, default backend for desktop systems
 
Status: working, default backend for desktop systems
 +
 +
Supported modes: Internal, External
  
 
TODO
 
TODO
Line 23: Line 34:
  
 
Status: working with limitations, default backend for mobile systems
 
Status: working with limitations, default backend for mobile systems
 +
 +
Supported modes: Embedded
  
 
TODO
 
TODO
Line 29: Line 42:
  
 
Status: unknown
 
Status: unknown
 +
 +
Supported modes: Internal, External
  
 
TODO
 
TODO
Line 35: Line 50:
  
 
Status: not working
 
Status: not working
 +
 +
Supported modes: External
  
 
Proof-of-concept work was done during Akademy 2010, up to the point where the database could be created successfully. Known issues:
 
Proof-of-concept work was done during Akademy 2010, up to the point where the database could be created successfully. Known issues:
Line 46: Line 63:
  
 
Status: not working
 
Status: not working
 +
 +
Supported modes: Embedded
  
 
Development stopped, MySQL/Embedded does not support transactions.
 
Development stopped, MySQL/Embedded does not support transactions.

Revision as of 15:16, 16 April 2011

Contents

Akonadi Server Database Internals

This page contains information about how the Akonadi server uses its internal SQL database. This is purely for Akonadi server developers, you are NOT supposed to use the database yourself, by-passing Akonadi!

Database Schema

  • Visualization
  • Code is in server/src/storage
    • akonadidb.xml contains the schema in an XML format
    • dbinitializer* contains the code to create tables out of that
    • updatedb.xml contains schema update instructions
    • dbupdater.* executes those

Backends

Akonadi can use different SQL backends. The following documents backend-specific details.

In general, backend specific configuration and setup code can be found in server/src/storage/dbconfig*.

There are three possible operation modes for backends, most only support a subset:

  • Embedded: No server process, database is completely integrated into the Akonadi process
  • Internal server: Akonadi manages the database server process itself, taking care of starting/stopping and configuring it.
  • External server: Akonadi connects to an already running database server.

MySQL

Status: working, default backend for desktop systems

Supported modes: Internal, External

TODO

Sqlite

Status: working with limitations, default backend for mobile systems

Supported modes: Embedded

TODO

PostgreSQL

Status: unknown

Supported modes: Internal, External

TODO

Virtuoso

Status: not working

Supported modes: External

Proof-of-concept work was done during Akademy 2010, up to the point where the database could be created successfully. Known issues:

  • Some column names used by Akonadi are Virtuoso keywords
  • Some of the first INSERT query fails with a signed vs. unsigned int mismatch/overflow.

Completion of Virtuoso support is considered non-trivial and probably requires a lot of work on the Akonadi side, the SQL dialect is too different from what we support so far.

MySQL/Embedded

Status: not working

Supported modes: Embedded

Development stopped, MySQL/Embedded does not support transactions.


Tools

Generic

akonadiconsole has support for browsing the database and run arbitrary SQL queries. See Development/Tutorials/Akonadi/Application.

MySQL

There are convenience scripts for running mysqld in the configuration used by Akonadi as well as (and probably more useful) running the MySQL command line client connected to the Akonadi database. See server/src/storage/akonadi-mysql-[client|server].sh.


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal