Article

Recently I set about writing a replacement for ExtendedAttributes in Telligent Community. For those of you that haven’t come across these before, they are a simple set of key/value pairs that can be saved against certain entities in the platform such as groups, forums, threads & blogs. Although they are very useful for saving pieces of metadata, they have some limitations.

  • Not all entities support them (e.g. wiki applications, wiki posts, users, comments).
  • Adding a large amount of data or lots of values can cause performance issues due to serialization as they are loaded each time the entity is loaded.
  • Lookups based on ExtendedAttributes are not possible as they are not exposed via API queries.

Recently I’ve been running into the above issues more and more, and when that happens and you need to store custom data, you are faced with building custom tables, data access code, caching and writing/exposing API’s. This project aims to solve those issues and provide a common interface on top of any platform entity that implements IContent.

Although some scenarios may still call for custom tables, indexes, and logic to index and search based on the custom data, developers can benefit from this simple approach to storing custom data. Some examples of we might use ExtendedAttributes and these will make a good replacement are:

  • Data used for external analytics e.g. a forum may require an ID issued for Google Analytics or Omniture.
  • User data describing their current state e.g. subscription state, subscription expiration date.

Telligent ContentMetdata is a project that is hosted on GitHub and is published to NuGet so allow developers to quickly and easily leverage custom metadata in their projects. The library contains a full In-Process API, Widget API and RESTful API, allowing access to operations such as list, show, update and delete. This makes is very quick and easy to add metadata.

As the project is open source, please feel free to fork the project and create pull requests with improvements and fixes. I have a backlog of items I’d like to add such as:

  • Ability to index metadata to allow it to be found using search/solr with no additional coding/logic.
  • A security model around adding/editing/viewing metadata. Note: Currently there is no security around metadata so private data should not be saved here.
  • A UI to allow you to view/edit metadata for any given content in the platform.
  • Ability to export metadata.
  • Extend API to allow finding of IContent entities based on metadata query.

You can find the project on GitHub at https://github.com/RichMercer/ContentMetadata

Warning! Please don’t store any secure information using the approach. As there is no security around these fields right now, this should only be used for metadata that can be seen by anyone that can view the content.

1 Comment

  • […] ContentMetadata – An ExtendedAttribute Alternative […]

Leave a Reply