<sect2 id="using-setup-database">
    <title
>Databasinställningar</title>

    <para>

        <note
><para
>Se avsnittet <link linkend="intro-database"
>Introduktion till databaser i &digikam;</link
> för en introduktion av intern datalagring. </para
></note>

    </para>

    <sect3 id="using-setup-database-sqlite">
        <title
>Sqlite-databasen</title>

        <para
><ulink url="https://sqlite.org"
>SQLite</ulink
> är ett hanteringssystem för relationsdatabaser, som finns i ett C-programmeringsbibliotek. SQLite är inte direkt jämförbart med klient/server SQL-databasgränssnitt som MySQL, Oracle eller PostgreSQL. Istället är det ett inbäddat SQL-databasgränssnitt, dvs. det är inbäddat i ett slutligt program. SQLite läser och skriver direkt i vanliga diskfiler. För enhetslokal lagring med få samtidiga skrivåtkomster och mindre än en Terabyte data, är SQLite nästan alltid en bättre lösning. SQLite är snabbt och tillförlitligt och kräver ingen inställning och inget underhåll. Det gör allting enkelt. SQLite "fungerar bara". </para>

        <para
>Normalt använder &digikam; SQLite som gränssnitt för att lagra viktig metadata och miniatyrbilder. Tre SQLite-filer används för att lagra dem, benämnda: <orderedlist>

                <listitem
><para
>Huvuddatabas: digikam4.db. </para
></listitem>

                <listitem
><para
>Miniatyrbilder: thumbnails-digikam.db. </para
></listitem>

                <listitem
><para
>Ansikten: recognition.db. </para
></listitem>

            </orderedlist>

        </para>

        <para
>För att programmet ska köra snabbt och smidigt rekommenderas att kontrollera och optimera databaserna då och då. Det kan åstadkommas med sqlite3-paket eller sqlite browser (högkvalitativt, lättanvänt visuellt verktyg för att hantera databasobjekt). För Ubuntu och dess derivat, kan det hämtas genom att använda <command
>sudo apt-get install sqlite3</command
> eller <command
>sudo apt-get install sqlitebrowser</command
>. Allt som återstår är att öppna terminalen, gå till katalogen där databaserna är lagrade. </para>

        <note
><para
>Var noga med att använda en plats som lagras på snabb hårdvara (såsom SSD) med tillräckligt ledigt utrymme, särskilt för miniatyrbildsdatabasen. Ett fjärrfilsystem såsom NFS kan inte användas här. Av prestanda och tekniska orsaker kan inte flyttbara medier användas. </para
></note>

        <para
>SQLite-databasfiler kan finnas i "samlingskatalogen", som du har lagt till i &digikam; (om du lägger till en "bildsamling" finns databasfilerna normalt i katalogen <filename class="directory"
>~/Pictures</filename
>). </para>

        <para>
            <inlinemediaobject
><imageobject>
                <imagedata fileref="&path;intro-database-sqlite.png" format="PNG"/></imageobject>
            </inlinemediaobject>
        </para>

    </sect3>

    <sect3 id="using-setup-database-mysql">
        <title
>MySQL-databasen</title>

        <sect4>
            <title
>MySQL mot SQLite</title>

            <para
><ulink url="https://www.mysql.com"
>MySQL</ulink
> är ett hanteringssystem för relationsdatabaser med öppen källkod, skrivet i C och C++. Ursprunglig utveckling av MySQL gjordes av Michael Widenius och David Axmark i början av 1994. Sun Microsystems förvärvade MySQL 2008, som senare förvärvades av Oracle 2010. MySQL fungerar för närvarande på nästan alla systemplattformar (Linux, Microsoft Windows, OS X, SunOS …). </para>

            <para
><ulink url="https://mariadb.org/"
>MariaDB</ulink
>-servern är en gren av MySQL-servern utvecklad av ett samfund. Det skapades av huvudmedlemmar i den ursprungliga MySQL-gruppen, och MariaDB arbetar aktivt med yttre utvecklare för att leverera den mest funktionsrika, stabila och förnuftigt licenserade, öppna SQL-servern i branschen. </para>

            <para
>MariaDB har i själva verket gått förbi MySQL, på grund av några grundläggande skäl: <orderedlist>

                    <listitem
><para
>Utvecklingen av MariaDB är öppnare och livfullare. </para
></listitem>

                    <listitem
><para
>Fler nyskapande funktioner. </para
></listitem>

                    <listitem
><para
>Fler lagringsgränssnitt. </para
></listitem>

                    <listitem
><para
>Bättre prestanda. </para
></listitem>

                    <listitem
><para
>Kompatibel och enkel att flytta. </para
></listitem>

                </orderedlist>

            </para>

            <para
>&digikam; erbjuder också stöd för det populära databasgränssnittet MySQL. Du kanske undrar varför man skulle vilja byta till MySQL när SQLite redan är bra på att hantera data? MySQL erbjuder många fördelar vid lagring av &digikam;s data, i synnerhet när samlingarna innehåller mer än 100 000 objekt. Med sådana stora samlingar ger SQLite en latens som gör programmet långsammare. </para>

            <para
