- Added by Michael Seager, last edited by Matt Hodges [Atlassian] on Jul 22, 2008 (view change)
|
Confluence Evaluator Resources |
Supported and Compatible J2EE Application ServersConfluence supports the following application servers, provided they are running on a Windows, Unix (NetBSD, FreeBSD, OpenBSD, Solarix, Linux), Mac OS X on X86 or X86-64 processors.
Please see configuration guides for supported application servers. If you have no preference, we recommend using Confluence Standalone which includes Apache Tomcat. Unsupported J2EE Application ServersFor Confluence 2.10 and later, the following application servers are no longer supported:
Potentially Compatible Application Servers
J2EE Application Servers:
Non J2EE Application Servers: Refer to the Supported Platforms FAQ. Known Incompatible J2EE Application Servers
RELATED TOPICS:
Here's a quick overview of some of the services defined in Confluence (for more details of what a service is, see the High Level Architecture Overview). Current ServicesDatabase ServiceThis service is defined in databaseSubsystemContext.xml and productionDatabaseContext.xml. It provides database connectivity and Hibernate ORM to the application. The reason for splitting the service into two files is to allow for easier testing. productionDatabaseContext.xml extracts the database configuration from the bootstrap configuration, and brings up Confluence with the Tangosol Coherence clustered cache. If you substitute that one file with testDatabaseContext.xml you will instead get a pre-configured in-memory HSQL database and in-memory caching. Because configuring Hibernate dynamically is non-trivial, the database service is unavoidably dependent on every class we want to persist via Hibernate. You can see this in the list of .hbm.xml files loaded in databaseSubsystemContext.xml. Bandana ServiceProvides a generic configuration/preferences storing service using XStream to serialize POJO configuration objects to XML. Confluence's bandana service persists to the database. Cache ServiceProvides centralised caching services backed by Tangosol Coherence, and a transactional cache service. Defined in cacheServiceContext.xml. In integration tests, you might want to substitute testCacheServiceContext.xml which provides a basic in-memory cache without the overhead of Coherence. Event ServiceProvides a simple service for producing and consuming events. Defined in eventServiceContext.xml. Confluence's event service is cluster-aware, distinguishing between events that are limited to a single node of the cluster, and events that must be broadcast to every node. Plugin ServiceProvides the Atlassian plugin framework, in pluginServiceContext.xml. Confluence's plugin service is customised to deal with bundled plugins (plugins that are provided with the application but that may be upgraded by the end user), and to behave mostly sanely in a cluster. The plugin system hasn't been entirely service-ised yet, as all the different plugin module loaders result in dependencies back to whatever subsystem they're being plugged into. Task Queue ServiceA central manager for queues in Confluence. I'm not entirely sure this should exist as it currently adds no value whatsoever beyond being a lookup mechanism, which Spring does already. Not ServicesThings that should be services, but aren't. Quartz SchedulingPretty obvious next candidate for servicization, but possibly tricky because the Spring/Quartz integration might not be very friendly. Backup/RestoreSomething to keep in mind if we clean up the backup/restore code User ManagementI wasn't going to mess with user-management while there was a different atlassian-user task in the release pipeline. Wiki RenderingThis seems like a reasonably trivial candidate to convert to a service. There's only one dependency on non-service code (the image renderer depends on the attachment manager). Mail (sending and receiving)The sending and receiving of email is currently a mess of singleton configurations, clients sticking mail jobs directly on the queue, and very little going through Spring at all. This should be fixed. External Network AccessIt would be nice to have Confluence provide a service for accessing the outside world so we can throttle number of connections, provide central configuration of time-outs and authentication, and so on. Image ManipulationRight now we have a thumbnail manager that lives with attachments, but it would be nice to make this more generic, and at least support multiple thumbnail sizes.
You have the option of running Confluence in a clustered environment instead of on a single server. The clustered configuration improves performance for organisations that demand higher availability or have a large number of concurrent users.
|
- Hibernate - database persistence, difficult to extend.
- Bandana - XML persistence, easy to use in plugins. Stored in database in Confluence 2.3+, or in Confluence home directory in 2.2.x and earlier.
- Content properties - database persistence for properties associated with a piece of Confluence content.
Because Bandana is the primary persistence API used by plugin developers, it will be covered in more detail below.
Hibernate
Confluence uses the open source persistence framework Hibernate. Confluence 2.2.x uses Hibernate version 2.1.8.
Each object to be persisted has a *.hbm.xml file which sits in the same directory as the associated class in the Confluence web application. For example, Label.class has an associated Label.hbm.xml which describes how label objects will be persisted. The particular details vary from class to class, but typically include:
- the database table used to hold the data (Confluence bootstrap creates these tables if they do not exist)
- the column names and mappings to class attributes
- any special queries used for functionality in Confluence (for example, to retrieve a list of personal labels)
All this data is expressed in the standard Hibernate mapping format. In some cases, there is a single mapping file for all subclasses of a particular class. For example, ContentEntityObject.hbm.xml includes mappings for pages, news, mail and space descriptions.
The Hibernate mapping files are listed in mappingResources bean in applicationContext.xml.
Although it might be possible to extend Confluence's database through Hibernate, this is not recommended. There are a few downfalls with extending our Hibernate configuration:
- You need to maintain your forked copy of the hibernate mappings file against each new version of Confluence
- Your new hibernate objects will not be protected from (or necessarily upgraded to) any changes we make in the schema in future versions
- Unless you really understand our code, something weird will happen.
Avoid using Confluence's database to store custom data – use content properties or Bandana instead.
Bandana
Bandana is an Atlassian framework for persistence which uses XStream to convert arbitrary Java objects into XML for storage. The concepts used in Bandana are very simple:
- Bandana stores data in contexts. In Confluence, there is one global context, and one context per space. The relevant class is ConfluenceBandanaContext.
- Each context stores key-value pairs. The key is a String and the value can be any Object (it should typically implement Serializable).

