[Digikam-devel] Getting Started For GSOC

Gilles Caulier caulier.gilles at gmail.com
Mon Feb 29 08:28:14 GMT 2016


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>:

> 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>
> 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>:
>>
>>>
>>>
>>> 2016-02-24 21:42 GMT+01:00 Varun Gupta <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
>> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/digikam-devel/attachments/20160229/eeba6a37/attachment.html>


More information about the Digikam-devel mailing list