Documentation for Confluence 5.8 (Server).
Documentation for Confluence Cloud and earlier versions of Confluence is available too.

Skip to end of metadata
Go to start of metadata

This document provides a diagram of the Confluence schema and a conceptual overview of the data model.

Notes:

  • The Hibernate mapping files are the authoritative reference for the Confluence data model. These are the *.hbm.xml files which you will find in the main Confluence JAR file (<CONFLUENCE-INSTALLATION>\confluence\WEB-INF\lib\confluence-5.1.1.jar).
  • The tables, columns and other attributes are likely to change with each major release of Confluence. To find the exact DDL of your Confluence site, please run a query after installation.

On this page:

Database diagrams

Detailed diagrams

The following SVG images (Scalable Vector Graphics) include all the tables in the Confluence database. Click the links below to open the images in your browser, or download the SVG files for later use. You can use the browser's zoom (Ctrl++ or Cmd++) to see more detail in the diagrams:

Overview diagram

This image shows the core tables. Note that the image is very large. You may need to download it (right-click on the image) and view it in an image viewer. Alternatively, use the SVG images linked in the previous section.

 Click here to show/hide the image...

Database tables and references

Expand the link below to see a table of the primary and foreign keys for each table.

 Click here to show/hide the table...
Primary key table namePrimary key column nameForeign key table nameForeign key column nameForeign key namePrimary key name
AO_9412A1_AOUSERIDAO_9412A1_USER_APP_LINKUSER_IDfk_ao_9412a1_user_app_link_user_idAO_9412A1_AOUSER_pkey
attachmentsattachmentidattachmentdataattachmentidfk9dc3e34d34a4917eattachments_pkey
attachmentsattachmentidattachmentsprevverfk54475f9017d4a070attachments_pkey
attachmentsattachmentidcontent_labelattachmentidfkf0e7436e34a4917eattachments_pkey
attachmentsattachmentidimagedetailsattachmentidfka768048734a4917eattachments_pkey
contentcontentidattachmentspageidfk54475f908c38fbeacontent_pkey
contentcontentidbodycontentcontentidfka898d4778dd41734content_pkey
contentcontentidconfancestorsancestoridfk9494e23c37e35a2econtent_pkey
contentcontentidconfancestorsdescendentidfk9494e23cc45e94dccontent_pkey
contentcontentidcontentprevverfk6382c05917d4a070content_pkey
contentcontentidcontentparentidfk6382c05974b18345content_pkey
contentcontentidcontentparentcommentidfk6382c059b97e9230content_pkey
contentcontentidcontentpageidfk6382c0598c38fbeacontent_pkey
contentcontentidcontent_labelcontentidfkf0e7436e8dd41734content_pkey
contentcontentidcontent_perm_setcontent_idfkbf45a7992caf22c1content_pkey
contentcontentidcontentpropertiescontentidfk984c5e4c8dd41734content_pkey
contentcontentidextrnlnkscontentidfk97c10fe78dd41734content_pkey
contentcontentidlikescontentidfk4514b9c8dd41734content_pkey
contentcontentidlinkscontentidfk45157998dd41734content_pkey
contentcontentidnotificationspageidfk594acc88c38fbeacontent_pkey
contentcontentidspaceshomepagefk9228242d11b7bfeecontent_pkey
contentcontentidspacesspacedescidfk9228242d2c72d3d2content_pkey
contentcontentidtrackbacklinkscontentidfkf6977a478dd41734content_pkey
content_perm_setidcontent_permcps_idfkbd74b31676e33274content_perm_set_pkey
cwd_app_dir_mappingidcwd_app_dir_group_mappingapp_dir_mapping_idfk_app_dir_group_mappingcwd_app_dir_mapping_pkey
cwd_app_dir_mappingidcwd_app_dir_operationapp_dir_mapping_idfk_app_dir_mappingcwd_app_dir_mapping_pkey
cwd_applicationidcwd_app_dir_group_mappingapplication_idfk_app_dir_group_appcwd_application_pkey
cwd_applicationidcwd_app_dir_mappingapplication_idfk52050e2fb347aa6acwd_application_pkey
cwd_applicationidcwd_application_addressapplication_idfk_application_addresscwd_application_pkey
cwd_applicationidcwd_application_attributeapplication_idfk_application_attributecwd_application_pkey
cwd_directoryidcwd_app_dir_group_mappingdirectory_idfk_app_dir_group_dircwd_directory_pkey
cwd_directoryidcwd_app_dir_mappingdirectory_idfk_app_dir_dircwd_directory_pkey
cwd_directoryidcwd_directory_attributedirectory_idfk_directory_attributecwd_directory_pkey
cwd_directoryidcwd_directory_operationdirectory_idfk_directory_operationcwd_directory_pkey
cwd_directoryidcwd_groupdirectory_idfk_directory_idcwd_directory_pkey
cwd_directoryidcwd_group_attributedirectory_idfk_group_attr_dir_idcwd_directory_pkey
cwd_directoryidcwd_userdirectory_idfk_user_dir_idcwd_directory_pkey
cwd_directoryidcwd_user_attributedirectory_idfk_user_attr_dir_idcwd_directory_pkey
cwd_groupidcwd_group_attributegroup_idfk_group_attr_id_group_idcwd_group_pkey
cwd_groupidcwd_membershipparent_idfk_parent_grpcwd_group_pkey
cwd_groupidcwd_membershipchild_group_idfk_child_grpcwd_group_pkey
cwd_useridcwd_membershipchild_user_idfk_child_usercwd_user_pkey
cwd_useridcwd_user_attributeuser_idfk_user_attribute_id_user_idcwd_user_pkey
cwd_useridcwd_user_credential_recorduser_idfk76f874f73aee0fcwd_user_pkey
external_entitiesidexternal_membersextentityidfkd8c8d8a5f25e5d5fexternal_entities_pkey
groupsidexternal_membersgroupidfkd8c8d8a5117d5fdagroups_pkey
groupsidlocal_membersgroupidfk6b8fb445117d5fdagroups_pkey
keystorekeyidtrustedapppublic_key_idfkddb119ca9c85adb1keystore_pkey
labellabelidcontent_labellabelidfkf0e7436e27072aeflabel_pkey
os_groupidos_user_groupgroup_idfk932472461e2e76dbos_group_pkey
os_useridos_user_groupuser_idfk93247246f73aee0fos_user_pkey
pagetemplatestemplateidcontent_labelpagetemplateidfkf0e7436ed32042e4pagetemplates_pkey
pagetemplatestemplateidpagetemplatesprevverfkbc7ce96a17d4a070pagetemplates_pkey
spacegroupsspacegroupidspacegrouppermissionsspacegroupidfk487d958b16994414spacegroups_pkey
spacegroupsspacegroupidspacesspacegroupidfk9228242d16994414spacegroups_pkey
spacesspaceidcontentspaceidfk6382c059b2dc6081spaces_pkey
spacesspaceidnotificationsspaceidfk594acc8b2dc6081spaces_pkey
spacesspaceidpagetemplatesspaceidfkbc7ce96ab2dc6081spaces_pkey
spacesspaceidspacepermissionsspaceidfkd33f23beb2dc6081spaces_pkey
trustedapptrustedappidtrustedapprestrictiontrustedappidfke8496ba235d1d865trustedapp_pkey
usersidlocal_membersuseridfk6b8fb445ce2b3226users_pkey

