[Digikam-devel] Getting Started For GSOC

Felix Leif Keppmann felix.leif at keppmann.de
Mon Feb 29 09:49:19 GMT 2016


Hello Varun,


once you integrated changes/improvements, I would be happy to help
testing. Thus, if I don't get active by myself, just give me a hint.

Usually, I use a dedicated MySQL server also for hosting the three
Digikam databases. But currently, MySQL support in Digikam master is -
subjectively perceived from the perspective of a user - 10 to 15 times
slower than SQLite and some things are broken. Thats why I had to switch
to SQLite.

For testing, I could rescan a large collection, including several face
tags, and populate those databases.


Regards
Felix / fekepp




On 29.02.2016 09:28, Gilles Caulier wrote:
> In core/libs/database, the README file give some description for each
> sub-directories :
> 
> https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/entry/libs/database/README
> 
> As i said previously, DK use 3 Databases (core, thumbs, faces), with 3
> differents schemas. For these 3 databases, we have 3 backends :
> 
> 1/ sqlite, 
> 2/ local mysql server
> 3/ remote Mysql
> 
> For the 2/, we have a dedicated implementation outside core :
> 
> https://projects.kde.org/projects/extragear/graphics/digikam/repository/revisions/master/show/databaseserver
> 
> For this project the most important parts will be
> /core/libs/database/engine which will includes all parent classes for 3
> DK databases (core, thumbs, faces). All of these are located repectively
> in core/libs/database/coredb, core/libs/database/thumbsdb, and
> core/libs/facesengine/facedb. This last one is outside
> core/libs/database for compilation reasons due to OpenCV dependency.
> 
> For each databases (core, thumbs, faces), the /core/libs/database/engine
> provide classes to :
> 
> - access through a singleton : facesdbaccess.h for ex.
> - a wrapper to Database type (sqlite, local mysql, remote mysql) :
> facesbackend.h for ex. This one will init the database in memory
> accordingly with settings. This one load the right schema. Most of
> implementation are give by parent classes in core/libs/database/engine
> - a schema updater to host porting rules from old to new schema versions
> : facesdbschemaupdater.h
> - a specific implementation dedicated to host relevant tasks : facesdb.h
> for ex
> - a specific implementation dedicated to host grouping DB tasks :
> facesdboperationgroup.h for ex
> 
> The ex given to FacesDB is the most simple to start because the
> implementation is not too complex. Look alos the ThumbDB which is simple
> too. The most complex DB implementation is CoreDB, where you will found
> same king of classes plus more one to delegate specific tasks. The
> CoreDB is the most huge database (schema), with a lots of triggers
> between tables. 
> 
> In core/libs/database/, outside core, thumbs DB, you have these sub
> directories :
> 
> - collection which host classes to handle the digiKam collections (root
> albums, local, remote, removable). You will need to take a look later
> certainly, this depend of reports from bugzilla to fix.
> - dbjobs which is a multi-threaded/multi-core low level interface
> dedicated to query the database. No need to touch it for the moment,
> this work well.
> - haar which is dedicated to host image similarities fingerprints. This
> is out of your project.
> - imagehistory which is dedicated to host image tree-histories
> accordingly with corrections applied to image by editor and BQM. This is
> out of your project.
> - imgqsort which is dedicated to host image algorithm to sort images
> accordingly with noise,exposure, sharp level, etc. This is out of your
> project.
> - items which is dedicated to host classes for image properties. You
> will need to take a look later certainly, this depend of reports from
> bugzilla to fix.
> - servers which are low level classes for mysql local server. Later we
> will certainly write new one for PostGreSql. This is out of your project.
> - tags which is dedicated to host classes for virtual album as tags. You
> will need to take a look later certainly, this depend of reports from
> bugzilla to fix.
> - utils where you will found some miscs classes as DB settings widgets
> and dialogs.
> 
> This respond partially to your question ?
> 
> BEst
> 
> Gilles Caulier
> 
> 
> 2016-02-29 2:10 GMT+01:00 Varun Gupta <varungupta1803 at gmail.com
> <mailto:varungupta1803 at gmail.com>>:
> 
>     I have finished with reading the code in the folder collection and
>     coredb from link [1]. I got familiar with the code but I guess there
>     is lots of code to read , so it would be helpful if you could
>     redirect me to the parts which are immediately essential so I get
>     the understanding of the important parts and then go on with the
>     rest of the code.
> 
>     Regards,
>     varun
> 
>     On Sun, Feb 28, 2016 at 4:49 PM, Gilles Caulier
>     <caulier.gilles at gmail.com <mailto:caulier.gilles at gmail.com>> wrote:
> 
>         Any feddback here. Did you checkout code and look in DB
>         interface implementation ? Any questions ?
> 
>         Best
> 
>         Gilles Caulier
> 
>         2016-02-24 22:07 GMT+01:00 Gilles Caulier
>         <caulier.gilles at gmail.com <mailto:caulier.gilles at gmail.com>>:
> 
> 
> 
>             2016-02-24 21:42 GMT+01:00 Varun Gupta
>             <varungupta1803 at gmail.com <mailto:varungupta1803 at gmail.com>>:
> 
>                 I have started looking at the code from the given link
>                 [1] . I still have doubts what do you mean by the last
>                 stage , in the doc do i have to list all the main
>                 problems that need to be fixed for MYSQL types?
> 
> 
>             Exactly. Accordingly with Agile method, bugzilla is the
>             reference to evolute and fix open source application. I
>             already review and sort all entries in bugzilla (including
>             duplicates) about MySql support. It will be not to hard to
>             list the main dysfunctions about Mysql support depending of
>             users contexts reported. Of course, there is an order to fix
>             the problem due to interdépendances between tasks to patch
>             the current implementation of database interface.
> 
>             Gilles Caulier
> 
> 
> 
>         _______________________________________________
>         Digikam-devel mailing list
>         Digikam-devel at kde.org <mailto:Digikam-devel at kde.org>
>         https://mail.kde.org/mailman/listinfo/digikam-devel
> 
> 
> 
>     _______________________________________________
>     Digikam-devel mailing list
>     Digikam-devel at kde.org <mailto:Digikam-devel at kde.org>
>     https://mail.kde.org/mailman/listinfo/digikam-devel
> 
> 
> 
> 
> _______________________________________________
> Digikam-devel mailing list
> Digikam-devel at kde.org
> https://mail.kde.org/mailman/listinfo/digikam-devel
> 



More information about the Digikam-devel mailing list