# Amarok will SQLite?!

## Martux

Hallo!

Beim heutigen update auf media-sound/amarok-1.4.6_pre20070608-r1

musste ich feststellen, daß unbedingt sqlite mitinstalliert werden will.

Ich habe das -mysql useflag gesetzt, da ich wegen der Sammlung keine eigene Datenbank draufhabe will und jetzt das!

Das Changelog zu Amarok sagt dazu nur folgendes, aus dem ich auch nicht recht schlau werde:

 *Quote:*   

> 
> 
> 14 Jun 2007; Diego Pettenò <flameeyes@gentoo.org>
> 
> +amarok-1.4.6_pre20070608-r1.ebuild, -amarok-1.4.9999.ebuild,
> ...

 

Kann ich die externe Datenbank denn irgendwie umgehen?

Wenn nein, welche sollte ich nehmen, mysql oder sqlite?

Gruß, Marcus

----------

## xces

Wenn du keinen vollständigen MySQL-Server auf deinem Rechner willst, nimm SQLite. Das hat weniger Overhead und für deine (kleine?) Sammlung keine Nachteile.

----------

## Necoro

Hmm ... und das ChangeLog deutet an, dass es schon immer sqllite benutzt - aber sonst halt eine interne version =)

----------

## Martux

Fällt diese interne Version dann weg, oder ist das doppelt gemoppelt?

----------

## Necoro

 *Martux wrote:*   

> Fällt diese interne Version dann weg, oder ist das doppelt gemoppelt?

 

ich denke ^^ --- (das andere wäre schon arg unsinnig)

----------

## hurra

Ja, die interne fällt dann weg. Genauso ists mit dem Http-Proxy für Last-FM, der kommt jetzt auch von extern.

----------

## musv

Was ist eigentlich der Vorteil von MySQL gegenüber der sqlite?

Hab jetzt mal versucht, nach der Methode:

http://amarok.kde.org/wiki/De:MySQL_HowTo

von sqlite auf MySQL zu migrieren. 

Nach einigen Stunden hab ich's irgendwie hinbekommen. Mit dem angegebenen Script bekomm ich nur Fehlermeldungen a lá:

```

ERROR 1071 (42000) at line 1: Specified key was too long; max key length is 999 bytes

```

Bei den Indexen:

```
CREATE UNIQUE INDEX lyrics_url ON lyrics( url, deviceid );

CREATE UNIQUE INDEX url_stats ON statistics( deviceid, url );

CREATE UNIQUE INDEX url_tag ON tags( url, deviceid );

CREATE UNIQUE INDEX embed_url ON embed( url, deviceid );

CREATE UNIQUE INDEX directories_dir ON directories( dir, deviceid );

CREATE UNIQUE INDEX labels_name ON labels( name, type );

```

usw. wollte das mysql gar nichts akzeptieren. Bzw. weiß ich nicht, wo ich da noch ansetzen sollte.

Nach Start von Amarok liefs dann soweit. Amarok akzeptiert problemlos die MySQL-Datenbank, brauchte allerdings bei z.B. Nie gespielte Songs zum Einlesen ca. 5-10 mal solange wie mit sqlite.

Hat das schon jemand mal hinbekommen ohne Probleme und signifikante Vorteile festgestellt?

----------

## xces

 *musv wrote:*   

> Was ist eigentlich der Vorteil von MySQL gegenüber der sqlite?

 

MySQL ist ein vollausgewachsenes relationales Datenbanksystem. Das beinhaltet eine ausgereifte Rechteverwaltung, mehr Datentypen, bessere Unterstützung des SQL-Standards, Replikation etc. pp. SQLite hingegen ist dateibasiert mit aufgesetztem SQL und eben nur mit den minimalen Features ausgestattet.

Bei der Nutzung von MySQL könnte sich die Datenbank von Amarok z. B. auf einem anderen Rechner befinden oder mehrere Amarok-Instanzen könnten sich eine Datenbank teilen, das ist bei SQLite nicht möglich.

 *musv wrote:*   

> Nach Start von Amarok liefs dann soweit. Amarok akzeptiert problemlos die MySQL-Datenbank, brauchte allerdings bei z.B. Nie gespielte Songs zum Einlesen ca. 5-10 mal solange wie mit sqlite.

 

Das liegt an den fehlenden Indizes.  :Wink: 

 *musv wrote:*   

> Hat das schon jemand mal hinbekommen ohne Probleme und signifikante Vorteile festgestellt?

 

Bei einer Neuinstallation hat die MySQL-Unterstützung von Amarok problemlos funktioniert. Eine Migration von SQLite auf MySQL habe ich allerdings noch nicht durchgemacht.

----------

## musv

Ok, hier dann der Erfahrungsbericht:

Erstmal vorweg: Daß MySQL ein "vollausgewachsenes relationales Datenbanksystem" ist, ist mir bekannt (obwohl mein Datenbankprof da anderer Meinung ist). Ebenso ist auch klar, daß sqlite dateibasiert ist.

Was ich eher wissen wollte, wären die Performancedaten gewesen:

1. Migration von sqlite zu MySQL per sqlite3 .dump