>Genom att använda MySQL som &digikam;s databasgränssnitt blir det möjligt att lagra data både lokalt och på en fjärrserver. Lokalt, för att ersätta den lokala lagringen med SQLite, och senare för att använda en delad dator via nätverket. Genom att använda MySQL som &digikam;s databasgränssnitt blir det möjligt att lagra data på en fjärrserver. På så sätt kan du använda flera installationer av &digikam; (exempelvis på din bärbara dator och din PC) för att komma åt och hantera dina fotosamlingar. Du kan också använda MySQL-verktyg för att säkerhetskopiera och analysera &digikam;s data. </para>

            <para
>Gå till <guimenuitem
>Inställningar</guimenuitem
> <guimenuitem
>Anpassa &digikam;...</guimenuitem
> för att byta från databasen SQLite till MySQL, och välj en databas med kombinationsrutan på sidan <guilabel
>Inställningar</guilabel
>. <orderedlist>

                    <listitem
><para
>Intern MySQL: Gör det möjligt att köra en intern databasserver på systemet. &digikam; använder Unix-uttag för anslutningen. </para
></listitem>

                    <listitem
><para
>MySQL-fjärrserver: Använd den om data finns på en fjärrserver och du är på en annan dator och försöker komma åt samlingen. </para
></listitem>

                </orderedlist>

            </para>

        </sect4>

        <sect4>
            <title
>MySQL intern server</title>

            <para
>När en stor samling, större än 10 000 objekt, används tenderar programmet att bli långsammare. För att undvika fördröjningar och upprätthålla effektiviteten, erbjuder &digikam; alternativet att använda <guilabel
>Intern MySQL-server</guilabel
>. För att vara tydlig, det är inte en verklig server, eller ett öppet nätverk. Istället är det en server som bara kör när programmet kör. </para>

            <para
>Den interna servern skapar en separat databas som kan kommas åt med kommandot (men bara när programmet kör): <command
>mysql --socket=/home/<replaceable
>[användarnamn]</replaceable
>/.local/share/digikam/db_misc/mysql.socket digikam</command
> </para>

            <para
>Den interna servern använder två MySQL binärverktyg: <application
>mysql_install_db</application
> och <application
>mysqld</application
>. Du kan ställa in deras plats i inställningsdialogrutan. &digikam; försöker hitta binärfilerna automatiskt om de är installerade på systemet. </para>

            <para>
                <inlinemediaobject
><imageobject>
                    <imagedata fileref="&path;intro-database-mysqlinternal.png" format="PNG"/></imageobject>
                </inlinemediaobject>
            </para>

        </sect4>

        <sect4>
            <title
>MySQL fjärrserver</title>

            <para
>Naturligtvis krävs en MySQL-server för att använda &digikam; med en MySQL-fjärranslutning. Annars kan också MariaDB installeras, som uppfyller syftet väl (kan enkelt installeras genom att använda den här <ulink url="http://www.liquidweb.com/kb/how-to-install-mariadb-5-5-on-ubuntu-14-04-lts/"
>länken</ulink
>). </para>

            <para
>Följ instruktionerna nedan, om du inte redan har ett särskilt användarkonto och en &digikam; databas som redan är inställd. Kör kommandona i MySQL-servern (efter att ha ersatt lösenordet med det rätta): </para>

            <note
><para
>Du kan välja vilket databasnamn som helst (här är det "digikam"). Kom bara ihåg att fylla i databasnamnen rätt för huvuddatabas, miniatyrbildsdatabas och ansiktsdatabas i dialogrutan som visas nedan. </para
></note>

            <blockquote
><screen
>CREATE USER ''@'%' IDENTIFIED BY 'lösenord';
GRANT ALL ON *.* TO ''@'%' IDENTIFIED BY 'lösenord';
CREATE DATABASE digikam;
GRANT ALL PRIVILEGES ON digikam.* TO ''@'%';
FLUSH PRIVILEGES;
            </screen
></blockquote>

            <note
><para
>Om du har en mycket stor samling, ska MySQL-servern startas med <command
>mysql --max_allowed_packet = 128M</command
>. </para
></note>

            <para
>I &digikam; gå nu till <menuchoice
><guimenu
>Inställningar</guimenu
> <guimenuitem
>Anpassa &digikam;...</guimenuitem
></menuchoice
>, och välj <guilabel
>MySQL-server</guilabel
> med kombinationsrutan på sidan <guilabel
>Inställningar</guilabel
>. </para>

            <para>
                <inlinemediaobject
><imageobject>
                    <imagedata fileref="&path;intro-database-remotemysql.png" format="PNG"/></imageobject>
                </inlinemediaobject>
            </para>

            <para
>Skriv in IP-adressen till MySQL-servern i fältet <guilabel
>Värddatornamn</guilabel
> och ange rätt port i fältet <guilabel
>Port</guilabel
> (standardporten är 3306). </para>

            <para
