Jump to content

Amarok/Archives/Proposals/Playlist SQL backend

From KDE Community Wiki

Amarok Playlist Re-design

the idea is to redesign amarok to use sql(instead of xml) for playlists because of speed and memory problems:

  • advantages:
    • "filling" of playlists will be a lot faster
    • faster searching in playlists
    • faster sorting of tracks in playlists
    • less memory usage(playlist does not consist of objects and is only partly stored in memory - cursor in sql: see qdatatable documentation in trolltech qt documentation)
    • less data redundancy if playlist items are also in collection database
  • disadvantages:
    • if e.g. a track is removed in the collection db, the track(id) needs also be removed out of the playlist(but same work is done for the album, year, artist and statistic tables)
    • a lot coding work to do(some developers believe that this unnecessary because it's "braindead" if you have a playlist with more than 100 items)
  • how to realize it:
    • write the playlist stuff so that it runs with sql
    • write a new import dialog for playlist(import tracks also into collectiondb: yes(=>table content) or no(=>table content_nodb) - other possible solution in "additional ideas" - or combination of both ideas??
    • switch from qlistview to qdatatable and qdataview
    • cleanup old sql stuff(why rebuilding the db when only one track is removed?)
  • additional ideas:
    • playlist can have pictures for easier recognizing(key: "picture")
    • it's also possible to have a playlist with tracks which are in the collectiondb and tracks which are not in it(no "in_collectiondb" key in the playlist_names table and tracks in both other playlist tables)
  • tables in sql:
    • playlist:
      • name
      • id
      • in_collectiondb
      • picture
      • the different modes (e.g. "partymode")
    • playlist_tracks:
      • playlistid
      • trackid
      • queue
    • playlist_tracks_nodb:
      • url
      • createdate
      • album
      • artist
      • title
      • length
      • bitrate
      • score
      • queue