http://amarok.kde.org/wiki/De:MySQL_HowTo

Die zuerst geschilderte Variante (sqlite3 .dump .... | mysql ...) kann man vergessen. Auslesen der Daten aus sqlite funktioniert, Schreiben nach MySQL will gar nicht (siehe Fehlermeldungen im vorherigen Beitrag). In stundenlanger Kleinarbeit kann man die Tabellen mehr oder weniger zuerst die Struktur, dann die Daten rüberschieben. Bei den Indizes (Indexen?) bin ich allerdings komplett gescheitert.

2. Migration von sqlite zu MySQL per Sammlung neu erfassen

MySQL-Datenbank Amarok anlegen mit Nutzer usw., aber Datenbank leer lassen und per Amarok die gesamte Sammlung neu einlesen. Hatte erst Bedenken, daß meine zugeordneten Cover wieder futsch wären und die Zuordnung Verschiedene Interpreten gelöscht wäre, aber welcher Wunder, es funktionierte. Ich weiß nicht, woher sich Amarok die Daten, die eigentlich nur in der sqlite vorhanden sein sollten, geholt hat, aber es wurde alles perfekt beim Erfassen der Sammlung so wiederhergestellt, wie ich es im vorherigen Betrieb mit sqlite eingestellt hatte. Nach dem Einlesen muß/kann man noch die Statistikangaben aus der sqlite-Datenbank in die MySQL-DB migrieren. Dazu nimmt man einfach die sql-Datei vom 1. Versuch, öffnet die mit einem Editor und schmeißt alle Zeilen, die nicht mit "INSERT INTO statistik" beginnen, raus. Dann wie unter obigen Link beschrieben in die MySQL-Datei die Daten übernehmen (kann man auch mit phpmyadmin machen).

3. Performance

Nach rein subjektiver erster Feststellung, sind die Geschwindigkeitsunterschiede beim Einlesen von Playlisten arg gering bzw. fast gar nicht feststellbar. In meiner Playliste befinden sich ca. 12.000 Stücke. Wo es aber spürbare Geschwindigkeitszuwächse gibt, ist beim Laden von Liedtexten, Ändern von ID3-Tags und Hinzufügen von Covern. Mit sqlite hat die Festplatte da immer ganz schön arbeiten müssen, teilweise stockte da auch der Amarok ein bißchen. Mit MySQL sind diese Probleme verschwunden.

Fazit: Wenn man sowieso MySQL installiert und eine größere Anzahl von MP3s in seiner Liste hat, dann lohnt sich MySQL gegenüber sqlite.

Hat jemand schon mal PostgreSQL mit Amarok ausprobiert?

----------

## Fauli

Welche MySQL-Version benutzt ihr für Amarok?

Ich habe Amarok hier mit MySQL 4.1 laufen, denn als ich Amarok vor ca. einem halbem Jahr von SQLite auf MySQL umgestellt habe, funktionierte es mit MySQL 5.0 einfach nicht richtig.

----------

## SvenFischer

Ich kenne jemanden, der hat ca 46.000 MP3's. Mit SQLite ist dann kaum noch sinnvolles taggen oder suchen möglich, hingegen mit MySQL ist es sehr flott.

----------

## sirro

Bei mir läuft es mit mysql 5 eigentlich problemlos.

sqlite ist einfacher zu sichern, da es AFAIK einfach nur Dateien im Amarok-Verzeichnis sind. Gibt es auch eine Möglichkeit stressfrei von mysql nach sqlite zu wechseln?

----------

## musv

 *Fauli wrote:*   

> Welche MySQL-Version benutzt ihr für Amarok?

 

```

[I] dev-db/mysql

     Available versions:  [M]3.23.58-r1 4.0.27-r1 4.1.22-r1 [M](~)4.1.23_alpha20070101-r61 5.0.26-r2 (~)5.0.32 (~)5.0.34 5.0.38 5.0.40 5.0.42 {berkdb big-tables cluster debug embedded extraengine innodb latin1 max-idx-128 minimal perl raid readline selinux ssl static tcpd}

     Installed versions:  5.0.42(08:46:20 08.06.2007)(berkdb -big-tables -cluster -debug -embedded -extraengine -latin1 -max-idx-128 -minimal perl -selinux ssl -static)

     Homepage:            http://www.mysql.com/

     Description:         A fast, multi-threaded, multi-user SQL database server.

[I] virtual/mysql

     Available versions:  4.0 4.1 5.0 [M](~)5.1

     Installed versions:  5.0(02:16:25 04.03.2007)

     Homepage:            http://dev.mysql.com

     Description:         Virtual for MySQL client or database

```

Läuft bisher problemlos.

----------

## hurra

Man sagt, dass sich ab 10k Tracks der Wechsel von SQlite auf MYSQL/PostgreSQL lohnt.

Und ja, SQLite liegt einfach in der collection.db im amarok-kde-Ordner. Ist also sehr einfach zu sichern.

Um Amarok noch flotter zu machen: Möglichst kleine Playlisten. 12000 Tracks in einer Playlist sind nicht gut. Für sowas gibts bei Amarok dynamische Playlisten.

----------

