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