The following sections describe the principal tables involved in each logical area of Confluence – authentication, content, system information, and so on.

Authentication

This section describes the tables involved in user authentication, which is implemented via the Atlassian Crowd framework embedded in Confluence.

TableDescription
cwd_userInformation for each user in Confluence.
cwd_groupThe groups to which users can belong.
cwd_membershipMapping the membership of users to groups.

cwd_directory

The user directories in your Confluence site. Examples of directories are the Confluence internal directory, or an LDAP directory.
cwd_applicationThe applications (JIRA, Confluence, and so on) defined in the authentication framework.

Content

This section describes the tables involved in storing content. Content is the information that Confluence users are storing and sharing.

TableDescription
attachmentdataThe binary data for attached files. This table is only used when Confluence is configured to store attachments in the database. Otherwise, attachments are stored in the local file system.

attachments

Metadata for the files attached to Confluence pages.
bodycontentThe content of Confluence pages. No version information or other metadata is stored here. That is all in the content table.
contentA persistence table for the ContentEntityObject class of objects. The subclass is indicated by the contenttype column.
content_labelArbitrary text labels for content.
labelThe other half of the content_label system.

content_perm

Content-level permissions objects.
content_perm_setA one-to-many mapping for content items and their permissions, with added metadata.
pagetemplatesThe back end of the templates feature.
likesThe pages and other content liked by a particular user.
follow_connectionsA mapping of users who are following other users.

Clustering

The following table contains information about clustered Confluence sites.

TableDescription

clustersafety

Normally, this table only contains one row. The value of the safetynumber is what Confluence uses to find out whether another Confluence site is sharing its database without being part of the cluster.

System information

These tables store data related to the status and configuration of the Confluence site.

TableDescription

confversion

Used by the upgrade system to determine what to expect from the database, so as to negotiate upgrades.
plugindataA record of the plugins that have been installed, and when.
data is a blob of the actual plugin JAR file. This is principally cluster-related.

Spaces

This table is related to the management of spaces.

TableDescription

spaces

Information about the spaces themselves: key, human-friendly name and numeric ID.

Appearance

The following table contains information about the look and feel of your Confluence site.

TableDescription

decorator

The custom display templates used to customise Velocity layouts.

Miscellaneous

This section includes other tables worth commenting on.

TableDescription

os_propertyentry

Arbitrary association of entities and properties.
bandanaA catch-all persistence layer. This table contains things like user settings and space- and global-level configuration data, and is used as storage by plugins such as the Dynamic Task List plugin. Essentially, for storing arbitrary data that doesn't fit anywhere else.
extrnlnksReferral links.
hibernate_unique_key