>Ange namnet på den första databasen för att lagra metadata för foton i fältet <guilabel
>Namn på huvuddatabasen</guilabel
>. </para>

            <para
>Ange namnet på den andra databasen för att lagra wavelet-komprimerade miniatyrbilder i fältet <guilabel
>Namn på databas för miniatyrbilder</guilabel
>. </para>

            <para
>Den tredje databasen är avsedd för att lagra ansiktshistogram i igenkänningssyfte. Använd fältet <guilabel
>Namn på databas för ansikten</guilabel
> för den. </para>

            <para
>För att säkert ansluta till fjärrservern, ange MySQL-identifikation genom att använda fälten <guilabel
>Användarnamn</guilabel
> och <guilabel
>Lösenord</guilabel
>. </para>

            <para
>Klicka på knappen <guibutton
>Kontrollera anslutning</guibutton
> för att kontrollera att databasanslutningen fungerar som den ska. Om allt fungerar som avsett, gå till sidan <guilabel
>Samlingar</guilabel
> och lägg till katalogerna som innehåller foton. Klicka på <guibutton
>Ok</guibutton
> och vänta på att &digikam; fyller i databaserna med data från foton. Det kan ta en stund om du har många objekt att registrera i databasen. </para>

            <para
>Det finns några tips och rekommendationer för att erhålla bäst resultat med en MySQL-fjärrdatabasserver. </para>

            <para
>Med långsamma nätverk låser sig &digikam; ofta, särskilt när album innehåller många objekt (
> 1000). Lösningen förlitar sig på nätverksprestanda. Problemet har exempelvis gått att reproducera med WIFI-anslutningar. Att byta till Ethernet ska lösa problemet. </para>

            <para
>Om du dessutom har en mycket stor samling, ska MySQL-servern startas med <command
>mysql --max_allowed_packet = 128M</command
> (om du är välbekant med att använda MySQL, kan du också ändra dina inställningar i filerna .my.ini eller ~/.my.cnf). </para>

        </sect4>

    </sect3>

    <sect3 id="using-setup-database-migration">
        <title
>Databaskonvertering</title>

        <para
>Fotohanteringsprogrammet startas med det exklusiva verktyget "Databasöverföring", som låter användare flytta sin data. Antag att du använder SQLite och vill flytta all data till MySQL-databasen. Då hjälper databasöverföring till att göra det. Det kan hjälpa dig att flytta data från SQLite till MySQL eller tvärtom. </para>

        <para
>För att flytta till en annan databas, gå till <menuchoice
><guimenu
> Inställningar</guimenu
> <guimenuitem
>Databaskonvertering</guimenuitem
></menuchoice
>. En dialogruta visas: </para>

        <para>
            <inlinemediaobject
><imageobject>
                <imagedata fileref="&path;intro-database-migration.png" format="PNG"/></imageobject>
            </inlinemediaobject>
        </para>

        <para
>Välj nu lämpliga databastyper som du vill konvertera till. Klicka slutligen på knappen <guibutton
>Överför</guibutton
> för att konvertera databasen från SQLite till MySQL (eller tvärtom). </para>

    </sect3>

    <sect3 id="using-setup-database-backup">
        <title
>Rekommendation för säkerhetskopiering av databaser</title>

        <para
>Av säkerhetsskäl, planera en säkerhetskopiering av databasen via nätverket med användning av crontab för att hjälpa vid felfunktion hos enheten. En NAS eller extern disk kan också användas till detta. </para>

        <para
>Varje databas kan namnges med olika namn, inte bara "digikam". Det gör det möjligt för användaren att bara säkerhetskopiera vad som behövs. Att exempelvis namnge "huvuddatabasen" som digikamCore gör det möjligt att isolera bara den tabellen (den viktigaste filen). Miniatyrbilder och igenkänningsdatabasen kan alltid skapas om från början. </para>

        <para
>Kapitlet om <link linkend="tool-maintenance"
>Underhållsverktyget i &digikam;</link
> förklarar hur databasinnehållet underhålls över tiden och hur samlingarna kan synkroniseras med databasinformation (och vice versa). </para>

    </sect3>

    <sect3 id="using-setup-database-statistics">
        <title
>Databasstatistik</title>

        <para
>&digikam; erbjuder ett unikt verktyg för att upprätthålla samlingsstatistik för samlingen. Det omfattar antal bilder, videor (inklusive individuellt antal per bildformat), etiketter, etc. Dessutom omfattar det databasgränssnitt (SQLite eller MySQL) och databassökväg (där samlingen är placerad). </para>

        <para
>Statistiken kan granskas genom att gå till <menuchoice
><guimenu
>Hjälp</guimenu
> <guimenuitem
>Databasstatistik</guimenuitem
></menuchoice
>. En dialogruta som den här visas: </para>

        <para>
            <inlinemediaobject
><imageobject>
                <imagedata fileref="&path;intro-database-statistics.png" format="PNG"/></imageobject>
            </inlinemediaobject>
        </para>

    </sect3>

</sect2>

<!--
Local Variables:
mode: sgml
sgml-omittag: nil
sgml-shorttag: t
End:
-->
