Last Update Feature

This page has not been reviewed by our documentation team (more info).

Last Update database extension

This feature keeps track of when data in the database last changed. Changed, in this case could be any update to the database. It could be an edit that changes something important like the name or just the count of how many edits are open for this artist. This feature is designed to allow us to add the following features to MusicBrainz:

  • "Artist was last updated X days ago" display in the server.
  • RSS feeds for artists, albums and labels. You could subscribe to feeds of your artists and see changes being made to their data in MB.
  • HTTP caching, which would allow us to let Google index the site without costing us a lot of bandwidth.

Not all of these features will be implemented immediately. For the next release I foresee doing the first two items above.

Originally we had planned to have the update rules change other related data items. For instance, updating a release would also cause the artist and the label associated with the release to be updated. However, our database server buckled under the load to constantly update all of this information so we were forced to abandon this approach and not have any cascading updates happen.

The feature as it stands now only updates one data entity at a time. So, if a release is edited the artist nor its associated labels will be updated.

Database changes

For this feature we added new tables: artist_meta, label_meta. These tables only contain an id column (with a foreign key to the artist/label tables) and a lastupdate timestamp. For releases (albums in DB speak) we added the lastupdate column to the albummeta table. (I can't wait to get the naming in the DB normalized).

Update rules

If an artist is changed, artist is updated.

If a release is changed, release is updated.

If a label is changed, label is updated.

If release event is changed, then update the related releases.

If discid is changed, then update the related releases.

Non implemented update rules

If an alias is changed, then related artist is not updated.

If a track is changed, added or removed from a release, then related releases are not updated.

If an AdvancedRelationship is changed, none of the end-points is updated.

If a PUID is changed, no entity (track, release, ...) is updated.

Proposed New Update Rules

Affected object Affected table Actions triggering the timestamp update Entities having their timestamp updated
Artist artistUpdate (Edit Artist, Edit Artist Name, Edit Artist Sortname, Change Artist Quality) Artist
Artist alias artistaliasCreation (Add Artist Alias), Update (Edit Artist Alias), Delete (Remove Artist Alias) Related artist
Artist annotation annotationCreation (Add Artist Annotation), Update (Edit Artist Annotation) Artist
Label labelUpdate Label
Label alias labelaliasCreation (Add Label Alias), Update (Edit Label Alias), Delete (Remove Label Alias) Related label
Label annotation annotationCreation (Add Label Annotation), Update (Edit Label Annotation) Label
Release-group release-groupUpdate (change artist, change name, change type) Release-group
Release albumUpdate (Edit Release Name, Edit Release Attributes, Edit Release Language, Move Release) Release
Release album(.release_group)Update (Move release from release-group A to release-group B) Release & release-group
DiscID album_cdtocAdd (Add DiscID), Update (Move DiscID), Remove (Remove DiscID) Related release(s)
Release Event releaseAdd, Edit, Remove Related release & related label
Release annotation annotationCreation (Add Release Annotation), Update (Edit Release Annotation) Release
Release / Track album_joinMerge Releases (when source release has more tracks than target release), Update (Edit Track Number) Release & Track(s)
Track trackUpdate (Edit Track Name, Edit Track Time, Change Track Artist, Set Release Durations) Track
Track annotation annotationCreation (Add Track Annotation), Update (Edit Track Annotation) Track
PUID puidjoin- (not sure we want to do it) Track
ISRC isrc- (not sure we want to do it) Track
AdvancedRelationShips l_*Add Relationship, Edit Relationship, Remove RelationshipBoth end point entities (excepted URL)