Used by the high/low ID generator – the subsystem which generates our primary keys.

If you interfere with this table, you may not be able to create objects in Confluence.

indexqueueentriesManages full-content indexing across the system. The table generally contains the last 12 hours (approximately) of updates, to allow re-syncing of cluster nodes after restarts.
keystoreUsed by the trusted apps framework to store the server's private key, and other servers' public keys.
linksTracks links within the server (that is, across and within spaces).
notificationsStores page- and space-level watches.
trackbacklinksTrackback links.
confancestorsUsed to speed up permissions checks, by allowing quick lookup of all a page's ancestors.

19 Comments

  1. I think that there should be an index on the confancestors.ancestorid column.

    The current design is susceptible to performance problems when records are deleted from the content table.

    Tom Kyte (from Oracle) describes this issue in detail on his blog:

    http://tkyte.blogspot.com/2009/10/httpasktomoraclecomtkyteunindex.html

    1. We just ran into this exact problem a couple weeks ago.  Delete from content table caused a table lock, which turned into lots of blocking.  Our DBA opened a case with Oracle and came to this exact same conclusion that we need an index on the confancestors.ancestorid column.  I am interested in Atlassian's take on this and if they have any information on this.

      1. Fixed in 5.3 –  CONF-22598 - The confancestors table should have an index for lookups by ancestorid Resolved

        But  CONF-24378 - Allow indexing for BODYCONTENT, BODYTYPEID to improve performance Resolved  and especially  CONF-21909 - Deadlocks in Oracle 11G due to missing indexes Resolved  are still not fixed

  2. Hi,

    The table SPACEGROUPPERMISSIONS is missing in the above diagram.
    I have it in my versions 2.8.10 (and empty) and I am not sure if it still applies in 3.X but if this is the case then thanks to add it.
    More generally if some tables are created/updated/deleted a post it on the diagram could specify the table, the version and the type of event.

    Just upgraded to 3.4 and some new tables are here.
    I have also noticed some new indexes but no new columns but I can be wrong.
    The new tables are:

    • IMAGEDETAILS
    • FOLLOW_CONNECTIONS
    • REMEMBERMETOKEN

    Thanks to update the diagram

    Cheers

    Olivier

    1. Anonymous

      We upgraded from 3.1.0 to 3.4.9 but I can't see the REMEMBERMETOKEN table in the database. We use ldap integration for password authentication.

      1. Using LDAP too. If you search for "remember" or remembermetoken in the online doc you will find some references.
        The table seems used for seraph (?) which should explain why our table is (present but) empty.

  3. Anonymous

    Hi,

    We are using Active directory for user management, so the external_entities table contains companyid in the name field. How to get the user name from Active directory using Ldap.Using Beanscript we can get the Ldap user details but it will be good if we get the username from Ldap using SQL Plugin. 

    Is it possible to get the username, email id from Active directory using SQL Plugin from Confluence?

    Could anyone comment on this?

    Thanks

    Prabhu

  4. Is there XML schema file, that could be used for validating space export XML?

    Can this be made public?

    1. Hallo Stanislav

      Unfortunately, there's no schema for the space export XML.

      Cheers, Sarah

  5. Hi,

    Could we get this updated to reflect the big schema changes in Confluence 3.5?  Alternatively, could you give some detail on where to find the Hibernate mapping files in the jar and how to analyse them?

    many thanks.

  6. Hi,

    I agree with Helen: It would be very nice if the data model graph would reflect the current version of the data model. Not the one that was used more than six months ago...

     

    Thanks for updating!

    Michael

    1. Anonymous

      I agree with Michael Rieger and Helen Newnham an update would be really appreciated

      1. Hallo all

        I've updated the data model to reflect the current database design. Sorry about the delay!

        Cheers, Sarah

  7. Anonymous

    I cannot read the database diagram at the top of this page because the font is so small. We need a diagram that can be expanded to a much larger size.

    1. Hallo there

      I've added a couple of SVG diagrams, which you can expand using the browser's zoom.

      Cheers, Sarah

  8. Anonymous

    Would login information, including date/time, be stored anywhere here?  I've searched the database columns and it's not obvious.

  9. How can we add a database table/Use a new custom database table from custom plugin.

    We are developing a plugin which requires a table and do some insertions and updations from xwork action class. How can we do that?

     

  10. This schema does not make mention of the user_mapping table which is required to get useful statistical information out of tables like notifications or content (which was added in 5.1 or 5.2). Including the latest database model would be very useful.

  11. I need to run a report when a user is deleted in Confluence Wiki for our Auditors.  Is there user_deleted or user_retired or user_archived field in one of the tables?  I looked at this url and did not find anything: file:///C:/Users/jpmackl/Downloads/ConfluenceTables-AllColumns.svg

    If there is not a field indicating when a user was deleted, purged or archived from the Confluence Wiki database, can this be added?

    It's seems like auditors want this kind of stuff all the time now.   Thank you!