If you are defining your own type within a plugin, please provide a no argument constructor to avoid class loading issues
Based on this design, the BandanaManager has methods for storing and retrieving values from a context by key:
- void setValue(BandanaContext context, String key, Object value) - store a value against a key in the Bandana context.
- Object getValue(BandanaContext context, String key) - get a key's value from the Bandana context. Returns null if no matching context and key exists.
- Object getValue(BandanaContext context, String key, boolean lookUp) - same as above, except if lookUp is true and the context is a space context, this method will also check the global context if no matching key is found in the space context.
For plugins, it is recommended to use a key for your Bandana values that includes the full package name of your plugin. For example, a theme plugin might use a key like org.acme.confluence.mytheme.importantPreference.
Prior to Confluence 2.3, this XML was written to the filesystem in the Confluence home directory. The file config/confluence-global.bandana.xml stores the global context, and there is a file config/spaceKey/confluence-space.bandana.xml with the configuration for each space. In Confluence 2.3 and above, Bandana data is written to the BANDANA table in the database, with three columns for context, key and an XML-serialized value.
To get access to the BandanaManager from your plugin code, normally you only need to include a private BandanaManager field with an associated setter method. Spring will automatically call the setter method before the first time your plugin is called.
public class MyMacro extends BaseMacro { private BandanaManager bandanaManager; // setter called by Spring public void setBandanaManager(BandanaManager bandanaManager) { this.bandanaManager = bandanaManager; } // main method of macro public String execute(...) { // do stuff with bandanaManager return "..."; } }
Content properties
Another form of persistence, content properties are key-value pairs associated with a ContentEntityObject and stored in the database.
| The Hibernate mapping files are the authoritative reference. These are the *.hbm.xml files which have been bundled into the main Confluence .jar file in recent releases. |
This document is little more than the Confluence schema with added comments, but the priority was placed on making the information available.
General Database Diagram
Authentication
Atlassian-user
This is the "new" authentication system, which is more flexible and extensible than OpenSymphony.
Table "groups"
Column | Type | Modifiers
-----------+------------------------+-----------
id | bigint | not null
groupname | character varying(255) | not null
Indexes:
"groups_pkey" PRIMARY KEY, btree (id)
Table "users"
Column | Type | Modifiers
----------+-----------------------------+-----------
id | bigint | not null
name | character varying(255) | not null
password | character varying(255) |
email | character varying(255) |
created | timestamp without time zone |
fullname | character varying(255) |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"users_name_key" UNIQUE, btree (name)
local_members: establishes many-to-many association between users and groups.
Table "local_members"
Column | Type | Modifiers
---------+--------+-----------
userid | bigint | not null
groupid | bigint | not null
Indexes:
"local_members_pkey" PRIMARY KEY, btree (groupid, userid)
Foreign-key constraints:
"fk6b8fb445117d5fda" FOREIGN KEY (groupid) REFERENCES groups(id)
"fk6b8fb445ce2b3226" FOREIGN KEY (userid) REFERENCES users(id)
external_entities: Maps users from LDAP (or any other external authentication system) to IDs in Confluence DB
Table "external_entities"
Column | Type | Modifiers
--------+------------------------+-----------
id | bigint | not null
name | character varying(255) |
type | character varying(255) | not null
Indexes:
"external_entities_pkey" PRIMARY KEY, btree (id)
external_members: associates LDAP (or other external) users with local groups.
Table "external_members"
Column | Type | Modifiers
-------------+--------+-----------
extentityid | bigint | not null
groupid | bigint | not null
Indexes:
"external_members_pkey" PRIMARY KEY, btree (groupid, extentityid)
Foreign-key constraints:
"fkd8c8d8a5117d5fda" FOREIGN KEY (groupid) REFERENCES groups(id)
"fkd8c8d8a5f25e5d5f" FOREIGN KEY (extentityid) REFERENCES external_entities(id)
OpenSymphony
The "old" authentication system, which was the default prior to 2.7.
Table "os_group"
Column | Type | Modifiers
-----------+------------------------+-----------
id | bigint | not null
groupname | character varying(255) | not null
Indexes:
"os_group_pkey" PRIMARY KEY, btree (id)
"os_group_groupname_key" UNIQUE, btree (groupname)
Table "os_user"
Column | Type | Modifiers
----------+------------------------+-----------
id | bigint | not null
username | character varying(255) | not null
passwd | character varying(255) |
Indexes:
"os_user_pkey" PRIMARY KEY, btree (id)
"os_user_username_key" UNIQUE, btree (username)
Table "os_user_group"
Column | Type | Modifiers
----------+--------+-----------
group_id | bigint | not null
user_id | bigint | not null
Indexes:
"os_user_group_pkey" PRIMARY KEY, btree (user_id, group_id)
Foreign-key constraints:
"fk932472461e2e76db" FOREIGN KEY (group_id) REFERENCES os_group(id)
"fk93247246f73aee0f" FOREIGN KEY (user_id) REFERENCES os_user(id)
Content
The actual information that users are storing and sharing.
attachmentdata: stores the binary data for attached files.
Only used when Confluence is configured to store attachments in the database; otherwise, attachments are stored in the local filesystem.
Table "attachmentdata"
Column | Type | Modifiers
------------------+---------+-----------
attachmentdataid | bigint | not null
attversion | integer | not null
data | bytea |
attachmentid | bigint |
Indexes:
"attachmentdata_pkey" PRIMARY KEY, btree (attachmentdataid)
"attch_data_idx" btree (attachmentid)
Foreign-key constraints:
"fk9dc3e34d34a4917e" FOREIGN KEY (attachmentid) REFERENCES attachments(attachmentid)
attachments: metadata for attachments.
Table "attachments"
Column | Type | Modifiers
--------------------+-----------------------------+-----------
attachmentid | bigint | not null
title | character varying(255) | not null
contenttype | character varying(255) | not null
pageid | bigint | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
filesize | bigint |
attachment_comment | character varying(255) |
attversion | integer |
prevver | bigint |
Indexes:
"attachments_pkey" PRIMARY KEY, btree (attachmentid)
"att_pageid_idx" btree (pageid)
"att_prevver_idx" btree (prevver)
Foreign-key constraints:
"fk54475f9017d4a070" FOREIGN KEY (prevver) REFERENCES attachments(attachmentid)
"fk54475f908c38fbea" FOREIGN KEY (pageid) REFERENCES content(contentid)
bodycontent: stores the actual content of Confluence pages. No versioning information or other metadata is stored here, though; that's all in the content table.
Table "bodycontent"
Column | Type | Modifiers
---------------+--------+-----------
bodycontentid | bigint | not null
body | text |
contentid | bigint |
Indexes:
"bodycontent_pkey" PRIMARY KEY, btree (bodycontentid)
"body_content_idx" btree (contentid)
Foreign-key constraints:
"fka898d4778dd41734" FOREIGN KEY (contentid) REFERENCES content(contentid)
content: a persistence table for the ContentEntityObject class of objects. The subclass is indicated by the contenttype column.
Table "content"
Column | Type | Modifiers
------------------+-----------------------------+-----------
contentid | bigint | not null
contenttype | character varying(255) | not null
title | character varying(255) |
version | integer |
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
versioncomment | text |
prevver | bigint |
content_status | character varying(255) |
spaceid | bigint |
parentid | bigint |
messageid | character varying(255) |
draftpageid | character varying(255) |
draftspacekey | character varying(255) |
drafttype | character varying(255) |
draftpageversion | integer |
pageid | bigint |
parentcommentid | bigint |
username | character varying(255) |
Indexes:
"content_pkey" PRIMARY KEY, btree (contentid)
"c_draftpageid_idx" btree (draftpageid)
"c_draftspacekey_idx" btree (draftspacekey)
"c_drafttype_idx" btree (drafttype)
"c_messageid_idx" btree (messageid)
"c_parentcommid_idx" btree (parentcommentid)
"c_parentid_idx" btree (parentid)
"c_prevver_idx" btree (prevver)
"c_spaceid_idx" btree (spaceid)
"c_title_idx" btree (title)
"c_username_idx" btree (username)
Foreign-key constraints:
"fk6382c05917d4a070" FOREIGN KEY (prevver) REFERENCES content(contentid)
"fk6382c05974b18345" FOREIGN KEY (parentid) REFERENCES content(contentid)
"fk6382c0598c38fbea" FOREIGN KEY (pageid) REFERENCES content(contentid)
"fk6382c059b2dc6081" FOREIGN KEY (spaceid) REFERENCES spaces(spaceid)
"fk6382c059b97e9230" FOREIGN KEY (parentcommentid) REFERENCES content(contentid)
content_label: Arbitrary text labels for content.
Table "content_label"
Column | Type | Modifiers
--------------+-----------------------------+-----------
id | bigint | not null
labelid | bigint | not null
contentid | bigint | not null
spacekey | character varying(255) |
owner | character varying(255) |
creationdate | timestamp without time zone |
lastmoddate | timestamp without time zone |
Indexes:
"content_label_pkey" PRIMARY KEY, btree (id)
"cl_contentid_idx" btree (contentid)
"cl_labelid_idx" btree (labelid)
"cl_lastmoddate_idx" btree (lastmoddate)
"cl_spacekey_idx" btree (spacekey)
Foreign-key constraints:
"fkf0e7436e27072aef" FOREIGN KEY (labelid) REFERENCES label(labelid)
"fkf0e7436e8dd41734" FOREIGN KEY (contentid) REFERENCES content(contentid)
label: the other half of the content_label system.
Table "label"
Column | Type | Modifiers
--------------+-----------------------------+-----------
labelid | bigint | not null
name | character varying(255) |
owner | character varying(255) |
namespace | character varying(255) |
creationdate | timestamp without time zone |
lastmoddate | timestamp without time zone |
Indexes:
"label_pkey" PRIMARY KEY, btree (labelid)
"l_name_idx" btree (name)
"l_namespace_idx" btree (namespace)
"l_owner_idx" btree ("owner")
content_perm: content-level permissions objects.
Table "content_perm"
Column | Type | Modifiers
--------------+-----------------------------+-----------
id | bigint | not null
cp_type | character varying(10) | not null
username | character varying(255) |
groupname | character varying(255) |
cps_id | bigint |
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"content_perm_pkey" PRIMARY KEY, btree (id)
"cp_gn_idx" btree (groupname)
"cp_os_idx" btree (cps_id)
"cp_un_idx" btree (username)
Foreign-key constraints:
"fkbd74b31676e33274" FOREIGN KEY (cps_id) REFERENCES content_perm_set(id)
content_perm_set: one-to-many mapping for content items and their permissions, with added metadata.
Table "content_perm_set"
Column | Type | Modifiers
----------------+-----------------------------+-----------
id | bigint | not null
cont_perm_type | character varying(10) | not null
content_id | bigint |
creationdate | timestamp without time zone |
lastmoddate | timestamp without time zone |
Indexes:
"content_perm_set_pkey" PRIMARY KEY, btree (id)
"cps_content_idx" btree (content_id)
Foreign-key constraints:
"fkbf45a7992caf22c1" FOREIGN KEY (content_id) REFERENCES content(contentid)
Clustering
clustersafety: normally, this table only contains one row. The value of the safetynumber is what Confluence uses to find out whether another instance is sharing its database without being part of the cluster.
Table "clustersafety"
Column | Type | Modifiers
-----------------+---------+-----------
clustersafetyid | bigint | not null
safetynumber | integer |
Indexes:
"clustersafety_pkey" PRIMARY KEY, btree (clustersafetyid)
System information
confversion used by the upgrade system to determine what to expect from the database, so as to negotiate upgrades.
Table "confversion"
Column | Type | Modifiers
---------------+-----------------------------+-----------
confversionid | bigint | not null
buildnumber | integer | not null
installdate | timestamp without time zone |
versiontag | character varying(255) |
creationdate | timestamp without time zone |
lastmoddate | timestamp without time zone |
Indexes:
"confversion_pkey" PRIMARY KEY, btree (confversionid)
"confversion_buildnumber_key" UNIQUE, btree (buildnumber)
plugindata: records which plugins have been installed, and when.
data is a blob of the actual plugin .jar file. This is principally cluster-related.
Table "plugindata"
Column | Type | Modifiers
--------------+-----------------------------+-----------
plugindataid | bigint | not null
pluginkey | character varying(255) | not null
filename | character varying(255) | not null
lastmoddate | timestamp without time zone |
data | bytea |
Indexes:
"plugindata_pkey" PRIMARY KEY, btree (plugindataid)
"plugindata_filename_key" UNIQUE, btree (filename)
"plugindata_pluginkey_key" UNIQUE, btree (pluginkey)
Spaces
spacegroups: this table is only used by the hosted environment.
Table "spacegroups"
Column | Type | Modifiers
----------------+-----------------------------+-----------
spacegroupid | bigint | not null
spacegroupname | character varying(255) |
spacegroupkey | character varying(255) | not null
licensekey | text |
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"spacegroups_pkey" PRIMARY KEY, btree (spacegroupid)
"spacegroups_spacegroupkey_key" UNIQUE, btree (spacegroupkey)
Table "spacepermissions"
Column | Type | Modifiers
---------------+-----------------------------+-----------
permid | bigint | not null
spaceid | bigint |
permtype | character varying(255) | not null
permgroupname | character varying(255) |
permusername | character varying(255) |
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"spacepermissions_pkey" PRIMARY KEY, btree (permid)
"sp_permtype_idx" btree (permtype)
"sp_pgname_idx" btree (permgroupname)
"sp_puname_idx" btree (permusername)
"sp_spaceid_idx" btree (spaceid)
Foreign-key constraints:
"fkd33f23beb2dc6081" FOREIGN KEY (spaceid) REFERENCES spaces(spaceid)
spaces: information about the spaces themselves: key, human-friendly name and numeric ID.
Table "spaces"
Column | Type | Modifiers
--------------+-----------------------------+-----------
spaceid | bigint | not null
spacename | character varying(255) |
spacekey | character varying(255) | not null
spacedescid | bigint |
homepage | bigint |
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
spacetype | character varying(255) |
spacegroupid | bigint |
Indexes:
"spaces_pkey" PRIMARY KEY, btree (spaceid)
"spaces_spacekey_key" UNIQUE, btree (spacekey)
"s_homepage_idx" btree (homepage)
"s_spacedescid_idx" btree (spacedescid)
"s_spacegroupid_idx" btree (spacegroupid)
Foreign-key constraints:
"fk9228242d11b7bfee" FOREIGN KEY (homepage) REFERENCES content(contentid)
"fk9228242d16994414" FOREIGN KEY (spacegroupid) REFERENCES spacegroups(spacegroupid)
"fk9228242d2c72d3d2" FOREIGN KEY (spacedescid) REFERENCES content(contentid)
Appearance
decorator: storage of custom display templates, for customising layouts.
Table "decorator"
Column | Type | Modifiers
---------------+-----------------------------+-----------
decoratorid | bigint | not null
spacekey | character varying(255) |
decoratorname | character varying(255) |
body | text |
lastmoddate | timestamp without time zone |
Indexes:
"decorator_pkey" PRIMARY KEY, btree (decoratorid)
"dec_key_idx" btree (spacekey)
"dec_name_idx" btree (decoratorname)
Miscellaneous
os_propertyentry: for arbitrary association of entities and properties.
Table "os_propertyentry"
Column | Type | Modifiers
-------------+-----------------------------+-----------
entity_name | character varying(125) | not null
entity_id | bigint | not null
entity_key | character varying(200) | not null
key_type | integer |
boolean_val | boolean |
double_val | double precision |
string_val | character varying(255) |
text_val | text |
long_val | bigint |
int_val | integer |
date_val | timestamp without time zone |
Indexes:
"os_propertyentry_pkey" PRIMARY KEY, btree (entity_name, entity_id, entity_key)
bandana: a catch-all persistence layer. It 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.
Table "bandana"
Column | Type | Modifiers
----------------+------------------------+-----------
bandanaid | bigint | not null
bandanacontext | character varying(255) |
bandanakey | character varying(100) |
bandanavalue | text |
Indexes:
"bandana_pkey" PRIMARY KEY, btree (bandanaid)
"band_context_idx" btree (bandanacontext)
"band_key_idx" btree (bandanakey)
extrnlnks: storage of referral links.
Table "extrnlnks"
Column | Type | Modifiers
--------------+-----------------------------+-----------
linkid | bigint | not null
contenttype | character varying(255) | not null
viewcount | integer | not null
url | character varying(255) | not null
contentid | bigint | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"extrnlnks_pkey" PRIMARY KEY, btree (linkid)
"el_contentid_idx" btree (contentid)
Foreign-key constraints:
"fk97c10fe78dd41734" FOREIGN KEY (contentid) REFERENCES content(contentid)
hibernate_unique_key: used by the high/low ID generator - the subsystem which generates our primary keys.
Mess with this at the cost of being able to create objects.
Table "hibernate_unique_key" Column | Type | Modifiers ---------+---------+----------- next_hi | integer |
indexqueueentries: arbitrates full-content indexing across the system.
This table generally contains the last 12 hours or so of updates, to allow re-syncing of cluster nodes after restarts.
Table "indexqueueentries"
Column | Type | Modifiers
--------------+-----------------------------+-----------
entryid | bigint | not null
creationdate | timestamp without time zone |
type | integer |
handle | character varying(255) |
Indexes:
"indexqueueentries_pkey" PRIMARY KEY, btree (entryid)
keystore: used by the trusted apps framework to store the server's private key, and other servers' public keys.
Table "keystore"
Column | Type | Modifiers
-----------+------------------------+-----------
keyid | bigint | not null
alias | character varying(255) | not null
type | character varying(32) | not null
algorithm | character varying(32) | not null
keyspec | text | not null
Indexes:
"keystore_pkey" PRIMARY KEY, btree (keyid)
links: tracks links within the server (i.e. across and within spaces).
Table "links"
Column | Type | Modifiers
---------------+-----------------------------+-----------
linkid | bigint | not null
destpagetitle | character varying(255) |
destspacekey | character varying(255) | not null
contentid | bigint | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"links_pkey" PRIMARY KEY, btree (linkid)
"l_contentid_idx" btree (contentid)
"l_destspacekey_idx" btree (destspacekey)
Foreign-key constraints:
"fk45157998dd41734" FOREIGN KEY (contentid) REFERENCES content(contentid)
notifications: storage of page- and space-level watches.
Table "notifications"
Column | Type | Modifiers
----------------+-----------------------------+-----------
notificationid | bigint | not null
pageid | bigint |
spaceid | bigint |
username | character varying(255) | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"notifications_pkey" PRIMARY KEY, btree (notificationid)
"n_pageid_idx" btree (pageid)
"n_spaceid_idx" btree (spaceid)
Foreign-key constraints:
"fk594acc88c38fbea" FOREIGN KEY (pageid) REFERENCES content(contentid)
"fk594acc8b2dc6081" FOREIGN KEY (spaceid) REFERENCES spaces(spaceid)
pagetemplates: acts as the back-end of the templates feature.
Table "pagetemplates"
Column | Type | Modifiers
--------------+-----------------------------+-----------
templateid | bigint | not null
templatename | character varying(255) | not null
templatedesc | character varying(255) |
labels | character varying(255) |
content | text |
spaceid | bigint |
prevver | bigint |
version | integer | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"pagetemplates_pkey" PRIMARY KEY, btree (templateid)
"pt_prevver_idx" btree (prevver)
"pt_spaceid_idx" btree (spaceid)
Foreign-key constraints:
"fkbc7ce96a17d4a070" FOREIGN KEY (prevver) REFERENCES pagetemplates(templateid)
"fkbc7ce96ab2dc6081" FOREIGN KEY (spaceid) REFERENCES spaces(spaceid)
Table "trackbacklinks"
Column | Type | Modifiers
--------------+-----------------------------+-----------
linkid | bigint | not null
contenttype | character varying(255) | not null
viewcount | integer | not null
url | character varying(255) | not null
title | character varying(255) |
blogname | character varying(255) |
excerpt | character varying(255) |
contentid | bigint | not null
creator | character varying(255) |
creationdate | timestamp without time zone |
lastmodifier | character varying(255) |
lastmoddate | timestamp without time zone |
Indexes:
"trackbacklinks_pkey" PRIMARY KEY, btree (linkid)
"tbl_contentid_idx" btree (contentid)
Foreign-key constraints:
"fkf6977a478dd41734" FOREIGN KEY (contentid) REFERENCES content(contentid)
confancestors: used to speed up permissions checks, by allowing quick lookup of all a page's ancestors.
Table "confancestors"
Column | Type | Modifiers
------------------+---------+-----------
descendentid | bigint | not null
ancestorid | bigint | not null
ancestorposition | integer | not null
Indexes:
"confancestors_pkey" PRIMARY KEY, btree (descendentid, ancestorposition)
Foreign-key constraints:
"fk9494e23c37e35a2e" FOREIGN KEY (ancestorid) REFERENCES content(contentid)
"fk9494e23cc45e94dc" FOREIGN KEY (descendentid) REFERENCES content(contentid)